我有一张类似于矩阵的表格,但多了一些强调的线条。该表格还可能包含frac{}
确实适合单元格但有点“碰到”边界的项目。
问题是,我有不少这样的表格。有没有一种简单的方法可以增加所有这些表格的填充?可能不用触及每一张表格?
一张说明该问题的图片:
其来源如下:
\begin{tabular}{c||c|c|c||c|c|c|c||c|c}
& $x_1$ & $x_2$ & $x_3$ & $x_4$ & $x_5$ & $x_6$ & $x_7$ & RS & Q \\ \hline \hline
$x_2$ & 0 & 1 & $\frac{1}{3}$ & $\frac{1}{3}$ & 0 & 0 & 0 & 50 & 150 \\ \hline
$x_5$ & 0 & 0 & $\frac{5}{6}$ & $-\frac{2}{3}$ & 1 & 0 & -0.5 & 20 & 24 \\ \hline
$x_6$ & 0 & 0 & $\frac{1}{12}$ & $-\frac{2}{3}$ & 0 & 1 & -0.25 & 25 & 300 \\ \hline
$x_1$ & 1 & 0 & 0.25 & 0 & 0 & 0 & 0.25 & 25 & 100 \\ \hline \hline
$-z$ & 0 & 0 & $\frac{79}{120}$ & $\frac{23}{30}$ & 0 & 0 & -0.575& -172.5 &
\end{tabular}
答案1
另一个答案中已经提到了更改乘法参数的可能性\arraystretch
。为了完整起见,我认为也有必要提及加法参数\extrarowheight
,其使用方法如下:
\usepackage{array}
\setlength\extrarowheight{2pt} % or whatever amount is appropriate
如果将这些命令包含在文档的前言中,所有和类似array
的tabular
环境(例如tabular
,,,,等)都会受到它们的影响。tabular*
tabularx
longtable
我忍不住要对表格的其他方面发表一些评论。首先,所有这些水平线和垂直线使表格看起来非常繁琐;然而,大量的线条可能并没有给表格的可读性带来多大提升。因此,我建议删除所有单垂直线和单水平线,并将所有双线改为单线。其次,当表格中包含数字信息时,以易于阅读的方式对齐数字非常重要。例如,带小数点的数字应在小数点处对齐;如果有些数字是负数,有些是正数,则以强调这一事实的方式对齐它们会很有帮助。
那么,我建议您这样呈现表格:
\documentclass{article}
\usepackage{dcolumn} % automatically loads the 'array' package
\newcolumntype{d}[1]{D{.}{.}{#1}}
\setlength{\extrarowheight}{2pt}
\begin{document}
$ \begin{array}{c | c c c | r c c d{2.3} | d{4.1} r @{}}
& x_1 & x_2 & x_3 & x_4 & x_5 & x_6
& \multicolumn{1}{c|}{x_7} & \multicolumn{1}{c}{RS} & Q \\
\hline
x_2 & 0 & 1 & \frac{1}{3} & \frac{1}{3} & 0 & 0 & 0 & 50 & 150\\
x_5 & 0 & 0 & \frac{5}{6} & -\frac{2}{3} & 1 & 0 & -0.5 & 20 & 24 \\
x_6 & 0 & 0 & \frac{1}{12} & -\frac{2}{3} & 0 & 1 & -0.25 & 25 & 300\\
x_1 & 1 & 0 & 0.25 & 0 & 0 & 0 & 0.25 & 25 & 100\\
\hline
-z & 0 & 0 & \frac{79}{120} & \frac{23}{30} & 0 & 0 & -0.575 & -172.5 &
\end{array} $
\end{document}
答案2
如果您\arraystretch
在序言中使用该参数,则所有表都将遵循该设置,如下所示
\documentclass{article}
\renewcommand{\arraystretch}{1.5}
\begin{document}
\begin{table}%
\centering
\begin{tabular}{c||c|c|c||c|c|c|c||c|c}
& $x_1$ & $x_2$ & $x_3$ & $x_4$ & $x_5$ & $x_6$ & $x_7$ & RS & Q \\ \hline \hline
$x_2$ & 0 & 1 & $\frac{1}{3}$ & $\frac{1}{3}$ & 0 & 0 & 0 & 50 & 150 \\ \hline
$x_5$ & 0 & 0 & $\frac{5}{6}$ & $-\frac{2}{3}$ & 1 & 0 & -0.5 & 20 & 24 \\ \hline
$x_6$ & 0 & 0 & $\frac{1}{12}$ & $-\frac{2}{3}$ & 0 & 1 & -0.25 & 25 & 300 \\ \hline
$x_1$ & 1 & 0 & 0.25 & 0 & 0 & 0 & 0.25 & 25 & 100 \\ \hline \hline
$-z$ & 0 & 0 & $\frac{79}{120}$ & $\frac{23}{30}$ & 0 & 0 & -0.575& -172.5 &
\end{tabular}
\caption{Some table}
\label{tab:1}
\end{table}
\end{document}
要使此更改保持局部性,您可以简单地将其放置在环境中table
,而不是前导码中,例如,就在\centering
命令之后。这将导致全局设置中的临时更改。
答案3
正如所提到的相关答案,arraystretch
引入了单元格内容垂直对齐的问题。
解决方案cellspace
是:
将以下内容放入序言中:
% Add vertical padding within each tabular cell. \usepackage[math]{cellspace} \cellspacetoplimit 4pt \cellspacebottomlimit 4pt
使用列说明符
Sl, Sc, Sr, Sp{...}
代替l, c, r, p
。(除非您正在使用
siunitx
包,在这种情况下使用Cl, Cc, Cr,
。这是因为Cp{...}
siunitx
包有自己的S
列类型,并注意cellspace
将的列类型重命名为C
。虽然似乎有些问题Cp{...}
,但似乎。)
比较:
上述代码:
\documentclass{article}
% Add vertical padding within each tabular cell.
\usepackage[math]{cellspace}
\cellspacetoplimit 4pt
\cellspacebottomlimit 4pt
\begin{document}
Default:
\begin{tabular}{|l|l|} \hline
$\Upsilon_3$ & Description [Units] \\\hline
$\Pi_i$ & Description [Units] \\\hline
\end{tabular}
\vspace{2em}
Arraystretch:
{\renewcommand{\arraystretch}{2}
\begin{tabular}{|l|l|} \hline
$\Upsilon_3$ & Description [Units] \\\hline
$\Pi_i$ & Description [Units] \rule{1em}{1em} \\\hline
$\Pi_i$ & Description [Units] \rule{1em}{2em} \\\hline
$\Pi_i$ & Description [Units] \rule{1em}{3em} \\\hline
$\Pi_i$ & Description [Units] \rule{1em}{4em} \\\hline
$\Pi_i$ & Description [Units] \rule{1em}{5em} \\\hline
\end{tabular}}
With \verb|cellspace| (don't forget the \verb|Sl| cell specifiers):
\begin{tabular}{|Sl|Sl|} \hline
$\Upsilon_3$ & Description [Units] \\\hline
$\Pi_i$ & Description [Units] \\\hline
\end{tabular}
\vspace{2em}
\begin{tabular}{|Sl|Sl|} \hline
$\Upsilon_3$ & Description [Units] \\\hline
$\Pi_i$ & Description [Units] \rule{1em}{1em} \\\hline
$\Pi_i$ & Description [Units] \rule{1em}{2em} \\\hline
$\Pi_i$ & Description [Units] \rule{1em}{3em} \\\hline
$\Pi_i$ & Description [Units] \rule{1em}{4em} \\\hline
$\Pi_i$ & Description [Units] \rule{1em}{5em} \\\hline
\end{tabular}
\end{document}
答案4
https://texfaq.org/FAQ-struttab讨论该问题。
它提到了 booktabs.sty、cellspace.sty、makecell.sty 和 tabls.sty
当然,通过使用所有这些水平规则,你确实会让问题看起来“超级糟糕”。booktabs 的文档解释了为什么它们并不像 Lamport 在乳胶书中想象的那么好。