在列表环境中,使用 aboveskip、belowskip 避免在章节标题下方插入空格

在列表环境中,使用 aboveskip、belowskip 避免在章节标题下方插入空格

我使用该listings包将源代码放置在我的文档中,并注意到文本和lstlisting环境之间的空间太小。所以我更改了\aboveskip\belowskip属性。

问题是,除了我提到的空格之外,它还影响了节标题和lstlisting环境之间的空格,这既无用又烦人。而且它不会产生美观的文档外观。

另外,我不知道环境和分页符或新页面开头之间的空间中是否存在相同的行为(是吗?)或者 LaTeX 会自行擦除该空间(如果它实际上也插入那里)。

我的问题是如何防止插入的空格\aboveskip以及\belowskip影响节标题、分页符和页面开头之间的空格?

这是没有的\aboveskip

在此处输入图片描述

这是\aboveskip=1.5cm(数字过多,以显示章节标题下的“不必要”的空间):

在此处输入图片描述

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

答案1

这个要求看起来有点奇怪,但无论如何,您可以根据要测试的内容将值扩展到任意维度,在这里我使用它\if@nobreaktrue作为“跟随标题”的近似值,它是乳胶用来避免标题后的分页符的内部开关。

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

相关内容