我需要在表格中显示分数,并且需要设置
\renewcommand{\arraystretch}{2.3}
问题是并非所有行都包含分数,在这种情况下,下方和上方的空白太大。我可以用类似 之类的东西手动调整它\\[-2ex]
。这适用于中间情况,虽然有点不方便,但我不知道如何减少绝对顶部空间。
就像是
\vspace{-2ex}
没有效果。
最好的办法是能够更改单个表行的 arraystretch,但之后该命令无效\begin{tabular}
。我该如何解决这个问题?
平均能量损失
\documentclass{article}
\usepackage{amsmath}
\usepackage{booktabs}
\begin{document}
\begin{table}
\renewcommand{\arraystretch}{2.3}
\begin{tabular}{@{}c|l@{}}
\bfseries $R_x$ & Symbol\\
\hline\hline
$\dfrac{a}{b}$ & $ \dfrac{A}{B} $\\
$\dfrac{a}{b}$ & $ \dfrac{A}{B} $\\
$\dfrac{a}{b}$ & $ \dfrac{A}{B} $\\
\hline
\end{tabular}
\end{table}
\end{document}
使用 siunitx 的 MWE
\documentclass{article}
\usepackage{amsmath}
\usepackage{booktabs}
%\usepackage{siunitx}
\usepackage{wrapfig}
\usepackage{cellspace}
\setlength\cellspacetoplimit{4pt}
\setlength\cellspacebottomlimit{4pt}
\begin{document}
\begin{wrapfigure}[14]{R}{8.5cm}
\renewcommand{\arraystretch}{2.3}
\begin{tabular}{@{}Sc|Sl@{}}
\bfseries $R_x$ & Symbol\\
\hline\hline
$\dfrac{a}{b}$ & $ \dfrac{A}{B} $\\
some text & some other text \\
$\dfrac{a}{b}$ & $ \dfrac{A}{B} $\\
$\dfrac{a}{b}$ & $ \dfrac{A}{B} $\\
\hline
\end{tabular}
\end{wrapfigure}
\end{document}
答案1
最好的解决方案是使用cellspace
包:它定义了一个可调整的最小单元格周围的垂直填充。为此,您必须在列说明符前加上字母前缀S
(或者,C
如果您加载siunitx
)。
使用\arraystretch
,有两个缺点:首先,单元格内容不再垂直居中;其次,您必须通过反复试验来确定拉伸值——对内容的任何修改都可能导致新值,如下所示,其中我修改了一个分数,保留了您给出的值:
\documentclass{article}
\usepackage{amsmath}
\usepackage{booktabs, cellspace, hhline}
\setlength\cellspacetoplimit{4pt}
\setlength\cellspacebottomlimit{4pt}
\begin{document}
\begin{table}
\renewcommand{\arraystretch}{2.3}
\begin{tabular}{@{}c|l@{}}
\bfseries $R_x$ & Symbol \\
\hline\hline
$\dfrac{a}{b}$ & $ \dfrac{A}{B} $ \\
\hline
$\dfrac{a}{b}$ & $ \dfrac{A}{B + \cfrac{C}{D}} $ \\
\hline
$\dfrac{a}{b}$ & $ \dfrac{A}{B} $ \\
\hline
\end{tabular}
\hskip2cm
\begin{tabular}{@{}Sc|Sl@{}}
\bfseries $R_x$ & Symbol \\
\hline\hline
$\dfrac{a}{b}$ & $ \dfrac{A}{B} $ \\
\hline
$\dfrac{a}{b}$ & $ \dfrac{A}{B + \cfrac{C}{D}} $ \\
\hline
$\dfrac{a}{b}$ & $ \dfrac{A}{B} $ \\
\hline
\end{tabular}
\end{table}
\end{document}
答案2
与cellspace
包类似的结果,正如 Bernard 所建议的,您可以使用makecell
包获得:
\documentclass{article}
\usepackage{amsmath}
\usepackage{booktabs}
\usepackage{siunitx}
\usepackage{wrapfig}
\usepackage{makecell}% <-- for gaped cells
\begin{document}
\begin{wrapfigure}[14]{R}{8.5cm}
\setcellgapes{3pt}
\makegapedcells
\begin{tabular}{@{}>{$\displaystyle}c<{$}|>{$\displaystyle}l<{$}@{}}
R_x & \text{Symbol} \\
\hline\hline
\frac{a}{b} & \frac{A}{B} \\
\hline
\text{some text} & \text{some other text} \\
\hline
\frac{a}{b} & \frac{A}{B} \\
\hline
\frac{a}{b} & \frac{A}{B} \\
\hline
\end{tabular}
\end{wrapfigure}
\end{document}
笔记:
也不\makegapedcells
是在所有情况下都有效。例如,它阻止使用\colortbl
或[table]{xcolor}
包对行/列进行着色。
答案3
扩展nicematrix
为其环境(、、等)提供了键{NiceTabular}
和,其名称受包的参数和启发。还有设置和的键。{NiceArray}
{pNiceMatrix}
cell-space-top-limit
cell-space-bottom-limit
\cellspacetoplimit
\cellspacebottomlimit
cellspace
cell-space-limits
cell-space-top-limit
cell-space-bottom-limit
\documentclass{article}
\usepackage{nicematrix}
\begin{document}
\NiceMatrixOptions{cell-space-limits=4pt}
\begin{table}
\begin{NiceTabular}{@{}c|l@{}}
\RowStyle[bold]{}
$R_x$ & Symbol \\
\hline\hline
$\dfrac{a}{b}$ & $ \dfrac{A}{B} $ \\
\hline
$\dfrac{a}{b}$ & $ \dfrac{A}{B + \cfrac{C}{D}} $ \\
\hline
$\dfrac{a}{b}$ & $ \dfrac{A}{B} $ \\
\hline
\end{NiceTabular}
\end{table}
\end{document}
需要注意的是,这些参数也适用于类型的列S
,siunitx
而包
cellspace
不能对此类列起作用S
。