
Estaba usando el listings
paquete para colocar el código fuente en mi documento y noté que el espacio entre el texto y el lstlisting
entorno era demasiado pequeño. Entonces cambié las propiedades \aboveskip
y \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 lstlisting
entorno, 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 \aboveskip
afecte \belowskip
el espacio entre los encabezados de sección, los saltos de página y el comienzo de las páginas?
Esto es sin \aboveskip
:
Esto es con \aboveskip=1.5cm
(un número excesivo para mostrar el espacio "innecesario" debajo del título de la sección):
\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@nobreaktrue
como 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}