如何在多个表中重复使用相同的表对齐规范?

如何在多个表中重复使用相同的表对齐规范?
\documentclass{article}
\usepackage{array}

\begin{document}

\begin{table}
  \begin{tabular}{|>{$}c<{$}|>{$}c<{$}|}
     1 & 2 \\
  \end{tabular}
\end{table}

\begin{table}
  \begin{tabular}{|>{$}c<{$}|>{$}c<{$}|}
    3 & 4 \\
  \end{tabular}
\end{table}

\end{document}

我是 LaTeX 新手。我有一个 LaTeX 文件,其中包含许多大型表格,每个表格都包含大量列。所有表格都具有相同类型的列,并且需要类似的对齐方式和列宽。我正在寻找一种简单的方法来为所有表格指定一个通用的对齐指令(|>{$}c<{$}|>{$}c<{$}|在上面的例子中)。有没有办法指定和重用字符串|>{$}c<{$}|>{$}c<{$}|(使用\newcommand\let\def等),以便我可以轻松地在所有表格中复制行为?

答案1

最简单的方法是定义一个新的列类型,对于大量的列,利用

*{<number>}{<col specs>}

例子

\documentclass{article}
\usepackage{array}
\newcolumntype{C}{>{$}c<{$}}

\begin{document}

\begin{table}
\begin{tabular}{|*{2}{C|}}
1 & 2 \\
\end{tabular}
\end{table}

\begin{table}
\begin{tabular}{|*{4}{C|}}
3 & 4 & 5 & 6\\
\end{tabular}
\end{table}

\end{document}

但是,我不推荐“带格表格”:表格不是工作表屏幕。看看booktabs软件包文档举一些例子。

答案2

\newcolumntype包中定义的列类型array可以覆盖多个列。此外,它还可以接受参数,例如:

\documentclass{article}
\usepackage{array}

\newcolumntype{A}[1]{|*{#1}{>{$}c<{$}|}}

\begin{document}

  \begin{tabular}{A{2}}
     1 & 2 \\
  \end{tabular}

  \bigskip

  \begin{tabular}{A{4}}
    1 & 2 & 3 & 4 \\
  \end{tabular}

\end{document}

结果

答案3

由于您的所有表格似乎都包含数学模式材料,因此您应该考虑从环境切换tabular到环境array。LaTeXarray环境应该在数学模式下使用;它们的lcr对齐说明符的工作方式与tabular环境中的对应说明符完全相同,只是因为它们已经处于数学模式,所以不需要诉诸诸如 之类的构造>{$}c<{$}\hline\cline命令在环境中按预期工作array

在此处输入图片描述

\documentclass{article}
\begin{document}
\begin{table}
\caption{A first table}
\[
  \begin{array}{|c|c|}
     \hline
     1 & 2 \\
     \hline
  \end{array}
\]
\end{table}

\begin{table}[h]
\caption{A second table}
\[  
  \begin{array}{|c|c|}
    \hline
    -3 & -4 \\
    \hline
  \end{array}
\]
\end{table}
\end{document}

tabular和环境之间还有一个相当微妙的区别array:默认的列间空白量。这些量由参数\arraycolsep和控制\tabcolsep,其默认值分别为5pt6pt。如果表中有很多列,您可能会开始注意到差异。

答案4

以下是如何将表格的固定部分变成环境的示例。有一个可选参数,即列数 – 默认为 4:

        \documentclass[12pt]{article}

         \usepackage[utf8]{inputenc}
        \usepackage{array}

        \pagestyle{empty}
        \raggedbottom

        \newenvironment{mytable}[1][4]{%
        \begin{table}[!h]
        \centering\renewcommand{\arraystretch}{1.25}
        \begin{tabular}{|*{#1}{>{$}c<{$}|}}
        \hline}%
        {\\\hline\end{tabular}
        \end{table}}%

        \begin{document}

        With the default number of columns:
        \begin{mytable}
        1 & 2 & 3 & 4 \\
        5 & 6 & 7 & 8
        \end{mytable}

        and with 10: 
        \begin{mytable}[10]
        1 & 2 & 3 & 4  & 5 & 6 & 7 & 8  & 9  & 10\\
        2 & 3 & 5 & 7 & 11 & 13 & 17 & 19 & 23 & 29
        \end{mytable}

        \end{document}

在此处输入图片描述

相关内容