Longtabu 환경의 Lasthead 섹션

Longtabu 환경의 Lasthead 섹션

Longtable 환경에는 다음에 대한 섹션이 있습니다.첫 번째 머리그리고다른 머리. 세 번째 섹션을 추가하고 싶습니다.마지막 머리텍스트가 약간 다른 표의 마지막 페이지에 있어야 합니다. 가능합니까?

추신. 이 질문에 최소한의 실제 예제가 필요한지 잘 모르겠습니다.

답변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}

관련 정보