我正在开发一个 beamer 模板,但一直无法找到自定义表格水平对齐的方法。更准确地说,我试图添加带有标题的表格,但同时又试图避免表格居中。假设我有一种情况,我希望我的表格在当前幻灯片上左对齐或右对齐。对于报告或任何其他书面文件,水平居中是有意义的,我知道这一点,但在 beamer 中,有时充分利用幻灯片上(很少的)可用空间很重要。
此外,如果可以指定幻灯片上表格的绝对定位(例如通过使用坐标),我会非常高兴。
我找不到避免使用表格环境 (\begin{table}...) 的方法。在我看来,这个环境对于 LaTeX 创建表格标题是必需的。但是,我怀疑我错了。我的另一个限制是,我不想使用列环境 (\begin{columns}...) 来实现表格的水平定位。
这是一个 MWE:(为了满足我的需求,我喜欢使用 NiceTabular 环境)
\documentclass[aspectratio=169,xcolor=table,12pt]{beamer}
% compile in pdfLaTeX
\usepackage{caption}
\usepackage{booktabs}
\usepackage{nicematrix}
\NiceMatrixOptions{cell-space-limits = 2pt}
\definecolor{tableGreyHeaderBg}{RGB}{135,135,135}
\definecolor{tableGreyCellBg}{RGB}{227,227,227}
\definecolor{tableGreyLines}{RGB}{135,135,135}
\definecolor{tableGreyCellFg}{RGB}{127,127,127}
\begin{document}
\begin{frame}[t]{Tables}
\begin{table}[htbp!]%
\captionsetup{width=.35\textwidth}
\noindent\caption{This is a table caption.}%
\begin{NiceTabular}[c]{wc{1.0cm}wc{1.0cm}wc{1.0cm}wc{1.0cm}}[rules/color=tableGreyLines]
\CodeBefore
\rowcolor{tableGreyHeaderBg}{1}
\rowcolors{2}{}{tableGreyCellBg}
\Body
\toprule[1.5pt]
\RowStyle{\color{white}}H1 & H2 & H3 & H4 \\
\arrayrulecolor{white}\toprule[1.5pt]
\RowStyle[nb-rows=*]{\color{tableGreyCellFg}}Cell 1 & Cell 2 & Cell 3 & Cell 5 \\
\midrule
Cell 5 & Cell 6 & Cell 7 & Cell 8 \\
\midrule
Cell 9 & Cell 10 & Cell 11 & Cell 12 \\
\bottomrule
\end{NiceTabular}%
\end{table}
\end{frame}
\end{document}
我将非常感激任何帮助或提示,以便我解决这个问题。谢谢
谨致问候 Konrad
答案1
您不一定需要表格环境来添加标题。您已加载的 caption 包具有\captionof{...}{...}
允许您在没有表格(或图形)环境的情况下添加标题的宏。
然而,对于 beamer 的特殊情况,默认情况下它不会对字幕进行编号,您可以将它们设置为普通文本,例如:
\documentclass[aspectratio=169,xcolor=table,12pt]{beamer}
% compile in pdfLaTeX
\usepackage{caption}
\usepackage{booktabs}
\usepackage{nicematrix}
\NiceMatrixOptions{cell-space-limits = 2pt}
\definecolor{tableGreyHeaderBg}{RGB}{135,135,135}
\definecolor{tableGreyCellBg}{RGB}{227,227,227}
\definecolor{tableGreyLines}{RGB}{135,135,135}
\definecolor{tableGreyCellFg}{RGB}{127,127,127}
\newcommand{\mycaption}[2]{%
{%
\usebeamercolor[fg]{caption name}%
\usebeamerfont*{caption name}%
\csname#1name\endcsname%
\usebeamertemplate{caption label separator}%
}%
#2\par
}
\begin{document}
\begin{frame}[t]{Tables}
\mycaption{table}{This is a table caption}
\begin{NiceTabular}[c]{wc{1.0cm}wc{1.0cm}wc{1.0cm}wc{1.0cm}}[rules/color=tableGreyLines]
\CodeBefore
\rowcolor{tableGreyHeaderBg}{1}
\rowcolors{2}{}{tableGreyCellBg}
\Body
\toprule[1.5pt]
\RowStyle{\color{white}}H1 & H2 & H3 & H4 \\
\arrayrulecolor{white}\toprule[1.5pt]
\RowStyle[nb-rows=*]{\color{tableGreyCellFg}}Cell 1 & Cell 2 & Cell 3 & Cell 5 \\
\midrule
Cell 5 & Cell 6 & Cell 7 & Cell 8 \\
\midrule
Cell 9 & Cell 10 & Cell 11 & Cell 12 \\
\bottomrule
\end{NiceTabular}%
\raggedleft
\mycaption{table}{This is a table caption}
\begin{NiceTabular}[c]{wc{1.0cm}wc{1.0cm}wc{1.0cm}wc{1.0cm}}[rules/color=tableGreyLines]
\CodeBefore
\rowcolor{tableGreyHeaderBg}{1}
\rowcolors{2}{}{tableGreyCellBg}
\Body
\toprule[1.5pt]
\RowStyle{\color{white}}H1 & H2 & H3 & H4 \\
\arrayrulecolor{white}\toprule[1.5pt]
\RowStyle[nb-rows=*]{\color{tableGreyCellFg}}Cell 1 & Cell 2 & Cell 3 & Cell 5 \\
\midrule
Cell 5 & Cell 6 & Cell 7 & Cell 8 \\
\midrule
Cell 9 & Cell 10 & Cell 11 & Cell 12 \\
\bottomrule
\end{NiceTabular}%
\end{frame}
\end{document}