Kontinuierlicher Rand mit mathematischem Markup innerhalb des Code- / Algorithmus-Markups

Sep 14 2020

Ich stehe derzeit vor einem ästhetischen Problem. Die Grenzen meines Code- / Algorithmusabschnitts werden durch In-Code-Mathe-Markup unterteilt:

Die Tabelle wurde mit dem folgenden Code erstellt:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath, amsfonts}
\usepackage{listings}

\title{Title}
\author{Author}
\date{Date}

\begin{document}

\maketitle

\lstset{
numbers=left, 
numberstyle=\small, 
numbersep=8pt, 
frame = single, 
language=Python, 
framexleftmargin=15pt
}

\begin{lstlisting}[escapeinside={(*}{*)}]
if (*$\exists s \in S \subset \mathbb{R}^2 \times \{\text{label } | \text{ label } \in \{0,1\} \}$*) with label 1:
    (*$r = \underset{\text{label(s) = 1} }{\max ||s||}$*)
else:
    (*$r = \underset{\text{label(s) = 0} }{\min ||s||} - 10^{-1000} $*)
return B[0, r]
\end{lstlisting}

\end{document}

Weiß jemand, wie ich die vertikalen Ränder trotz des mathematischen Markups durchgehend machen kann? Oder zumindest die vertikalen Ränder entfernen?

Ich arbeite übrigens in Overleaf.

Dankeschön!

Antworten

2 AlanXiang Sep 14 2020 at 21:05

Sie können verwenden tcblisting, um den Rahmen für Sie zu generieren.

Um vertikale Ränder zu entfernen, geben Sie einfach an frame=none.

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{tcolorbox}
\usepackage{amsmath, amssymb}

\tcbuselibrary{listings, breakable, skins}

\title{Title}
\author{Author}
\date{Date}

\newtcblisting{mylisting}{
  enhanced,
  breakable,
  listing only,
  sharp corners,
  arc=0mm,
  colback=white,
  boxsep=1mm,
  top=0mm,
  bottom=0mm,
  left=6mm,
  right=1mm,
  listing options={
    numbers=left, 
    numberstyle=\small, 
    numbersep=8pt, 
    language=Python, 
    escapeinside={(*}{*)}
  }
}

\begin{document}

\maketitle


\begin{mylisting}
if (*$\exists s \in S \subset \mathbb{R}^2 \times \{\text{label } | \text{ label } \in \{0,1\} \}$*) with label 1:
    (*$r = \underset{\text{label(s) = 1} }{\max ||s||}$*)
else:
    (*$r = \underset{\text{label(s) = 0} }{\min ||s||} - 10^{-1000} $*)
return B[0, r]
\end{mylisting}

\end{document}
1 MadyYuvi Sep 14 2020 at 21:06

Es war ein Fehler listings.sty, der in der Dokumentation unter der Überschrift erklärt wurde8.2

und das modifizierte MWEist:

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{moreverb}
\usepackage{amsmath,amsfonts,listings}
\usepackage{mdframed}
\begin{document}

\lstset{
numbers=left, 
numberstyle=\small, 
numbersep=2pt, 
%frame = single, 
language=Python, 
framexleftmargin=15pt
}

\begin{verbatimwrite}{temp.c}
if (*$\exists s \in S \subset \mathbb{R}^2 \times \{\text{label } | \text{ label } \in \{0,1\} \}$*) with label 1:
    (*$r = \underset{\text{label(s) = 1} }{\max ||s||}$*)
else:
    (*$r = \underset{\text{label(s) = 0} }{\min ||s||} - 10^{-1000} $*)
return B[0, r]
\end{verbatimwrite}

\begin{mdframed}
\lstinputlisting[escapeinside={(*}{*)}]{./temp.c}
\end{mdframed}


\end{document}

Ausgabe