如何强制 LaTeX 在考虑下标、上标等的情况下将表格中的数学公式垂直居中?从下面的输出可以看出,LaTeX 将垂直居中,$JV$
并在事后添加了波浪号、帽子和下标。结果是在帽子和波浪号下方有额外的空间,$JV$
而在帽子和波浪号上方有很少的空间。
\documentclass[xcolor=table,svgnames]{beamer}
\usepackage{booktabs}
\usepackage{amsmath}
\begin{document}
%==============================================================================%
\begin{frame}{}
\begin{table}
\begin{center}
\rowcolors{1}{}{RoyalBlue!20} % alternate row coloring
\newlength{\oldtabcolsep} % keep track of old \tabcolsep
\setlength{\oldtabcolsep}{\tabcolsep} % 6.0pt
\setlength{\tabcolsep}{0pt} % so coloring doesn't run off
% ends of the table
\renewcommand{\arraystretch}{1.3} % because math expressions
% almost run into each other
\begin{tabular}{l<{\hspace{\oldtabcolsep}}l<{\hspace{\oldtabcolsep}}l}
\toprule
Estimator & ME & MAE \\
\specialrule{\lightrulewidth}{0pt}{0pt} % so row-coloring aligns
\(\widehat{JV}_{\text{na\"{\i}ve}}\) & 4.37e-07 & 4.37e-07 \\
\(\widetilde{JV}_{\text{na\"{\i}ve}}\) & 3.88e-07 & 3.88e-07 \\
\(\widehat{JV}\) & 1.33e-06 & 1.33e-06 \\
\(\widetilde{JV}\) & 1.20e-06 & 1.20e-06 \\
\bottomrule
\end{tabular}
\end{center}
\end{table}
\end{frame}
\end{document}
答案1
您可以在每一行插入一个支撑,而不是作用于\arraystretch
:
\rowcolors{1}{}{RoyalBlue!20} % alternate row coloring
\newlength{\oldtabcolsep} % keep track of old \tabcolsep
\setlength{\oldtabcolsep}{\tabcolsep} % 6.0pt
\setlength{\tabcolsep}{0pt} % so coloring doesn't run off
% ends of the table
\newcommand{\mystrut}{\vrule height 20pt depth 10pt width 0pt }
\begin{tabular}
{>{\mystrut}l<{\hspace{\oldtabcolsep}}
l<{\hspace{\oldtabcolsep}}
l
}
\toprule
\multicolumn{1}{l}{Estimator\hspace*{\oldtabcolsep}} & ME & MAE \\
\specialrule{\lightrulewidth}{0pt}{0pt} % so row-coloring aligns
\(\widehat{JV}_{\text{na\"{\i}ve}}\) & 4.37e-07 & 4.37e-07 \\
\(\widetilde{JV}_{\text{na\"{\i}ve}}\) & 3.88e-07 & 3.88e-07 \\
\(\widehat{JV}\) & 1.33e-06 & 1.33e-06 \\
\(\widetilde{JV}\) & 1.20e-06 & 1.20e-06 \\
\bottomrule
\end{tabular}
由于支柱会自动插入到第一列,因此您必须在标题行中对其进行更正。此处设置的支柱尺寸被夸大了;也许令人满意的设置可能是
\newcommand{\mystrut}{\vrule height 3ex depth 1.5ex width 0pt }
答案2
到目前为止,您还没有给出任何反馈。现在我将把我的评论转为答案。
首先不要使用center
浮动环境中的环境。答案中给出了解释:我应该使用 center 还是 centering 来表示图形
我知道 beamerfigure
和 co. 内部不是 LaTeX 意义上的浮动环境。
包裹单元格空间:
cellspace 包的语法很简单,它只提供了 2 个长度和一个特殊的列前缀S
。
两个长度分别为\cellspacebottomlimit
和,\cellspacetoplimit
可以通过 进行更改\setlength
。在您的示例中,我将两个长度都设置为 5pt。
\documentclass[xcolor=table,svgnames]{beamer}
\usepackage{booktabs}
\usepackage{amsmath}
\usepackage{cellspace}
\begin{document}
%==============================================================================%
\begin{frame}{}
\begin{table}
\centering
\cellspacebottomlimit=5pt
\cellspacetoplimit=5pt
% \begin{center}
\rowcolors{1}{}{RoyalBlue!20} % alternate row coloring
\newlength{\oldtabcolsep} % keep track of old \tabcolsep
\setlength{\oldtabcolsep}{\tabcolsep} % 6.0pt
\setlength{\tabcolsep}{0pt} % so coloring doesn't run off
% ends of the table
\renewcommand{\arraystretch}{1.3} % because math expressions
% almost run into each other
\begin{tabular}{Sl<{\hspace{\oldtabcolsep}}l<{\hspace{\oldtabcolsep}}l}
\toprule
Estimator & ME & MAE \\
\specialrule{\lightrulewidth}{0pt}{0pt} % so row-coloring aligns
\(\widehat{JV}_{\text{na\"{\i}ve}}\) & 4.37e-07 & 4.37e-07 \\
\(\widetilde{JV}_{\text{na\"{\i}ve}}\) & 3.88e-07 & 3.88e-07 \\
\(\widehat{JV}\) & 1.33e-06 & 1.33e-06 \\
\(\widetilde{JV}\) & 1.20e-06 & 1.20e-06 \\
\bottomrule
\end{tabular}
% \end{center}
\end{table}
\end{frame}
\end{document}
结果如下图所示:
笔记:该软件包cellspace
与 不兼容siunitx
。如果您想同时使用这两个软件包,则必须创建自己的文件Mycellspace.sty
并将 的内容复制cellspace
到新文件中。现在您必须更改
\newcolumntype{S}[1]{>{\bcolumn #1\@nil}#1<{\ecolumn}}
到
\newcolumntype{O}[1]{>{\bcolumn #1\@nil}#1<{\ecolumn}}
您需要一个未知的列类型。
包裹禁忌:
tabu 包提供了更多的灵活性,如下所示。该包提供了长度\tabulinesep
和\extrarowsep
控制空间。在示例中,我设置了\tabulinesep=1.5mm
\documentclass[xcolor=table,svgnames]{beamer}
\usepackage{booktabs}
\usepackage{amsmath}
\usepackage{tabu}
\begin{document}
%==============================================================================%
\begin{frame}{}
\begin{table}
\centering
\tabulinesep=1.5mm
\rowcolors{1}{}{RoyalBlue!20} % alternate row coloring
\newlength{\oldtabcolsep} % keep track of old \tabcolsep
\setlength{\oldtabcolsep}{\tabcolsep} % 6.0pt
\setlength{\tabcolsep}{0pt} % so coloring doesn't run off
% ends of the table
\renewcommand{\arraystretch}{1.3} % because math expressions
% almost run into each other
\begin{tabu}{l<{\hspace{\oldtabcolsep}}l<{\hspace{\oldtabcolsep}}l}
\toprule
Estimator & ME & MAE \\
\specialrule{\lightrulewidth}{0pt}{0pt} % so row-coloring aligns
\(\widehat{JV}_{\text{na\"{\i}ve}}\) & 4.37e-07 & 4.37e-07 \\
\(\widetilde{JV}_{\text{na\"{\i}ve}}\) & 3.88e-07 & 3.88e-07 \\
\(\widehat{JV}\) & 1.33e-06 & 1.33e-06 \\
\(\widetilde{JV}\) & 1.20e-06 & 1.20e-06 \\
\bottomrule
\end{tabu}
\end{table}
\end{frame}
\end{document}
结果类似于cellspace
但适用于siunitx
: