longtable 改变页面标题

longtable 改变页面标题

考虑以下 MWE:

\documentclass{article}
\usepackage{kantlipsum}

\pagestyle{headings}

\usepackage{longtable}

\begin{document}
\section{First}
\kant[1]

% using this longtable changes the header from "1 First" to "2 Second":
% \begin{longtable}{ll}
%  bla & blub \\
%  bla & blub
% \end{longtable}

\section{Second}
\kant[2]

\end{document}

奇怪的是,添加longtable环境会将页面标题从»1 第一页«»2 秒«。我是否遗漏了一些显而易见的东西?有人知道在哪里寻找原因吗?

答案1

我认为这是一个错误,很抱歉,在错误数据库中有类似(但不同)的实例,一种解决方法是修改第 402 行左右的 longtable 的本地副本以丢失 vboxing。

      \global\vsize\@colht
%      \vbox
        {\unvbox\z@\box\ifvoid\LT@lastfoot\LT@foot\else\LT@lastfoot\fi}%

如果您让我知道(a)这是否解决了您的真实情况和/或(b)是否破坏了其他所有内容,那将是有用的信息......

答案2

根据 David Carlisle 的建议,这里有一个解决方案,它不需要您制作文件的本地副本。相反,它利用了包的longtable.sty宏。在序言中插入以下代码应该可以解决问题。\patchcmdetoolbox

\usepackage{longtable,etoolbox}
% The following code should only be used with v. 4.11 [2004/02/01, (DPC)] 
%    of the longtable package. It will probably -- actually, almost 
%    certainly! -- not work with other versions of this package.
% There are four separate occurrences of \vbox in "\LT@output"; 
%    must patch (i.e., eliminate) only the one that follows "\@colht".
\makeatletter
\patchcmd{\LT@output}{\@colht \vbox}{\@colht}{}{} 
\makeatother

相关内容