如何控制longtable的宽度

如何控制longtable的宽度

这很奇怪为什么每列的宽度总和不等于 longtable 的总宽度。我有两张表:

\documentclass{article}

\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage{array}
\usepackage{titletoc}
\usepackage{verbatim}
\usepackage{tikz}
\usepackage{longtable}

\begin{document}
\textwidth 15.95cm
\begin{center}
    \begin{longtable}{
    |p{0.25cm}
    |p{4.6cm}
    |p{2 cm}
    |p{2.2cm}
    |p{0.8cm}
    |p{2.1cm}
    |p{1.9cm}|
    }
    \multicolumn{7}{>{\centering}p{\textwidth}}{1
    }\tabularnewline\hline
    a & a & a & a & a & a & a
    \tabularnewline\hline
    \end{longtable}
\end{center}

\begin{center}
    \begin{longtable}{
    | >{\centering}p{13cm}
    | >{\raggedright}p{9.cm}
    | >{\raggedright}p{2.42cm}
    | >{\raggedright}p{2.42cm} |
    }
    \multicolumn{4}{>{\centering}p{\textwidth}}{
    2
    }\tabularnewline\hline
    a & a & a & a
    \tabularnewline\hline
    \end{longtable}
\end{center}


\end{docume

PDF 中的两个表格的宽度完全相同。

正如 marmot 所说,桌子的总宽度应该是

sum of columns + (n-1)*\arraycolsep

以及如何知道的价值\arraycolsep

\textwidth更一般地,如何使 PDF 中的所有表格具有相同的宽度?中的width 是什么意思\multicolumn{7}{>{\centering}p{\textwidth}}

而且,当我减少某些列的宽度时,表格第一行的宽度会减少,第二行不会改变;当我增加某些列的宽度时,第一行和第二行都会增加?

答案1

您的表格还有更多问题。

  • 柱宽总和不等于\textwidth(15.95 厘米),
  • 多列单元格的宽度等于\textwidth,因此它延伸整个列,使整个表格的宽度等于\textwidth
  • 下面的例子中,在确定列宽时进行了\tabcolsep考虑\arrayrulewidth

    \documentclass{article}
    \usepackage[hmargin=2.525cm]{geometry}%
    %\textwidth 15.95cm
    
    \usepackage{array, longtable}
    \newcolumntype{C}[1]{>{\centering\arraybackslash}  p{#1}}
    \newcolumntype{R}[1]{>{\raggedright\arraybackslash}p{#1}}
    
    %-------------------------------------- only for show page layout
    \usepackage{showframe}
    \renewcommand\ShowFrameLinethickness{0.25pt}
    \renewcommand*\ShowFrameColor{\color{red}}
    %---------------------------------------------------------------%
    \begin{document}
    %\begin{center}
    width of table determined by sum of column width
    
    \begin{longtable}{
    |p{\dimexpr0.25cm-2\tabcolsep-1.13\arrayrulewidth}
    |p{\dimexpr4.6cm-2\tabcolsep-1.13\arrayrulewidth}
    |p{\dimexpr2 cm-2\tabcolsep-1.13\arrayrulewidth}
    |p{\dimexpr2.2cm-2\tabcolsep-1.13\arrayrulewidth}
    |p{\dimexpr0.8cm-2\tabcolsep-1.13\arrayrulewidth}
    |p{\dimexpr2.1cm-2\tabcolsep-1.13\arrayrulewidth}
    |p{\dimexpr1.9cm-2\tabcolsep-1.13\arrayrulewidth}|
    }
    %\multicolumn{7}{|C{\dimexpr\linewidth-2\tabcolsep-2\arrayrulewidth}|}{1}
    \hline
    a & a & a & a & a & a & a   \\
    \hline
    \end{longtable}
    %\end{center}
    
    width of table determined by multi column cell width
    
    \begin{longtable}{
    |p{\dimexpr0.25cm-2\tabcolsep-1.13\arrayrulewidth}
    |p{\dimexpr4.6cm-2\tabcolsep-1.13\arrayrulewidth}
    |p{\dimexpr2 cm-2\tabcolsep-1.13\arrayrulewidth}
    |p{\dimexpr2.2cm-2\tabcolsep-1.13\arrayrulewidth}
    |p{\dimexpr0.8cm-2\tabcolsep-1.13\arrayrulewidth}
    |p{\dimexpr2.1cm-2\tabcolsep-1.13\arrayrulewidth}
    |p{\dimexpr1.9cm-2\tabcolsep-1.13\arrayrulewidth}|
    }
    \multicolumn{7}{|C{\dimexpr\linewidth-2\tabcolsep-2\arrayrulewidth}|}{1}    \\
    \hline
    a & a & a & a & a & a & a   \\
    \hline
    \end{longtable}
    
    
    width of the multi column cell is adopted to sum of ll columns widths
    
    \begin{longtable}{
    |p{\dimexpr0.25cm-2\tabcolsep-1.13\arrayrulewidth}
    |p{\dimexpr4.6cm-2\tabcolsep-1.13\arrayrulewidth}
    |p{\dimexpr2 cm-2\tabcolsep-1.13\arrayrulewidth}
    |p{\dimexpr2.2cm-2\tabcolsep-1.13\arrayrulewidth}
    |p{\dimexpr0.8cm-2\tabcolsep-1.13\arrayrulewidth}
    |p{\dimexpr2.1cm-2\tabcolsep-1.13\arrayrulewidth}
    |p{\dimexpr1.9cm-2\tabcolsep-1.13\arrayrulewidth}|
    }
    \multicolumn{7}{|c|}{1}    \\
    \hline
    a & a & a & a & a & a & a   \\
    \hline
    \end{longtable}
    
    second table:
    
    %\begin{center}
    \begin{longtable}{
    | C{\dimexpr1.3cm-2\tabcolsep-1.25\arrayrulewidth}% 13cm
    | R{\dimexpr9.0cm-2\tabcolsep-1.25\arrayrulewidth}
    | R{\dimexpr2.42cm-2\tabcolsep-1.25\arrayrulewidth}
    | R{\dimexpr2.42cm-2\tabcolsep-1.25\arrayrulewidth} |
    }
    %\multicolumn{4}{|C{\dimexpr\linewidth-2\tabcolsep-2\arrayrulewidth}|}{2}
    \hline
    a & a & a & a   \\
    \hline
    \end{longtable}
    %\end{center}
    
    \begin{longtable}{
    | C{\dimexpr1.3cm-2\tabcolsep-1.25\arrayrulewidth}% 13cm
    | R{\dimexpr9.0cm-2\tabcolsep-1.25\arrayrulewidth}
    | R{\dimexpr2.42cm-2\tabcolsep-1.25\arrayrulewidth}
    | R{\dimexpr2.42cm-2\tabcolsep-1.25\arrayrulewidth} |
    }
    \multicolumn{4}{|C{\dimexpr\linewidth-2\tabcolsep-2\arrayrulewidth}|}{2}    \\
    \hline
    a & a & a & a   \\
    \hline
    \end{longtable}
    
    \end{document}
    

在此处输入图片描述

(红线表示文本区域的边界)。

没有多列单元格的第一个和第二个表格宽度不同。第一个表格行的用途不明确。看看第一个表格的第三个版本是否能达到您想要的效果。

相关内容