如何摆脱在 longtable 启动之前绘制的额外 \hline?

如何摆脱在 longtable 启动之前绘制的额外 \hline?

每当我有长桌

\begin{longtable}...\hline
 ....
\\\hline
\end{longtable}    

如果刚好从页面顶部开始,我会看到\hline在上一页末尾绘制了 。但是,如果 刚好longtable从页面中间开始,则没有多余的\hline。我很难告诉 Latex 请停止这样做,因为这非常烦人。

\hline这是在新页面开始表格之前添加的MWE 显示

\documentclass[11pt]{article}%ext
\usepackage{blindtext}
\usepackage{longtable}
\begin{document}
\blindtext
\blindtext

\begin{longtable}[t]{|p{0.5\textwidth} | p{0.5\textwidth}|}\hline
\blindtext
&
\blindtext
\\\hline
\end{longtable}
\end{document}

Mathematica 图形

如果表格从页面中间开始(取决于它之前的文本量),则没有多余的行:

\documentclass[11pt]{article}%ext
\usepackage{blindtext}
\usepackage{longtable}
\begin{document}
\blindtext
\begin{longtable}[t]{|p{0.5\textwidth} | p{0.5\textwidth}|}\hline
\blindtext
&
\blindtext
\\\hline
\end{longtable}
\end{document}

Mathematica 图形

问题:对于所有不同情况,如何正确书写longtable以避免出现多余的行?

答案1

这只是一种‘强力’解决方案:\endhead在第一个之后使用。这‘保证’除了第一个之外,表格页面上\hline始终有一个。\hline

第一个是‘空的’,因为longtable无法分段落\blindtext所以它被转移到下一页。

\documentclass[11pt]{article}%ext
\usepackage{blindtext}
\usepackage{longtable}
\begin{document}
\blindtext
\blindtext

\begin{longtable}[t]{|p{0.5\textwidth} | p{0.5\textwidth}|}
\hline
\endhead
\blindtext
&
\blindtext
\\\hline
\end{longtable}
\end{document}

答案2

我认为我倾向于使用 Christian 的答案 (+1),但只是为了提供其他想法,您可以使用该needspace包。例如,

\documentclass[11pt]{article}%ext
\usepackage{blindtext}
\usepackage{longtable,needspace,etoolbox}
\AtBeginEnvironment{longtable}{\needspace{5\baselineskip}}
\begin{document}
\blindtext
\blindtext

%\needspace{5\baselineskip}
\begin{longtable}[t]{|p{0.5\textwidth} | p{0.5\textwidth}|}\hline
\blindtext
&
\blindtext
\\\hline
\end{longtable}
\end{document}

相关内容