\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
环境应该在数学模式下使用;它们的l
、c
和r
对齐说明符的工作方式与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
,其默认值分别为5pt
和6pt
。如果表中有很多列,您可能会开始注意到差异。
答案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}