我有一个关于表格中每个单元格内容的垂直和水平居中的问题。理想情况下,我希望每个单元格都有固定的填充。
以下是当前结果:
如您所见,结果是水平居中,但没有垂直居中。
相关的 Latex 代码是:
\begin{table}[h!]
\begin{center}
\begingroup
\setlength{\tabcolsep}{6pt} % Default value: 6pt
\renewcommand{\arraystretch}{4} % Default value: 1
\begin{tabular}{|c|c|}
\hline
$\mathlarger{\int}_{l_{min}}^{l_{max}}C_{\ell,\text{gal,ph}} (\ell)\text{d}\ell$ & 6.75254172757782e-05 \\ \hline
$\Bigg[\mathlarger{\int}_{l_{min}}^{l_{max}}C_{\ell,\text{gal,ph}} (\ell)\text{d}\ell\Bigg]^{2}$ & 4.559681978267965e-09 \\ \hline
$\Bigg[\mathlarger{\int}_{l_{min}}^{l_{max}}C_{\ell,\text{gal,ph}} (\ell)\text{d}\ell\Bigg]^{-1}$ & 14809.238363029064 \\ \hline
$\dfrac{1}{ng} \quad \text{(str)}$ & 2.417598569737143e-07 \\ \hline
\end{tabular}
\endgroup
\end{center}
\end{table}
我希望获得帮助,以便正确地垂直和水平居中此表,并为每个单元格设置固定的填充。
答案1
我发现\arraystretch
在此类问题上并不总是可以预测的。我更喜欢包\addstackgap
中的宏stackengine
,它将垂直缓冲区放置在其参数的上方和下方(默认为 3pt)。
我冒昧地用min
和替换max
和\min
,\max
以使它们成为直立运算符。
\documentclass{article}
\usepackage{mathtools,relsize,stackengine}
%\setstackgap{S}{3pt}% CAN ADJUST THE VERTICAL GAP ADDED
\begin{document}
\begin{table}[h!]
\begin{center}
\begingroup
\setlength{\tabcolsep}{6pt} % Default value: 6pt
%\renewcommand{\arraystretch}{4} % Default value: 1
\begin{tabular}{|c|c|}
\hline
\addstackgap{$\mathlarger{\int}_{l_{\min}}^{l_{\max}}C_{\ell,\text{gal,ph}} (\ell)\text{d}\ell$} & 6.75254172757782e-05 \\ \hline
\addstackgap{$\Bigg[\mathlarger{\int}_{l_{\min}}^{l_{\max}}C_{\ell,\text{gal,ph}} (\ell)\text{d}\ell\Bigg]^{2}$} & 4.559681978267965e-09 \\ \hline
\addstackgap{$\Bigg[\mathlarger{\int}_{l_{\min}}^{l_{\max}}C_{\ell,\text{gal,ph}} (\ell)\text{d}\ell\Bigg]^{-1}$} & 14809.238363029064 \\ \hline
\addstackgap{$\dfrac{1}{ng} \quad \text{(str)}$} & 2.417598569737143e-07 \\ \hline
\end{tabular}
\endgroup
\end{center}
\end{table}
\end{document}
答案2
以下是使用cellspace
、makecell
或 的三种替代方案nicematrix
。
我还使用了\displaystyle
而不是\mathlarger
第一列中的数字,以及最后一列中的数字S
的类型列。siunitx
所有三个示例均产生以下输出:
\documentclass{article}
\usepackage{mathtools}
% only used in first example:
\usepackage[column=0]{cellspace}
\setlength{\cellspacetoplimit}{0.5\tabcolsep}
\setlength{\cellspacebottomlimit}{\cellspacetoplimit}
% only used in second example:
\usepackage{makecell}
\setcellgapes{0.5\tabcolsep}
% only used in third example:
\usepackage{nicematrix}
% used for improved output in second cell
\usepackage{siunitx}
\sisetup{table-align-exponent=false}
\begin{document}
\begin{table}[h!]
\centering
\begin{tabular}{|>{\(\displaystyle}0c<{\)}|S[table-format=1.15e-1]|}
\hline
\int_{l_{\min}}^{l_{\max}}C_{\ell,\text{gal,ph}} (\ell)\text{d}\ell & 6.75254172757782e-05 \\ \hline
\Bigg[\int_{l_{\min}}^{l_{\max}}C_{\ell,\text{gal,ph}} (\ell)\text{d}\ell\Bigg]^{2} & 4.559681978267965e-09 \\ \hline
\Bigg[\int_{l_{\min}}^{l_{\max}}C_{\ell,\text{gal,ph}} (\ell)\text{d}\ell\Bigg]^{-1} & {\num{14809.238363029064}} \\ \hline
\dfrac{1}{ng} \quad \text{(str)} & 2.417598569737143e-07 \\ \hline
\end{tabular}
\end{table}
\begin{table}[h!]
\centering
\makegapedcells
\begin{tabular}{|>{\(\displaystyle}c<{\)}|S[table-format=1.15e-1]|}
\hline
\int_{l_{\min}}^{l_{\max}}C_{\ell,\text{gal,ph}} (\ell)\text{d}\ell & 6.75254172757782e-05 \\ \hline
\Bigg[\int_{l_{\min}}^{l_{\max}}C_{\ell,\text{gal,ph}} (\ell)\text{d}\ell\Bigg]^{2} & 4.559681978267965e-09 \\ \hline
\Bigg[\int_{l_{\min}}^{l_{\max}}C_{\ell,\text{gal,ph}} (\ell)\text{d}\ell\Bigg]^{-1} & {\num{14809.238363029064}} \\ \hline
\dfrac{1}{ng} \quad \text{(str)} & 2.417598569737143e-07 \\ \hline
\end{tabular}
\end{table}
\begin{table}[h!]
\centering
\begin{NiceTabular}[cell-space-limits=0.5\tabcolsep]{>{\(\displaystyle}c<{\)}S[table-format=1.15e-1]}[hvlines]
\int_{l_{\min}}^{l_{\max}}C_{\ell,\text{gal,ph}} (\ell)\text{d}\ell & 6.75254172757782e-05 \\
\Bigg[\int_{l_{\min}}^{l_{\max}}C_{\ell,\text{gal,ph}} (\ell)\text{d}\ell\Bigg]^{2} & 4.559681978267965e-09 \\
\Bigg[\int_{l_{\min}}^{l_{\max}}C_{\ell,\text{gal,ph}} (\ell)\text{d}\ell\Bigg]^{-1} & {\num{14809.238363029064}} \\
\dfrac{1}{ng} \quad \text{(str)} & 2.417598569737143e-07 \\
\end{NiceTabular}
\end{table}
\end{document}