Ich habe das Paket verwendet listings
, um Quellcode in mein Dokument einzufügen, und mir ist aufgefallen, dass der Abstand zwischen dem Text und der lstlisting
Umgebung zu klein war. Also habe ich die \aboveskip
und \belowskip
-Eigenschaften geändert.
Das Problem dabei war, dass neben dem von mir erwähnten Platz auch der Platz zwischen einer Abschnittsüberschrift und einer lstlisting
Umgebung betroffen war, was nutzlos und störend ist. Außerdem ergibt dies kein schönes Erscheinungsbild für das Dokument.
Außerdem weiß ich nicht, ob im Bereich zwischen der Umgebung und den Seitenumbrüchen oder am Anfang einer neuen Seite dasselbe Verhalten auftritt (ist das so?) oder ob LaTeX diesen Bereich selbst löscht (sofern er dort tatsächlich auch eingefügt wird).
Meine Frage ist nun: Wie kann ich das Einfügen von Leerzeichen verhindern \aboveskip
und \belowskip
den Abstand zwischen Abschnittsüberschriften, Seitenumbrüchen und Seitenanfängen beeinflussen?
Dies ist ohne \aboveskip
:
Dies ist mit \aboveskip=1.5cm
(einer übermäßigen Zahl, um den „unnötigen“ Platz unter dem Abschnittstitel anzuzeigen):
\documentclass[12pt]{article}
\usepackage{parskip}
\setlength{\parindent}{0cm}
\usepackage{fontspec}
\usepackage[english,greek]{babel}
\usepackage[fleqn]{amsmath}
\usepackage{unicode-math}
\usepackage{listings}
\setmainfont
[
Ligatures=TeX,
Extension=.otf,
UprightFont=*,
BoldFont=*Bold,
ItalicFont=*It,
BoldItalicFont=*BoldIt,
Mapping=tex-text
]{GFSArtemisia}
\setsansfont[Mapping=tex-text]{GFSArtemisia.otf}
\setmathfont{latinmodern-math.otf}
\setmathfont[range=\varnothing]{Asana-Math.otf}
\setmathfont[range=\int]{latinmodern-math.otf}
\begin{document}
\lstset
{
aboveskip=1.5cm,
frame=tb,
rulecolor=\color{black},
basicstyle=\ttfamily\color{BrickRed},
columns=flexible,
morecomment=[s][\color{NavyBlue}]{/*}{*/}
}
\section*{Section Title}
\begin{lstlisting}
Source code here.
\end{lstlisting}
Text here!
\begin{lstlisting}
More source code here.
\end{lstlisting}
More text here!
\end{document}
Antwort1
Die Anforderung scheint ein wenig seltsam, aber Sie können das Wert jedenfalls auf jede beliebige Dimension erweitern, je nachdem, was Sie testen möchten. Hier verwende ich \if@nobreaktrue
als Annäherung für „Überschrift folgen“, einen internen Schalter, den Latex verwendet, um Seitenumbrüche nach einer Überschrift zu vermeiden.
\documentclass[12pt]{article}
\usepackage{parskip}
\setlength{\parindent}{0cm}
\usepackage{fontspec}
\usepackage[english,greek]{babel}
\usepackage[fleqn]{amsmath}
\usepackage{unicode-math}
\usepackage{listings}
\setmainfont
[
Ligatures=TeX,
Extension=.otf,
UprightFont=*,
BoldFont=*Bold,
ItalicFont=*It,
BoldItalicFont=*BoldIt,
Mapping=tex-text
]{GFSArtemisia}
\setsansfont[Mapping=tex-text]{GFSArtemisia.otf}
\setmathfont{latinmodern-math.otf}
\setmathfont[range=\varnothing]{Asana-Math.otf}
\setmathfont[range=\int]{latinmodern-math.otf}
\begin{document}
\makeatletter
\lstset
{
aboveskip={\if@nobreak 0pt\else 1.5cm\fi},
frame=tb,
rulecolor=\color{black},
basicstyle=\ttfamily\color{BrickRed},
columns=flexible,
morecomment=[s][\color{NavyBlue}]{/*}{*/}
}
\makeatother
\section*{Section Title}
\begin{lstlisting}
Source code here.
\end{lstlisting}
Text here!
\begin{lstlisting}
More source code here.
\end{lstlisting}
More text here!
\end{document}