长表的宽度受其中一条线的影响\endhead
。因此,如果根据规格,实际表宽度为 2 英寸,但文本\endhead
比该宽度长,则最后一列会一直延伸到右侧,即使它有p{.1in}
。举个例子可以清楚地说明这一点。
\documentclass[12pt]{article}
\usepackage{amsmath}
\usepackage{longtable}
\begin{document}
\begin{longtable}[c]{|p{0.2in}|p{1in}|p{0.1in}|}\hline
\# & ODE & A \\\hline
\endfirsthead
\multicolumn{3}{c}{\tablename \thetable {} -- second order series method. Regular singular point. Difference not integer. Continued from previous page}\\\hline
\# & ODE & A \\\hline
\endhead \hline
\multicolumn{3}{|r|}{Continued on next page}\\\hline
\endfoot \hline
\endlastfoot
%first row
1
&2
&3\\ \hline
%second row
1
&2
&3\\ \hline
\end{longtable}
\end{document}
当使用编译lualatex
时
这是因为\endhead
文本太长。帮助说
\endhead 指定出现在每页顶部的行。
我可以把它的字体调小。这会有点帮助,就像这样,通过将上面的一行更改为并添加\scriptsize
,就像这样
\multicolumn{3}{c}{\tablename \thetable {} -- {\scriptsize second order series method. Regular singular point. Difference not integer. Continued from previous page}}\\\hline
现在它编译为
但最后一列的宽度仍然不符合p
表格中的规定。
最后一列被拉伸以容纳应显示在长表中每页顶部的文本。
因此,如果此文本很长(更具描述性),最后一列将会溢出到右侧,看起来不太好看。
有没有办法让文本\endhead
不影响表格的宽度并保持每列的宽度与p
格式中给出的宽度相同?
这是来自真实 PDF 的示例,其中包含有 10 列的实际表格。文本\endhead
显示在每页表格顶部,用于描述表格中的内容。
由于描述很长,右侧的表格超出了范围,尽管格式p
在名为 的列标题处停止time
。此后不应再有任何内容。
我可以将\endhead
文本格式化为多行吗?怎么做?
这是另一个表格的示例,使用p
与上面相同的格式,但由于endhead
描述较短,最后一列不会溢出到右侧
我只是不想担心表格描述太长及其对实际表格的影响。
编辑
我确实使用了标题。但标题不会出现在每一页上。它只显示在 longtable 的第一页上。因此,如果我将表格的描述放在标题中,它不会显示在下一页的顶部。只有与之相关的文本才会\endhead
出现。这是一个 MWE
\documentclass[12pt]{article}
\usepackage{amsmath}
\usepackage{longtable}
\begin{document}
\begin{longtable}[c]{|p{0.2in}|p{1in}|p{0.1in}|}
\caption{second order series method. Regular singular point. Difference not integer}\\\hline
\# & ODE & A \\\hline
\endfirsthead
\multicolumn{3}{c}{\tablename \thetable {} -- Continued from previous page}\\\hline
\# & ODE & A \\\hline
\endhead \hline
\multicolumn{3}{|r|}{Continued on next page}\\\hline
\endfoot \hline
\endlastfoot
%first row
1
&2
&3\\ \hline
%second row
1
&2
&3\\ \hline
%first row
1
&2
&3\\ \hline
%second row
1
&2
&3\\ \hline
%first row
1
&2
&3\\ \hline
%second row
1
&2
&3\\ \hline
%first row
1
&2
&3\\ \hline
%second row
1
&2
&3\\ \hline
%first row
1
&2
&3\\ \hline
%second row
1
&2
&3\\ \hline
%first row
1
&2
&3\\ \hline
%second row
1
&2
&3\\ \hline
%first row
1
&2
&3\\ \hline
%second row
1
&2
&3\\ \hline
%first row
1
&2
&3\\ \hline
%second row
1
&2
&3\\ \hline
%first row
1
&2
&3\\ \hline
%second row
1
&2
&3\\ \hline
%first row
1
&2
&3\\ \hline
%second row
1
&2
&3\\ \hline
%first row
1
&2
&3\\ \hline
%second row
1
&2
&3\\ \hline
%first row
1
&2
&3\\ \hline
%second row
1
&2
&3\\ \hline
%first row
1
&2
&3\\ \hline
%second row
1
&2
&3\\ \hline
%first row
1
&2
&3\\ \hline
%second row
1
&2
&3\\ \hline
%first row
1
&2
&3\\ \hline
%second row
1
&2
&3\\ \hline
%first row
1
&2
&3\\ \hline
%second row
1
&2
&3\\ \hline
%first row
1
&2
&3\\ \hline
%second row
1
&2
&3\\ \hline
%first row
1
&2
&3\\ \hline
%second row
1
&2
&3\\ \hline
%first row
1
&2
&3\\ \hline
%second row
1
&2
&3\\ \hline
%first row
1
&2
&3\\ \hline
%second row
1
&2
&3\\ \hline
\end{longtable}
\end{document}
编译后,第一页显示
但下一页不再有标题描述:
这就是问题所在。我需要在每个页面的每个表格顶部添加详细描述,这样我才知道我正在查看哪个表格。
Linux 上的 TL 2021。
答案1
要保持原始表格大小,请尝试
\begin{longtable}[c]{|p{0.2in}|p{1in}|p{0.1in}|}
\caption{Second order series method. Regular singular point. Difference not integer.}\\
\hline
\# & ODE & A \\\hline
\endfirsthead
\multicolumn{3}{@{}c@{}}{\parbox{\dimexpr1.3in+6\tabcolsep-2\arrayrulewidth\relax}{\small\tablename~\thetable\ Second order series method. Regular singular point. Difference not integer\\ {\footnotesize \emph{Continued from previous page}}\vspace*{1ex}}}\\\hline
\# & ODE & A \\\hline
\endhead \hline
\multicolumn{3}{|r|}{\footnotesize \emph{Continued on next page}}\\\hline
\endfoot \hline
\endlastfoot
%first row
将会parbox
进行换行并允许\\
内部。其宽度等于表格的内部宽度,因此不会不必要地扩大表格。
答案2
编写表格的一种方法如下:
\documentclass[12pt]{article}
\usepackage{amsmath}
\usepackage{longtable}
\begin{document}
\begin{longtable}[c]{|p{0.2in}|p{1in}|p{0.1in}|}
\caption{second order series method. Regular singular point. Difference not integer} \\
\hline
\# & ODE & A \\
\hline
\endfirsthead
\caption[]{second order series method. Regular singular point. Difference not integer (cont.)} \\
\hline
\# & ODE & A \\
\endhead
\multicolumn{3}{r @{}}{\footnotesize\textit{Continued on the next page}} \\
\endfoot
\endlastfoot
% table body
1 & 2 & 3 \\ \hline
1 & 2 & 3 \\ \hline
1 & 2 & 3 \\ \hline
1 & 2 & 3 \\ \hline
1 & 2 & 3 \\ \hline
1 & 2 & 3 \\ \hline
1 & 2 & 3 \\ \hline
1 & 2 & 3 \\ \hline
1 & 2 & 3 \\ \hline
1 & 2 & 3 \\ \hline
%
1 & 2 & 3 \\ \hline
1 & 2 & 3 \\ \hline
1 & 2 & 3 \\ \hline
1 & 2 & 3 \\ \hline
1 & 2 & 3 \\ \hline
%
%
1 & 2 & 3 \\ \hline
1 & 2 & 3 \\ \hline
1 & 2 & 3 \\ \hline
1 & 2 & 3 \\ \hline
1 & 2 & 3 \\ \hline
%
1 & 2 & 3 \\ \hline
1 & 2 & 3 \\ \hline
1 & 2 & 3 \\ \hline
1 & 2 & 3 \\ \hline
1 & 2 & 3 \\ \hline
%
1 & 2 & 3 \\ \hline
1 & 2 & 3 \\ \hline
1 & 2 & 3 \\ \hline
1 & 2 & 3 \\ \hline
1 & 2 & 3 \\ \hline
%
1 & 2 & 3 \\ \hline
1 & 2 & 3 \\ \hline
1 & 2 & 3 \\ \hline
1 & 2 & 3 \\ \hline
1 & 2 & 3 \\ \hline
%
1 & 2 & 3 \\ \hline
1 & 2 & 3 \\ \hline
1 & 2 & 3 \\ \hline
1 & 2 & 3 \\ \hline
1 & 2 & 3 \\ \hline
\end{longtable}
\end{document}
这使:
如果你愿意,你可以(cont.)
在非第一个标题中写(continued from previous page)
但是,由于您的表格很窄,您可以考虑使用 6 列的表格:
\documentclass[12pt]{article}
\usepackage{amsmath}
\usepackage{longtable}
\begin{document}
\begin{longtable}{|*{2}{p{0.2in}|p{1in}|p{0.1in}|}}
\caption{second order series method. Regular singular point. Difference not integer} \\
\hline
\# & ODE & A & \# & ODE & A \\
\hline
\endfirsthead
\caption[]{second order series method. Regular singular point. Difference not integer (Continued from the previous page)} \\
\hline
\# & ODE & A & \# & ODE & A \\
\endhead
\multicolumn{6}{r @{}}{\footnotesize\textit{Continued on the next page}} \\
\endfoot
\endlastfoot
% 6 column table body
1 & 2 & 3 & 1 & 2 & 3 \\ \hline
1 & 2 & 3 & 1 & 2 & 3 \\ \hline
1 & 2 & 3 & 1 & 2 & 3 \\ \hline
1 & 2 & 3 & 1 & 2 & 3 \\ \hline
1 & 2 & 3 & 1 & 2 & 3 \\ \hline
\end{longtable}
\end{document}