将比文本列宽的表格居中

Posted

技术标签:

【中文标题】将比文本列宽的表格居中【英文标题】:Centering a table wider than the text column 【发布时间】:2010-10-17 21:08:54 【问题描述】:

我在我的 LaTeX 文档中包含了一个表格,如果表格不比其上方的文本列宽,则居中效果很好,但是当表格更宽时,表格的左侧会粘在左侧文本列的宽度,而表格的附加宽度在页面的右侧,如何使表格居中?

【问题讨论】:

【参考方案1】:

我建议尝试chngpage 包。

\documentclassarticle

% allows for temporary adjustment of side margins
\usepackagechngpage

% provides filler text
\usepackagelipsum

% just makes the table prettier (see \toprule, \bottomrule, etc. commands below)
\usepackagebooktabs

\begindocument

\lipsum[1]% just a paragraph of filler text

\medskip% adds some space before the table
\beginadjustwidth-1in-1in% adjust the L and R margins by 1 inch
  \begintabularll
    \toprule
    Sequence & Wide column \\
    \midrule
    First & Vestibulum porta ultricies felis. In nec mi. \\
    Second & Nam vestibulum auctor nibh. In eleifend, 
    lacus id tristique ullamcorper, mauris urna convallis elit. \\
    Third & Ut luctus nisi quam lobortis magna. Aenean sit amet odio 
   et sapien rutrum lobortis. \\ 
    Fourth & Integer dictum accumsan purus. Nullam erat ligula,
    dictum sed, feugiat nec, faucibus id, ipsum. \\
    \bottomrule
  \endtabular
\endadjustwidth
\medskip% adds some space after the table

\noindent\lipsum[2]% just a paragraph of filler text

\enddocument

chngpage 包的文档位于chngpage.sty 文件的底部。我已经提取了adjustwidth 环境的文档:

在 adjustwidth 环境中 左右边距可以是 调整。环境需要一个 可选参数和两个必需的 长度参数:

\beginadjustwidth[]leftmarginrightmargin

A positive length value will increase the relevant margin

(缩短文本行)而 负长度值会减少 边距(加长文本行)。 一个空的长度参数意味着没有 更改为边距。在......的最后 边距恢复到的环境 它们的原始值。

例如,扩展文本 到右边距:

\beginadjustwidth-8em

可选的任何外观 论点(即使只是[])将导致 要切换的边距值 在奇数页和偶数页之间。

如果正在设置文档 双边可能是有利的 有任何更宽的文本延伸到 外边距。这可以通过 可选参数,如:

\beginadjustwidth[]-8em

调整文本 水平居中于 任何周围的文字,边距 应该同样调整:

\beginadjustwidth-4em-4em

【讨论】:

很好的答案。一个警告:你最好使用较新的“changepage”包,它几乎相同,但使用与 memoir 类相同的接口。均出自同一作者。 威尔,没错。但是由于changepage 包太新了,我在这里使用了chngpage 包,因为它带有所有的LaTeX 发行版。对于 Zequj,adjustwidth 环境的语法在 chngpagechangepage 包之间略有不同。 有没有办法让它与 tabularx 环境一起工作?【参考方案2】:

Latex:居中表格大于文本宽度

通常,您可以使用 \center 使表格居中。但是当表格长于 \textwidth 时,它将与左侧边距对齐。您可以临时调整文本宽度。

% allows for temporary adjustment of side margins
\usepackagechngpage

\begintable
    \beginadjustwidth-.5in-.5in  
        \begincenter
        \begintabular|c|
            \hline
And here comes a very long line. And here comes a very long line. And here comes a very long line.  \\
            \hline
        \endtabular 

        \captionThis Table is longer than the text width. And its caption is really long, too. This Table is longer than the text width. And its caption is really long, too. This Table is longer than the text width. And its caption is really long, too. This Table is longer than the text width. 
        \labelmyTable
        \endcenter
    \endadjustwidth
\endtable

【讨论】:

在 Stack Overflow 上对包含有据可查来源的外部引用表示赞赏,但重要的是在您的答案中包含来自外部来源的最重要/相关的 sn-ps 并提供有关如何使用的上下文回答这个问题,因为如果该链接失效(服务器宕机等),那么您的答案将变得毫无用处。【参考方案3】:

如果您使用的是 \table 浮点数,则 \beginadjustwidth ... \endadjustwidth 必须包含在其中。

【讨论】:

【参考方案4】:

在图形中,图形环境必须包含 adjustwidth 环境。此外,caption 应保留在此环境之外以与图形的整体宽度对齐:

\beginfigure[h]
  \beginadjustwidth-1in-1in% adjust the L and R margins by 1 inch
    \centering
    \includegraphics[scale=0.44]res/sth.png
  \endadjustwidth
  \captionsth
  \labelfig:sth
\endfigure

【讨论】:

【参考方案5】:

您使用的是多列文档吗?所以,考虑table* 变体环境。

在单列环境中,您的选项运行到:

增加textwidth。但是出于良好的人体工程学原因选择了默认边距,因此除了最小的调整之外,不鼓励这样做。 减小表格中的文本大小(即\small 甚至\footnotesizetabular 环境中)。同样,这不是最佳的。 按照the link Stephan202 gave 中的建议使用rotating package。我在我的论文中将它用于几个非常大的表(只有 p 定位选项),结果非常好。

【讨论】:

以上是关于将比文本列宽的表格居中的主要内容,如果未能解决你的问题,请参考以下文章

LibreOffice 4.1 Writer:调整表格列宽的宏

devpress grid表格自适应列宽的问题

如何在 CSS 中制作具有相同列宽的表格?

EXCEL里面如何设置能把行高和列宽的长度固定?

基础固定列宽的表格及示例演示

如何制作具有固定列宽的 chrome 尊重表