在 MWE 中,\section(TWO)
标题前的垂直空间比 前更大\section(THREE)
。空间大小似乎取决于 前是否有一段文字longtable
。
有没有办法解决这个问题,而不用在vspace
必要的地方手动添加一些?我希望两个空格都与之前的一个匹配\section(TWO)
。
\documentclass{article}
\usepackage{longtable}
\LTpre=\smallskipamount
\LTpost=\smallskipamount
\LTleft=0pt % irrelevant, except it makes it easier to see the different spacing
\begin{document}
\section{ONE}
some text
\begin{longtable}{l}
tabular data with some text before it
\end{longtable}
\section{TWO}
\begin{longtable}{l}
tabular data with nothing before it
\end{longtable}
\section{THREE}
\end{document}
说明性 MWE [由 cfr 添加]:
\documentclass{article}
\usepackage{longtable}
\begin{document}
\section{ONE}
some text
\begin{longtable}{l}
tabular data with some text before it
\end{longtable}
\hrule
\section{TWO}
\begin{longtable}{l}
tabular data with nothing before it
\end{longtable}
\hrule
\section{THREE}
\end{document}
答案1
由于外层实际上没有排版任何段落,因此当\section{THREE}
找到时,条件\if@nobreak
仍然设置为真。
条件由分段命令设置为 true,然后在下一段开始时设置为 false,以确保标题和文本之间不会出现分页符。此外,如果在条件设置为 false 时发现新的章节标题(通常级别较低),则两个连续标题之间的间距会缩小:这就是这里发生的情况,尽管中间有表格。
您可以在结束时手动设置longtable
:
\documentclass{article}
\usepackage{longtable}
\LTpre=\smallskipamount
\LTpost=\smallskipamount
\LTleft=0pt % irrelevant, except it makes it easier to see the different spacing
\begin{document}
\section{ONE}
some text
\begin{longtable}{l}
tabular data with some text before it
\end{longtable}
\section{TWO}
\begin{longtable}{l}
tabular data with nothing before it
\end{longtable}\csname @nobreakfalse\endcsname
\section{THREE}
\end{document}
我测试过并且longtable
通常会跨页中断。