ロングタブ環境のラストヘッドセクション

ロングタブ環境のラストヘッドセクション

Longtable環境には以下のセクションがあります最初の頭そして他の 3番目のセクションを追加したい最後の頭これは、わずかに異なるテキストを含む表の最後のページにある必要があります。これは可能ですか?

PS. この質問に最小限の実用的な例が必要かどうかはわかりません。

答え1

(回答に一部説明が書かれています長い表のキャプションを設定する

可能です。次のコードを見てください。longtable.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}

\ifnum\outputpenalty <-\@Miこのページが最後のページかどうかをチェックするために が使用されていることがわかります\copy\LT@lasthead。したがって、この時点で を実行したいのですが、この時点で は\LT@headすでに の先頭に挿入されています\@cclv。(そうでない場合、チェックのペナルティは意味がありません。) したがって、から を\setbox\LT@head=\vsplit\@cclv to0pt削除する必要があります。(そして に戻します)。しかし、 の後にが続くため、これは失敗します。したがって、次のコードを取得するには、行を変更する必要があります。\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}

関連情報