如何调整 longtable 以适应 linewidth

如何调整 longtable 以适应 linewidth

我正在使用 classicthesis,并且有一个相当复杂的整体文档,所以我不能真正发布 MWE(抱歉,我对 LaTeX 还不熟悉)。不过,我发布了一些我认为可能与表格相关的包。我的问题:我正在使用一个自动分布在多个页面上的 longtable。除了它超出文本的宽度(尽管使用 \linewidth 定义列),一切都运行良好。

您能帮助我找出我做错的地方或如何使表格宽度与线宽相匹配吗?

万分感谢!

\usepackage{calc, longtable, ltablex, booktabs,array, caption, enumitem}
\keepXColumns
\newcolumntype{x}[1]{>{\raggedright}p{#1}}

\begin{spacing}{.7}
\footnotesize
\begin{longtable}{x{0.35\textwidth} x{0.25\textwidth} x{0.4\textwidth}}
    \caption{Example table}\label{tab:example}  \\
    \toprule
    {\textbf{Column One}} & {\textbf{Column Two}} & {\textbf{Column Three}}
    \tabularnewline
    \midrule
    \endfirsthead
    %%%%
    \caption{Example table (cont.)}  \\
    \toprule
    {\textbf{Column One}} & {\textbf{Column Two}} & {\textbf{Column Three}}
    \tabularnewline
    \midrule
    \endhead
    %%%%
    \midrule[\heavyrulewidth]
    \multicolumn{3}{r}{\footnotesize\itshape Continue on the next page}
    \endfoot
    %%%%
    \bottomrule
    \endlastfoot
    %%%%

        Content & Content & Content   \tabularnewline
        Content & Content & Content   \tabularnewline

\end{longtable}
\end{spacing}

答案1

你有

\begin{longtable}
      {x{0.35\textwidth} x{0.25\textwidth} x{0.4\textwidth}}

但是每列\tabcolsep两侧都有 (默认 6pt) 空间,因此宽度会太宽 36pt。

尝试

\begin{longtable}
      {@{}x{0.35\textwidth} x{\dimexpr 0.25\textwidth - 24pt\relax} x{0.4\textwidth}@{}}

因此,您可以删除两侧的填充,@{}并在中间列中节省 24pt(或者当然,您可以以不同的方式分配它,并从每列中删除一些)

答案2

我将使用xltabular环境(包加载ltablex,但省去了添加的麻烦keepXColumns),并指定>{\hsize)xx\hsize 具有不同宽度的列):

\documentclass{report}
\usepackage{classicthesis}
\usepackage{array, setspace}
\usepackage{calc, longtable,xltabular, booktabs, array, caption, enumitem}
\usepackage{showframe}
\renewcommand{\ShowFrameLinethickness}{0.3pt}

\begin{document}

\mbox{}
\begin{spacing}{.7}
\footnotesize
\begin{xltabular}{\linewidth}{>{\hsize=1.05\hsize}X >{\hsize=0.75\hsize}X >{\hsize=1.20\hsize\arraybackslash}X}
    \caption{Example table}\label{tab:example} \\
    \toprule
    {\textbf{Column One}} & {\textbf{Column Two}} & {\textbf{Column Three}} \\
    \midrule
    \endfirsthead
    %%%%
    \caption{Example table (cont.)} \\
    \toprule
    {\textbf{Column One}} & {\textbf{Column Two}} & {\textbf{Column Three}} \\
    \midrule
    \endhead
    %%%%
    \midrule[\heavyrulewidth]
    \multicolumn{3}{r}{\footnotesize\itshape Continue on the next page}
    \endfoot
    %%%%
    \bottomrule
    \endlastfoot
    %%%%
        Content & Content & Content \\
        Content & Content & Content
\end{xltabular}
\end{spacing}

\end{document} 

在此处输入图片描述

相关内容