我在为 LaTeX 中的 longtable 环境定义自定义标题时遇到了麻烦。自定义标题对于普通表格来说工作得很好,但当我尝试将其与 longtable 一起使用时,我遇到了错误。奇怪的是,这个问题似乎与自定义标题中的 \ 无关。我已经阅读了有关 longtable 标题中的换行符,但正如您所见,当我手动添加标题时,它起作用了。
这是一个最小的工作示例:
\documentclass{article}
\usepackage{caption}
\usepackage{longtable}
\usepackage{booktabs}
\newcommand{\customcaption}[2][]{%
\caption[#1]{\textbf{#1} \\ #2}%
}
\begin{document}
\begin{longtable}{lll}
\caption[Works]{\textbf{Works} \\ Bar} \\
\toprule
A & B & C \\
\midrule
\endfirsthead
\toprule
A & B & C \\
\midrule
\endhead
\midrule
\multicolumn{3}{r}{{Continued on next page}} \\
\midrule
\endfoot
\bottomrule
\endlastfoot
1 & 2 & 3 \\
4 & 5 & 6 \\
\end{longtable}
\begin{longtable}{lll}
\customcaption[Not working]{Bar} \\
\toprule
A & B & C \\
\midrule
\endfirsthead
\toprule
A & B & C \\
\midrule
\endhead
\midrule
\multicolumn{3}{r}{{Continued on next page}} \\
\midrule
\endfoot
\bottomrule
\endlastfoot
1 & 2 & 3 \\
4 & 5 & 6 \\
\end{longtable}
\end{document}
第一个带有常规标题的 longtable 工作正常。但是,当我尝试为第二个 longtable 使用 \customcaption 定义的自定义标题时,它会产生以下错误:
Package caption Info: End \AtBeginDocument code.
! Misplaced \noalign.
\caption ->\noalign
\bgroup \@ifnextchar [{\egroup \LT@c@ption \@firstofone ...
l.43 \customcaption[Foo]{Bar}
\\
I expect to see \noalign only after the \cr of an alignment. Proceed, and I'll ignore this case.
...
问题似乎出在 \newcommand 上,而不是其中的换行符(如果没有换行符也会失败)。我猜是因为 longtable 以某种方式重新实现了caption
。也许我至少可以单独创建一个特殊的 longtable 自定义标题?
我将非常感激任何关于如何解决此问题的见解或建议。提前感谢您的帮助!