长表最后一页的页眉不正确

长表最后一页的页眉不正确

我正在设置对数表。我使用的是 longtable,效果很好。表格的每一行都有一个 markboth 引用,如下所示:

\textbf{1.03}\markboth{1.03}{1.03} & .01284 & .01326 & ...
\textbf{1.04}\markboth{1.04}{1.04} & .01703 & .01745 & ...
\textbf{1.05}\markboth{1.05}{1.05} & .02119 & .02160 & ...

我的标题是使用以下方式生成的:

\makeatletter
\def\@oddhead{\thepage\qquad\textsc{Decimal Logarithms}\hfill
  \rightmark{} -- \leftmark}
\def\@evenhead{\rightmark{} -- \leftmark \hfill
  \textsc{Decimal Logarithms}\qquad\thepage}
\makeatother

行头中的文本对于表格的大部分内容都是正确的:1.00 – 1.47、1.48 – 1.96,... 除了最后一页,它只显示 9.99 – 9.99,而它应该是 9.81 – 9.99。最后一页没有完全填满表格。

我已经尝试了在每页顶部索引单词间隔,结果最后一页只有一个标题 9.99。我的 TeX 有点生疏了;十多年来都没有认真用过它。任何帮助都感激不尽。

更新:这是一个刚好足以生成页面抛出的测试用例:

\documentclass{article}
\usepackage{longtable}
\pagestyle{headings}

\begin{document}

% page headings
\makeatletter
\def\@oddhead{\thepage{} \hfill \rightmark{} -- \leftmark{}}
\def\@evenhead{\rightmark{} -- \leftmark{} \hfill \thepage{}}
\makeatother

\begin{longtable}{|*{4}{c|}}
  & 0 & 1 & 2 \\ \hline \endhead
\hline \endfoot
 1.00\markboth{1.00}{1.00} & .00000 & .00043 & .00087 \\
 1.01\markboth{1.01}{1.01} & .00432 & .00475 & .00518 \\
 1.02\markboth{1.02}{1.02} & .00860 & .00903 & .00945 \\
 1.03\markboth{1.03}{1.03} & .01284 & .01326 & .01368 \\
 1.04\markboth{1.04}{1.04} & .01703 & .01745 & .01787 \\
 1.05\markboth{1.05}{1.05} & .02119 & .02160 & .02202 \\
 1.06\markboth{1.06}{1.06} & .02531 & .02572 & .02612 \\
 1.07\markboth{1.07}{1.07} & .02938 & .02979 & .03019 \\
 1.08\markboth{1.08}{1.08} & .03342 & .03383 & .03423 \\
 1.09\markboth{1.09}{1.09} & .03743 & .03782 & .03822 \\
 1.10\markboth{1.10}{1.10} & .04139 & .04179 & .04218 \\
 1.11\markboth{1.11}{1.11} & .04532 & .04571 & .04610 \\
 1.12\markboth{1.12}{1.12} & .04922 & .04961 & .04999 \\
 1.13\markboth{1.13}{1.13} & .05308 & .05346 & .05385 \\
 1.14\markboth{1.14}{1.14} & .05690 & .05729 & .05767 \\
 1.15\markboth{1.15}{1.15} & .06070 & .06108 & .06145 \\
 1.16\markboth{1.16}{1.16} & .06446 & .06483 & .06521 \\
 1.17\markboth{1.17}{1.17} & .06819 & .06856 & .06893 \\
 1.18\markboth{1.18}{1.18} & .07188 & .07225 & .07262 \\
 1.19\markboth{1.19}{1.19} & .07555 & .07591 & .07628 \\
 1.20\markboth{1.20}{1.20} & .07918 & .07954 & .07990 \\
 1.21\markboth{1.21}{1.21} & .08279 & .08314 & .08350 \\
 1.22\markboth{1.22}{1.22} & .08636 & .08672 & .08707 \\
 1.23\markboth{1.23}{1.23} & .08991 & .09026 & .09061 \\
 1.24\markboth{1.24}{1.24} & .09342 & .09377 & .09412 \\
 1.25\markboth{1.25}{1.25} & .09691 & .09726 & .09760 \\
 1.26\markboth{1.26}{1.26} & .10037 & .10072 & .10106 \\
 1.27\markboth{1.27}{1.27} & .10380 & .10415 & .10449 \\
 1.28\markboth{1.28}{1.28} & .10721 & .10755 & .10789 \\
 1.29\markboth{1.29}{1.29} & .11059 & .11093 & .11126 \\
 1.30\markboth{1.30}{1.30} & .11394 & .11428 & .11461 \\
 1.31\markboth{1.31}{1.31} & .11727 & .11760 & .11793 \\
 1.32\markboth{1.32}{1.32} & .12057 & .12090 & .12123 \\
 1.33\markboth{1.33}{1.33} & .12385 & .12418 & .12450 \\
 1.34\markboth{1.34}{1.34} & .12710 & .12743 & .12775 \\
 1.35\markboth{1.35}{1.35} & .13033 & .13066 & .13098 \\
 1.36\markboth{1.36}{1.36} & .13354 & .13386 & .13418 \\
 1.37\markboth{1.37}{1.37} & .13672 & .13704 & .13735 \\
 1.38\markboth{1.38}{1.38} & .13988 & .14019 & .14051 \\
 1.39\markboth{1.39}{1.39} & .14301 & .14333 & .14364 \\
 1.40\markboth{1.40}{1.40} & .14613 & .14644 & .14675 \\
 1.41\markboth{1.41}{1.41} & .14922 & .14953 & .14983 \\
 1.42\markboth{1.42}{1.42} & .15229 & .15259 & .15290 \\
 1.43\markboth{1.43}{1.43} & .15534 & .15564 & .15594 \\
 1.44\markboth{1.44}{1.44} & .15836 & .15866 & .15897 \\
 1.45\markboth{1.45}{1.45} & .16137 & .16167 & .16197 \\
 1.46\markboth{1.46}{1.46} & .16435 & .16465 & .16495 \\
 1.47\markboth{1.47}{1.47} & .16732 & .16761 & .16791 \\
 1.48\markboth{1.48}{1.48} & .17026 & .17056 & .17085 \\
 1.49\markboth{1.49}{1.49} & .17319 & .17348 & .17377 \\
 1.50\markboth{1.50}{1.50} & .17609 & .17638 & .17667 \\
 1.51\markboth{1.51}{1.51} & .17898 & .17926 & .17955 \\
 1.52\markboth{1.52}{1.52} & .18184 & .18213 & .18241 \\
 1.53\markboth{1.53}{1.53} & .18469 & .18498 & .18526 \\
 1.54\markboth{1.54}{1.54} & .18752 & .18780 & .18808 \\
 1.55\markboth{1.55}{1.55} & .19033 & .19061 & .19089 \\
 1.56\markboth{1.56}{1.56} & .19312 & .19340 & .19368 \\
 1.57\markboth{1.57}{1.57} & .19590 & .19618 & .19645 \\
 1.58\markboth{1.58}{1.58} & .19866 & .19893 & .19921 \\
 1.59\markboth{1.59}{1.59} & .20140 & .20167 & .20194 \\
\end{longtable}

\end{document} 

答案1

有可能 longtable 在将分页控制权交还给主 latex 输出例程时丢失了标记。以前没有见过这种情况,但一切皆有可能。如果您无法制作一个足够小的测试用例来发布在这里,并且您认为这是一个 LT 错误,您可以将其发布到 latex 错误地址latex latexbug并按照说明进行操作(LT 错误应属于“工具”类别)。

测试用例更新:

这类似于 fixltx2e 包修复的“双列模式中的标记”。\topmark由 LT 输出例程的最后一次迭代设置,但不会传递给标准例程。当分页器重新考虑最终表格部分时,标准例程只会再次拾取标记,但为了确保标准输出例程破坏表格(但不添加表格脚)不会产生不良边缘效果,LT 将最终表格段留在 vbox 中,这样它就不会破坏。然而,这意味着它也不会暴露任何标记。一个 20 年前的错误。

它可以像在 fixltx2e 中一样通过在 LT 输出例程中“手动”保存标记并重新设置(\topmark如果\firstmark需要)来修复,但是对您来说,一个更简单的修复方法是省略对最终表格段的装箱,并将取消装箱的表格放回到主垂直列表中,这样标记就会像往常一样影响下一页。

简短的回答是:抱歉,%在 longtable.sty 第 404 行添加

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

如果你这样做,请将 ProvidesPackage 行

\ProvidesPackage{longtable}
          [2004/02/01 v4.11 Multi-page Table package (DPC) + mark fix]

如果这对您的实际案例有用,请告诉我。我怀疑更安全的修复可能是重新插入标记版本,但这需要更多思考(我写这些东西已经很久了;-)

相关内容