根据这通过将最后一个元素放入 ,可以将至少一个元素放在 和 之间,\endhead
从而\endlastfoot
自动分页\endlastfoot
。但如果我还想将实际的 endlastfoot 放在页面底部, 就*[\fill]
无法像在最后一个元素和 endlastfoot 之间那样工作。
\documentclass[10pt, a4paper]{article}
\usepackage{longtable}
\pagestyle{empty}
\begin{document}
\vspace*{17.4cm}
\begin{longtable}{@{}lc@{}}
Date & Grade
\endhead
%
2016-01-15 & C\\ *[\fill]
\bfseries Summary:
\endlastfoot
%
2016-01-01 & A\\
2016-01-15 & B\\
2016-01-01 & A\\
2016-01-15 & B\\
2016-01-01 & A\\
\end{longtable}
\end{document}
答案1
有趣的是,我甚至无法使用\rule
最后一个脚来添加额外的空间。所以我把它分成两个表格。
\documentclass[10pt, a4paper]{article}
\usepackage{longtable}
\pagestyle{empty}
\usepackage{showframe}
\begin{document}
\vspace*{17.4cm}
\begin{longtable}{@{}lc@{}}
Date & Grade
\endhead
2016-01-15 & C \\
\phantom{\bfseries Summary:}
\endlastfoot
2016-01-01 & A\\
2016-01-15 & B\\
2016-01-01 & A\\
2016-01-15 & B\\
2016-01-01 & A\\
\end{longtable}
\vfill
\noindent\hfil
\begin{tabular}[b]{@{}lc@{}}
\phantom{2016-01-15} & \phantom{Grade}\\
\bfseries Summary:
\end{tabular}
\end{document}
可以从辅助文件中获取所有列宽,而不必使用\phantom
。请参阅这里。通过使用两个 longtable,可以共享宽度。缺点是,要缩小宽度,必须删除旧的辅助文件。
\documentclass[10pt, a4paper]{article}
\usepackage{longtable}
\pagestyle{empty}
\usepackage{showframe}
\newlength{\LTwidth}
\newcommand{\LTwidthA}{0pt}
\newcommand{\LTwidthB}{0pt}
\makeatletter
\newcommand*{\getLTwidth}[1][0]% #1 = offet (optional): 0 = previous, 1 = next
{\bgroup% for \count1 and \LT@entry
\count1=#1\relax
\advance\count1 by \value{LT@tables}%
\@ifundefined{LT@\@roman{\count1}}{\LTwidth=\textwidth}{%
\dimen0=0pt%
\count2=0
\def\LT@entry##1##2{\advance\dimen0 by ##2\relax
\advance\count2 by 1
\expandafter\xdef\csname LTwidth\@Alph{\count2}\endcsname{##2}}
\csname LT@\@roman{\count1}\endcsname
}%
\global\LTwidth=\dimen0
\egroup}
\makeatother
\newcommand{\maxcell}[3]% #1 = width, #2 = l/r/c, #3 = text
{\bgroup
\dimen0=#1\relax
\sbox0{#3}%
\ifdim\wd0>\dimen0
\usebox0
\else
\makebox[\dimen0][#2]{\usebox0}%
\fi
\egroup}
\begin{document}
\vspace*{17.8cm}
\getLTwidth[2]% get widths from second table
\begin{longtable}{@{}lc@{}}
Date & Grade
\endhead
2016-01-15 & C
\endlastfoot
\maxcell{\dimexpr \LTwidthA-\tabcolsep}{l}{2016-01-01} &
\maxcell{\dimexpr \LTwidthB-\tabcolsep}{c}{A} \\% any row will do
2016-01-15 & B\\
2016-01-01 & A\\
2016-01-15 & B\\
2016-01-01 & A\\
\end{longtable}
\getLTwidth% get widths from previous table
\vfill
\noindent\hfil
\begin{longtable}{@{}lc@{}}
%\rule{\LTwidthA}{1pt}\hspace{-\tabcolsep} & \hspace{-\tabcolsep}\rule[1pt]{\LTwidthB}{1pt} \\
\maxcell{\dimexpr \LTwidthA-\tabcolsep}{l}{\bfseries Summary:} &
\maxcell{\dimexpr \LTwidthB-\tabcolsep}{c}{ }
\end{longtable}\unskip% remove gap at bottom
\end{document}
答案2
此处的语法longtable
与以下语法相匹配tabular
(实际上它只是使用底层表格实现)\\[...]
(通常)添加具有指定深度的支柱(零宽度规则),以强制行具有更大的深度。规则尺寸始终是固定长度,如果提供可拉伸长度,则将采用自然长度,此处为 0pt。在某些情况下,\\[...]
添加垂直跳跃而不是规则,在这种情况下,拉伸空间可能会起作用,但脚longtable
是一个插入的框,因此始终具有固定长度,