
Die Longtable-Umgebung verfügt über Abschnitte fürerster KopfUndandere Kopf. Ich möchte einen dritten Abschnitt hinzufügen fürletzter Kopfdas muss auf der letzten Seite einer Tabelle mit leicht abweichendem Text stehen. Ist das möglich?
PS. Ich bin nicht sicher, ob diese Frage ein minimales funktionierendes Beispiel benötigt.
Antwort1
(Eine Erklärung dazu steht in der Antwort vonLange Tabellenüberschrift konfigurieren
Es ist möglich. Schauen Sie sich den folgenden Code an vonlongtable.sty
\def\LT@output{% \ifnum\outputpenalty <-\@Mi%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ifnum\outputpenalty > -\LT@end@pen \LT@err{floats and marginpars not allowed in a longtable}\@ehc \else \setbox\z@\vbox{\unvbox\@cclv}% \ifdim \ht\LT@lastfoot>\ht\LT@foot \dimen@\pagegoal \advance\dimen@-\ht\LT@lastfoot \ifdim\dimen@<\ht\z@ \setbox\@cclv\vbox{\unvbox\z@\copy\LT@foot\vss}% \@makecol \@outputpage \setbox\z@\vbox{\box\LT@head}% \fi \fi \global\@colroom\@colht \global\vsize\@colht \vbox {\unvbox\z@\box\ifvoid\LT@lastfoot\LT@foot\else\LT@lastfoot\fi}% \fi \else \setbox\@cclv\vbox{\unvbox\@cclv\copy\LT@foot\vss}% \@makecol \@outputpage \global\vsize\@colroom \copy\LT@head\nobreak%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \fi}
Wir konnten sehen, dass \ifnum\outputpenalty <-\@Mi
verwendet wird, um zu prüfen, ob diese Seite die letzte Seite ist. Daher würden wir dies \copy\LT@lasthead
an dieser Stelle gerne tun. Zu diesem Zeitpunkt \LT@head
ist jedoch bereits am Anfang von eingefügt \@cclv
. (Andernfalls ergibt die Prüfung der Strafe keinen Sinn.) Daher müssen wir aus \setbox\LT@head=\vsplit\@cclv to0pt
entfernen . (Und es wieder an zurückgeben .) Dies schlägt jedoch fehl, da auf ein folgt . Daher müssen wir die Zeile ändern, um den folgenden Code zu erhalten:\LT@head
\@cclv
\LT@head
\LT@head
\@cclv
\nobreak
\copy\LT@head\nobreak
\documentclass{article}
\usepackage{longtable,setspace}
\begin{document}
\listoftables
\setstretch{5}
\makeatletter
\newif\ifmorethanonepage\morethanonepagefalse
\newbox\LT@lasthead\def\endlasthead{\LT@end@hd@ft\LT@lasthead}
\def\LT@output{%
\ifnum\outputpenalty <-\@Mi
\ifmorethanonepage\copy\LT@lasthead\fi%%%%%
\setbox\LT@head=\vsplit\@cclv to0pt%%%%%%
\ifnum\outputpenalty > -\LT@end@pen
\LT@err{floats and marginpars not allowed in a longtable}\@ehc
\else
\setbox\z@\vbox{\unvbox\@cclv}%
\ifdim \ht\LT@lastfoot>\ht\LT@foot
\dimen@\pagegoal
\advance\dimen@-\ht\LT@lastfoot
\ifdim\dimen@<\ht\z@
\setbox\@cclv\vbox{\unvbox\z@\copy\LT@foot\vss}%
\@makecol
\@outputpage
\setbox\z@\vbox{\box\LT@lasthead}%
\fi
\fi
\global\@colroom\@colht
\global\vsize\@colht
\vbox
{\unvbox\z@\box\ifvoid\LT@lastfoot\LT@foot\else\LT@lastfoot\fi}%
\fi
\else
\global\morethanonepagetrue%
\setbox\@cclv\vbox{\unvbox\@cclv\copy\LT@foot\vss}%
\@makecol
\@outputpage
\global\vsize\@colroom
\copy\LT@head%%%%%\nobreak
\fi}
\makeatother
\begin{longtable}{ccc}
\caption{FIRST} \\\endfirsthead
\caption{OTHER} \\\endhead
\caption{LAST} \\\endlasthead
1 \\ 2 \\ 3 \\ 4 \\ 5 \\ 6 \\ 7 \\ 8 \\ 9 \\ 10 \\ 11 \\ 12 \\ 13 \\ 14 \\ 15 \\ 16 \\ 17 \\ 18 \\ 19 \\ 20 \\ 21 \\ 22 \\ 23 \\ 24 \\ 25 \\ 26 \\ 27 \\ 28 \\ 29 \\ 30 \\ \end{longtable}
\end{document}