\adjustwidth 仅适用于右边距

\adjustwidth 仅适用于右边距

table我有一个由、ThreePartTable和构成的(水平)大表格longtabu。我希望它适合一页。为此,我尝试使用 增加边距adjustwidth,然后使用 扩展表格的长度1.1\textwidth,请参阅下面的代码示例。

但是,所有调整似乎都应用于右边距,因此例如{adjustwidth}{-1cm}{}产生与 相同的输出adjustwidth{}{-1cm}。类似地,{adjustwidth}{-1cm}{-1cm}{adjustwidth}{-2cm}{}{adjustwidth}{}{-2cm}生成相同的输出,所有边距减少都在页面右侧进行,因此表格的原始左对齐保持不变。

底线是我想增加边距以允许表格适合一页,同时保持其在页面居中。有人能指出为什么下面的代码没有实现这一点吗?

代码示例:

\documentclass{article}

\usepackage{booktabs}
\usepackage{chngpage}
\usepackage{float}
\usepackage{longtable}
\usepackage{tabu}
\usepackage{threeparttablex}

\begin{document}

\begin{adjustwidth}{-1cm}{-1cm}
\begin{table}[H]
    \scriptsize
    \centering
    \begin{ThreePartTable}
    \begin{longtabu} to 1.1\textwidth
                    {X[0.5,C]
                     X[1.75,L] 
                     X[1.2,L]
                     X[1.175,L]
                     X[2.325,L] 
                     X[0.75,C]
                     X[0.9,C]}
    \rowfont[c]{\bfseries}
    Field1  
    & Field2
    & Field3
    & Field4
    & Field5
    & Field6\tnote{1} 
    & Field7\tnote{2,3} 
    \\
    \toprule
    \endhead
    \bottomrule
    \endfoot
    \bottomrule
    \\
    \endlastfoot

    Field1.Value1
    & Field2.Value1
    & Field3.Value1
    & Field4.Value1
    & Field5.Value1
    & Field6.Value1
    & Field7.Value1
    \\  

    [...]

    \bottomrule
    \end{longtabu}
        \begin{tablenotes}
        \item[1] FootNote1
        \item[2] FootNote2
        \item[3] Footnote3  
        \end{tablenotes}
    \end{ThreePartTable}
    \captionsetup{font=normal}
    \caption{Caption1}
    \label{tab:table_1}
\end{table}
\end{adjustwidth}

\end{document}

答案1

\adjustwidth作品里面表格环境。adjustwidth环境会更改环境内的文本块/边距,但table它是浮动的,会移动到已更改的边距之外(不知道它们)。以下是您的 MWE 的修改和扩展(但对我来说有问题longtabu),显示adjustwidth内部table确实有效。

% adjustwidthprob2.tex  SE 517141 adjustwidth & tables

\documentclass{article}
\usepackage{lipsum}
\usepackage{booktabs}
\usepackage{chngpage}
\usepackage{float}
\usepackage{longtable}
\usepackage{tabu}
\usepackage{threeparttablex}

\begin{document}

\lipsum[1]

%\begin{adjustwidth}{-1cm}{-1cm}
\begin{table}[H]
\begin{adjustwidth}{-1cm}{-1cm}
    \scriptsize
    \centering
    \begin{ThreePartTable}
    \begin{longtabu} to 1.1\textwidth
                    {X[0.5,C]
                     X[1.75,L] 
                     X[1.2,L]
                     X[1.175,L]
                     X[2.325,L] 
                     X[0.75,C]
                     X[0.9,C]}
    \rowfont[c]{\bfseries}
    Field1  
    & Field2
    & Field3
    & Field4
    & Field5
    & Field6\tnote{1} 
    & Field7\tnote{2,3} 
    \\
    \toprule
    \endhead
    \bottomrule
    \endfoot
    \bottomrule
    \\
    \endlastfoot

    Field1.Value1
    & Field2.Value1
    & Field3.Value1
    & Field4.Value1
    & Field5.Value1
    & Field6.Value1
    & Field7.Value1
    \\  

    [...]

    \bottomrule
    \end{longtabu}
        \begin{tablenotes}
        \item[1] FootNote1
        \item[2] FootNote2
        \item[3] Footnote3  
        \end{tablenotes}
    \end{ThreePartTable}
    \captionsetup{font=normal}
    \caption{Caption1}
    \label{tab:table_1}
\end{adjustwidth}
\end{table}
%\end{adjustwidth}

\lipsum[2]

\begin{table}
\begin{adjustwidth}{-1cm}{-1cm}
\centering
Start of table. \lipsum[1]
\caption{An odd table}
\end{adjustwidth}
\end{table}

\end{document}

答案2

一种解决方法是改用fullwidth包。还请注意,由于包更改了\textwidth,因此您应该不是将表格设置为有宽度1.1\textwidth但保持原样,\textwidth这样它就不会进一步溢出加宽的框。

\documentclass{article}
\usepackage{showframe}

\usepackage{booktabs}
\usepackage{float}
\usepackage{fullwidth}
\usepackage{longtable}
\usepackage{tabu}
\usepackage{threeparttablex}
\usepackage{caption}

\begin{document}

\begin{fullwidth}[leftmargin=-2cm, rightmargin=-2cm, width=\linewidth+4cm]
\begin{table}[H]
    \scriptsize
    \begin{ThreePartTable}
    \begin{longtabu} to \textwidth
                    {X[0.5,C]
                     X[1.75,L] 
                     X[1.2,L]
                     X[1.175,L]
                     X[2.325,L] 
                     X[0.75,C]
                     X[0.9,C]}
    \rowfont[c]{\bfseries}
    Field1  
    & Field2
    & Field3
    & Field4
    & Field5
    & Field6\tnote{1} 
    & Field7\tnote{2,3} 
    \\
    \toprule
    \endhead
    \bottomrule
    \endfoot
    \bottomrule
    \\
    \endlastfoot

    Field1.Value1
    & Field2.Value1
    & Field3.Value1
    & Field4.Value1
    & Field5.Value1
    & Field6.Value1
    & Field7.Value1
    \\  

    \bottomrule
    \end{longtabu}
        \begin{tablenotes}
        \item[1] FootNote1
        \item[2] FootNote2
        \item[3] Footnote3  
        \end{tablenotes}
    \end{ThreePartTable}
    \captionsetup{font=normal}
    \caption{Caption1}
    \label{tab:table_1}

\end{table}
\end{fullwidth}

\end{document}

输出如下所示(带框架)

在此处输入图片描述

答案3

  • 如果您喜欢在一页上有表格,那么您不需要longtable(它不应该在table环境内)
  • adjustwidth应该在table浮动环境中
  • 我不会使用tabu这个包。它没有得到维护,而且尽管新版article文档类修复了一些问题,但它仍然有缺陷
  • 列宽调整的总和应为整数(即​​ 7,在下面的 MWE 中,我认为所有列的宽度相等。例如,您可以更改宽度
>{\hsize=0.5\hsize}C

您应该遵守规则,即列宽调整的总和应为整数(即​​ 7,因为您有 7 列)

梅威瑟:

\documentclass{article}
\usepackage{ragged2e}   % <---
\usepackage{booktabs, 
            tabularx,   % <---
            threeparttablex}
\newcolumntype{C}{>{\Centering\hspace{0pt}}X}   % <---
\newcolumntype{L}{>{\RaggedRight\hspace{0pt}}X} % <---
\newcolumntype{R}{>{\RaggedLeft\hspace{0pt}}X}  % <---
\usepackage[strict]{chngpage}   % <---
\usepackage{caption}            % <---

%---------------- show page layout. don't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%
\usepackage{lipsum}

\begin{document}
    \lipsum[66]
\begin{table}[ht]
    \scriptsize
    \centering
\begin{adjustwidth}{-1cm}{-3cm}
    \begin{ThreePartTable}
    \begin{tabularx}{\linewidth}{@{} C LLLL CC @{}}
    \toprule
\textbf{Field1} & \textbf{Field2}   & \textbf{Field3}   & \textbf{Field4}   & \textbf{Field5} 
                & \textbf{Field}\tnote{1}               & \textbf{Field7}\tnote{2,3}    \\
    \midrule
Field1.Value1
    & Field2.Value1
    & Field3.Value1
    & Field4.Value1
    & Field5.Value1
    & Field6.Value1
    & Field7.Value1 \\
    \bottomrule
    \end{tabularx}
        \begin{tablenotes}[flushleft,para]\footnotesize
        \item[1] FootNote1
        \item[2] FootNote2
        \item[3] Footnote3
        \end{tablenotes}
    \end{ThreePartTable}
    \captionsetup{font=normal}
    \caption{Caption1}
    \label{tab:table_1}
\end{adjustwidth}
\end{table}

\lipsum[67]
\end{document}

在此处输入图片描述

(红线表示页面布局)

相关内容