Xubuntu 14.04 LTS 上的 TeX Live 2014。
最小工作示例:
\documentclass[11pt, oneside]{report}
\usepackage{afterpage}
\usepackage{booktabs}
\usepackage{longtable}
\begin{document}
\afterpage{
\clearpage
}
\rule{1mm}{16cm}
\begin{longtable}{l}
\caption[]{\rule{2mm}{2cm}} \\
\toprule
Col 1 \\
\hline \endfirsthead
\caption[]{\textit{continued from the previous page}} \\
\toprule
Col 1 \\
\hline \endhead
\hline
\multicolumn{1}{r}{\textit{continued on the next page}} \\
\endfoot
\bottomrule
\endlastfoot
1 \\
1 \\
1 \\
1 \\
\end{longtable}
\end{document}
尝试编译此 MWE 会导致以下消息:
! Misplaced \noalign.
\newpage ->\noalign
{\break }
l.30 \end{longtable}
是实现该效果的必要条件\clearpage
。此外,第一个表格头必须不适合页面。将第一条规则从 缩减16cm
为14cm
即可。
附注:还有15cm
其他奇妙的事情正在发生,但我现在并不关心这些。
问题):我该如何避免此错误?此问题的具体原因是什么?
这两个问题可能互相补充。
更新 2015-12-03:休息了一会儿后,我意识到这个问题可能没有简单的解决方案。afterpage 和 longtable 都需要在页面末尾工作。当 longtable 想要开始一个新页面时,afterpage 会/应该想要启动。这可能不是一个技术解释,但可能也一针见血。我认为必须让 afterpage 能够感知 longtable 或反过来才能使其工作。与此同时,我在\newpage
longtable 之前使用了 right。
在发布之前,我查看了这些相关问题,但没有找到答案:longtable 放错位置 noalign,长桌休息后页,https://tex.stackexchange.com/questions/147169/misplaced-noalign-when-using-afterpage-clearpage-with-either-onehafspacing,longtable 中的 captionof 给出了放错位置的 \noalign,长表对齐,带标题,! 放错 \omit。Longtable 错误和 Caption 未对齐 额外的对齐标签已更改为 \cr。
答案1
无论是否有趣,我也有完全相同的问题。
由于生成了乳胶代码,我无法手动将代码更改为“适合”。
这是我的最小示例,它并不像我想要的那么最小。
\documentclass[10pt,a4paper]{article}
\usepackage{fancyhdr, lastpage}
\usepackage[]{geometry}
\usepackage{longtable}
\usepackage{afterpage}
\pagestyle{fancy}
\setlength{\headsep}{0.1mm}
\begin{document}
\newgeometry{total={210mm,297mm}, head=56pt, top=10mm, left=10mm, right=10mm, bottom=58pt, includeheadfoot}
\afterpage{\clearpage\lfoot{Page}}
\begin{tabular}{l}
TABLE1\tabularnewline[210mm]
\end{tabular}
\begin{longtable}{ l}
TABLE2\\[20mm]
\endhead
B\tabularnewline
\end{longtable}
\end{document}