Evite a inserção de espaço abaixo do título da seção com Aboveskip, Belowskip no ambiente de listagens

Evite a inserção de espaço abaixo do título da seção com Aboveskip, Belowskip no ambiente de listagens

Eu estava usando o listingspacote para colocar o código fonte no meu documento e percebi que o espaço entre o texto e o lstlistingambiente era muito pequeno. Então mudei as propriedades \aboveskipe \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 lstlistingambiente 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 \aboveskipe \belowskipafetar o espaço entre os cabeçalhos das seções, quebras de página e início das páginas?

Isso sem o \aboveskip:

insira a descrição da imagem aqui

Isto é com \aboveskip=1.5cm(um número excessivo para mostrar o espaço "desnecessário" sob o título da seção):

insira a descrição da imagem aqui

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

informação relacionada