
Ich habe eine Auflistung und möchte hline
vor und nach der Auflistung ein Element hinzufügen. Die Verwendung des frames
Stilparameters funktioniert aus zwei Gründen nicht wie vorgesehen: 1. Ich möchte einen linken Balken als Trennzeichen von der Nummerierung und dem Quellcode beibehalten; und 2. Zwischen der oberen/unteren Rahmenlinie und der linken Linie ist kein Leerzeichen.
Der Beispielcode ist
\documentclass{article}
\usepackage{listings}
\usepackage{lipsum}
\lstdefinestyle{CEE}{language=C, frame=l, numbers=left, numbersep=1em, xleftmargin=2em}
\begin{document}
\lipsum[1]
\begin{lstlisting}[style=CEE, caption={Hello world}]
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("Hello world\n");
return 0;
}
\end{lstlisting}
\lipsum[2]
\end{document}
Das gibt uns:
Ich wünsche mir aber eins, \hline
das den gesamten Rahmen ausfüllt \textwidth
und nicht nur die Breite des Rahmens, wie in (GIMP Edited)
Beachten Sie, dass Abstand und Linienbreite nicht korrekt sind, da es sich nur um eine Gimp-Bearbeitung handelt. Die Idee ist, dass der Abstand in der table
Umgebung gleich ist. Wie:
Antwort1
Ich habe das Paket verwendet, tcolorbox
um die Zeilen zu erhalten. Sie können die Optionen der Umgebung tmpbox
Ihren Bedürfnissen entsprechend ändern. Es gibt jedoch ein Problem; ich glaube nicht, dass es möglich ist, eine neue Umgebung zu definieren, die die tmpbox
und die zusammenfügt lstlisting
. Sie müssen also tmpbox
jedes Mal explizit aufrufen.
\documentclass[11pt, a4paper]{article}
\usepackage{geometry}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{tcolorbox}
\tcbuselibrary{skins,breakable}
\newenvironment{tmpbox}{%
\tcolorbox[%
empty,
parbox=false,
noparskip,
enhanced,
breakable,
frame hidden,
boxrule=0pt,
colback=white,
left=-.5ex, % right=-4pt,
before skip=.1ex plus 2pt,
after skip=1ex plus 2pt,
overlay unbroken and last={%
\draw ($(frame.north west)+(0, -6ex)$)
-- +(1\textwidth, 0);
\draw ($(frame.south west)+(0, 2ex)$)
-- +(1\textwidth, 0);
}]
}{\endtcolorbox}
\usepackage{listings}
\lstdefinestyle{CEE}{%
frame=l, language=C, numbers=left, numbersep=1em, xleftmargin=2em
}
\usepackage{lipsum}
\begin{document}
\begin{center}\large\bfseries
Adding horizontal lines about listings
\end{center}
% See \verb|https://en.wikibooks.org/wiki/LaTeX/Source_Code_Listings|.
\lipsum[1]
\begin{tmpbox}
\begin{lstlisting}[style=CEE, caption={Hello world with hlines}]
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("Hello world\n");
return 0;
}
\end{lstlisting}
\end{tmpbox}
\lipsum[3]
\begin{lstlisting}[style=CEE, caption={Hello world}]
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("Hello world\n");
return 0;
}
\end{lstlisting}
\lipsum[4]
\end{document}