Vermeiden Sie das Einfügen von Leerzeichen unter dem Abschnittstitel mit „überspringen“ und „unterspringen“ in der Auflistungsumgebung.

Vermeiden Sie das Einfügen von Leerzeichen unter dem Abschnittstitel mit „überspringen“ und „unterspringen“ in der Auflistungsumgebung.

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 lstlistingUmgebung zu klein war. Also habe ich die \aboveskipund \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 lstlistingUmgebung 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 \aboveskipund \belowskipden Abstand zwischen Abschnittsüberschriften, Seitenumbrüchen und Seitenanfängen beeinflussen?

Dies ist ohne \aboveskip:

Bildbeschreibung hier eingeben

Dies ist mit \aboveskip=1.5cm(einer übermäßigen Zahl, um den „unnötigen“ Platz unter dem Abschnittstitel anzuzeigen):

Bildbeschreibung hier eingeben

\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@nobreaktrueals 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}

verwandte Informationen