特殊情况,在我的自定义类中使用 longtable。当我使用\longtable
而\end{longtable}
不是 时\begin{longtable}
,当位于列表环境中\end{longtable}
时,我会得到糟糕的边距。longtable
测试文档:
\documentclass{article}
\usepackage{longtable}
\begin{document}
text
\begin{itemize}
\item first text
\begin{longtable}{c}%
table col1
\end{longtable}%
\item second text
\longtable{c}
table col2
\endlongtable
\item third text
\end{itemize}
text
\end{document}
看到“第三段文字”超出边距了吗?
我不记得为什么我在编写该类时使用了该语法,可能是为了没有额外的垂直空间。
我把问题追溯到 199 行longtable.sty
——如果\endgraf
将命令替换为\par
,边距又恢复正常。有趣的是,\meaning{endgraf}
显示其含义是\par
。
\endgraf
用替换 是否合理\par
?如果我必须将代码更改为使用\begin
和,是否需要调整垂直间距?我阅读了 source2e 中有关和命令\end
的代码,但它看起来相当深奥。\begin
\end
答案1
可以longtable
使用长度变量\LTleft
和来控制环境的间距\LTright
。
由于使用了第一个项目级别,因此也许可以考虑设置\setlength{\LTleft}{\dimexpr\leftmargini+\relltshift}
,其中\relltshift
某些用户指定的偏移相对于左边距缩进。
\documentclass{article}
\usepackage{longtable}
\newlength{\relltshift}
\setlength{\relltshift}{\labelwidth}
\setlength{\LTleft}{\dimexpr\leftmargini+\relltshift}
\begin{document}
text
\begin{itemize}
\item first text
\begin{longtable}{c}%
table col1
\end{longtable}%
\item second text
\begin{longtable}{c}
table col2
\end{longtable}
\item third text
\end{itemize}
text
\end{document}