![如何在不使用两个表的情况下更改 longtable 中间的 \endhead?](https://linux22.com/image/437708/%E5%A6%82%E4%BD%95%E5%9C%A8%E4%B8%8D%E4%BD%BF%E7%94%A8%E4%B8%A4%E4%B8%AA%E8%A1%A8%E7%9A%84%E6%83%85%E5%86%B5%E4%B8%8B%E6%9B%B4%E6%94%B9%20longtable%20%E4%B8%AD%E9%97%B4%E7%9A%84%20%5Cendhead%EF%BC%9F.png)
我正在尝试构建一个长表(而不是两个粘在一起的表)。前两页应该具有相同的标题,而最后一页应该更改为另一个标题。我尝试使用此问题中的代码(在 longtable 的中间更改 \endhead),但是,我的标题出现在 \begin(longtable) 之后的最开始处,这导致 \endfirsthead 和 \endhead 出现以下错误“Package longtable 错误:Longtable head 或 foot 不在表格的开头”。
使用上述问题中的相同示例,在 \begin(longtable) 后添加标题后,就会出现错误。我只需要将标题作为表格标题的第一项添加,并在出现新页面时重复标题。以下是导致错误的代码:
\documentclass[a4paper]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[utf8]{inputenc}
\usepackage{booktabs}
\usepackage{longtable}
\begin{document}
\newbox\LTheadsave
\makeatletter
\newcommand\saveLThead{\noalign{\global\setbox\LTheadsave\copy\LT@head}}
\newcommand\restoreLThead{\noalign{\global\setbox\LT@head\copy\LTheadsave}}
\makeatother
\setcounter{LTchunksize}{2}
\begin{longtable}{lc}
\caption{Example error}
\toprule
Question 1 & N \\
\cmidrule(r){1-1}
\cmidrule(l){2-2}
\endfirsthead
\multicolumn{2}{@{}l}{\textbf{Table} \ref{tab: example} continued}\\
\toprule
%\textbf{Table} \ref{tab: example} xyz\\
Question 2 (cont.) 1 & N \\
\cmidrule(r){1-1}
\cmidrule(l){2-2}
\endhead\saveLThead
\multicolumn{2}{@{}l}{\textbf{Table} \ref{tab: example} continued}\\
\toprule
%\textbf{Table} \ref{tab: example} xyz\\
Question 1 (cont.) 1 & N \\
\cmidrule(r){1-1}
\cmidrule(l){2-2}
\endhead
\bottomrule\endfoot
Item 1 & 4 \\
Item 2 & 10 \\
Item 3 & 2 \\
Item 4 & 8 \\
Item 5 & 20 \\
Item 6 & 3 \\
Item 7 & 6 \\
Item 8 & 1 \\
Item 9 & 11 \\
Item 10 & 6 \\
& \\\newpage
Item 1 & 4 \\
Item 2 & 10 \\
Item 3 & 2 \\
Item 4 & 8 \\
Item 5 & 20 \\
Item 6 & 3 \\
Item 7 & 6 \\
Item 8 & 1 \\
Item 9 & 11 \\
Item 10 & 6 \\
&\\
Question 2 & N \\
\cmidrule(r){1-1}
\cmidrule(l){2-2}
Item 1 & 4 \\\restoreLThead
Item 2 & 10 \\
Item 3 & 2 \\
Item 4 & 8 \\
Item 5 & 20 \\
Item 6 & 3 \\\newpage
Item 7 & 6 \\
Item 8 & 1 \\
Item 9 & 11 \\
Item 10 & 6 \\
\label{tab: example}
\end{longtable}
\end{document}
请提供任何帮助!
谢谢。Zeinab (她/她)
答案1
您只能在区块之间更改标题,因此\LTchunksize
很重要。在此示例中,每页只有一行,因此\def\LTchunksize{1}
。
我付出了一些努力不是改变的大小\LT@head
,虽然我不知道这是否真的有必要。
\documentclass{article}
\usepackage{longtable}
\usepackage{blindtext}
\makeatletter
\newcommand{\changehead}[1]% #1 = tabular...
{\bgroup
\sbox0{\makebox[\wd\LT@head][c]{\raisebox{0pt}[\ht\LT@head][\dp\LT@head]{#1}}}%
\global\setbox\LT@head=\copy0
\egroup}
\makeatother
\begin{document}
\begin{longtable}{p{2in}}
\multicolumn{1}{c}{Inital Definition}\\
\endhead
\def\LTchunksize{1}% must go after headers
\blindtext\\
\changehead{\begin{tabular}[b]{c}New Definition\end{tabular}}
\blindtext
\end{longtable}
\end{document}