LaTeX Beamer – 表格的水平对齐

LaTeX Beamer – 表格的水平对齐

我正在开发一个 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}

在此处输入图片描述

相关内容