
Eu estava usando o listings
pacote para colocar o código fonte no meu documento e percebi que o espaço entre o texto e o lstlisting
ambiente era muito pequeno. Então mudei as propriedades \aboveskip
e \belowskip
.
O problema é que junto com o espaço que mencionei também foi afetado o espaço entre o cabeçalho de uma seção e um lstlisting
ambiente que é inútil e irritante. Além disso, não produz uma boa aparência do documento.
Também não sei se existe o mesmo comportamento no espaço entre o ambiente e as quebras de página ou o início de uma nova página (será?) ou o LaTeX apaga esse espaço sozinho (se realmente estiver inserido lá também).
Minha pergunta é como posso evitar o espaço inserido \aboveskip
e \belowskip
afetar o espaço entre os cabeçalhos das seções, quebras de página e início das páginas?
Isso sem o \aboveskip
:
Isto é com \aboveskip=1.5cm
(um número excessivo para mostrar o espaço "desnecessário" sob o título da seção):
\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}
Responder1
O requisito parece um pouco estranho, mas de qualquer forma você pode fazer o vale se expandir para qualquer dimensão com base no que você deseja testar, aqui eu uso \if@nobreaktrue
como uma aproximação para "seguir título" é um switch interno que o látex usa para evitar quebras de página após um título.
\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}