\endhead 文本长度影响 longtable 列宽。如何避免这种情况?

\endhead 文本长度影响 longtable 列宽。如何避免这种情况?

长表的宽度受其中一条线的影响\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

A

C

将会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}

在此处输入图片描述

相关内容