
Я использовал 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
в качестве приближения «следовать заголовку» — это внутренний переключатель, который Latex использует для избежания разрывов страниц после заголовка.
\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}