如何使文档中的所有表格居中?

如何使文档中的所有表格居中?

背景

想要将所有表格置于浮点数的中心,而不必添加\centering到每个表格中。

想法

尝试了以下操作:

\let\originaltabular\tabular
\renewcommand\tabular{\centering\originaltabular}

它可以编译,但是表格仍然保持左对齐。

问题

如何编辑 LyX 文档的序言以使所有浮动表格居中?

答案1

如果您希望将所有 tabular 环境居中,我建议您使用不同的名称创建自己的环境,该名称称为 tabular。您可以使用它,而不必重新定义 tabular 本身。

但没问题,这是可以做到的。只需使用\renewenvironment,例如:

\let\originaltabular\tabular
\let\endoriginaltabular\endtabular
\renewenvironment{tabular}[1]{%
  \begingroup%
  \centering%
  \originaltabular{#1}}%
  {\endoriginaltabular\endgroup}

这是对您第一次尝试重新定义表格的补充。

您可以重新定义非常相似的浮动表环境:

\let\originaltable\table
\let\endoriginaltable\endtable
\renewenvironment{table}[1][ht]{%
  \originaltable[#1]
  \centering}%
  {\endoriginaltable}

您还可以使用etoolbox 修补表环境或者通过\centering以下方式附加到定义中:

\makeatletter
\g@addto@macro{\table}{\centering}
\makeatother

或者

\expandafter\def\expandafter\table\expandafter{\table\centering}

答案2

我没有用 LyX 测试过这一点,但\usepackage{floatrow}也将浮点内容居中。(对齐方式是可配置的,但这\centering是 floatrow 的默认行为。)

答案3

在 Lyx 列表中,我了解到序言中的以下内容将自动将浮动图形和表格的内容居中。它对我有用。

\usepackage{ifthen}
\renewenvironment{图}[1][]{%
 \ifthenelse{\equal{#1}{}}{%
   \@float{数字}
 }{%
   \@float{数字}[#1]%
 }%
 \定心
}{%
 \结束@float
}


\renewenvironment{表}[1][]{%
 \ifthenelse{\equal{#1}{}}{%
   \@float{表格}
 }{%
   \@float{表}[#1]%
 }%
 \定心
}{%
 \结束@float
}

相关内容