Evite la inserción de espacio debajo del título de la sección con saltar arriba, saltar abajo en el entorno de listados

Evite la inserción de espacio debajo del título de la sección con saltar arriba, saltar abajo en el entorno de listados

Estaba usando el listingspaquete para colocar el código fuente en mi documento y noté que el espacio entre el texto y el lstlistingentorno era demasiado pequeño. Entonces cambié las propiedades \aboveskipy \belowskip.

El problema con esto fue que junto con el espacio que mencioné, también se vio afectado el espacio entre el encabezado de una sección y un lstlistingentorno, lo cual es inútil y molesto. Además, no produce una apariencia agradable del documento.

Además, no sé si existe el mismo comportamiento en el espacio entre el entorno y los saltos de página o los inicios de una nueva página (¿verdad?) o LaTeX borra ese espacio por sí solo (si en realidad está insertado allí también).

Mi pregunta es ¿cómo puedo evitar que el espacio insertado \aboveskipafecte \belowskipel espacio entre los encabezados de sección, los saltos de página y el comienzo de las páginas?

Esto es sin \aboveskip:

ingrese la descripción de la imagen aquí

Esto es con \aboveskip=1.5cm(un número excesivo para mostrar el espacio "innecesario" debajo del título de la sección):

ingrese la descripción de la imagen aquí

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

Respuesta1

El requisito parece un poco extraño, pero de todos modos puedes hacer que el valor se expanda a cualquier dimensión según lo que quieras probar. Aquí lo uso \if@nobreaktruecomo una aproximación para "seguir encabezado", es un interruptor interno que el látex usa para evitar saltos de página después de un encabezado.

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

información relacionada