我定义了一个用户环境,但由于某种原因,第 3 节之前的空格丢失了。请参见以下示例。为什么会发生这种情况?我如何才能使第 2 节和第 3 节之前的空格相同?
\documentclass[a4paper]{scrreprt}
\usepackage{listings}
\lstset{%
basicstyle=\ttfamily,
breaklines=true,
columns=fullflexible,
escapeinside = ||,
breakindent=0pt}
\lstnewenvironment{Code}{}{}
\begin{document}
\section{Section 1}
test the space
\section{Section 2}
\begin{Code}
abc
\end{Code}
test the space
\section{Section 3}
\end{document}
答案1
如果在节标题和代码之间有一些段落内容,问题就会消失。一种解决方案是\leavevmode
在代码前添加。这可以通过将命令添加到新列表环境的开始代码中来自动完成:
\lstnewenvironment{Code}{\leavevmode}{}
\documentclass[a4paper]{scrreprt}
\usepackage{listings}
\lstset{%
basicstyle=\ttfamily,
breaklines=true,
columns=fullflexible,
escapeinside = ||,
breakindent=0pt}
\lstnewenvironment{Code}{\leavevmode}{}
\begin{document}
\section{Section 1}
test the space
\section{Section 2}
\begin{Code}
abc
\end{Code}
test the space
\section{Section 3}
test
\end{document}