为什么溢出表不尊重 Beamer 的 t 类选项?

为什么溢出表不尊重 Beamer 的 t 类选项?

如果我使用 Beamer 的t类选项,那么框架应该与顶部对齐,溢出的内容应该继续向下,而不会影响最顶部内容的位置。但是当表格溢出时,Beamer 会突然部分忽略类t选项并让内容跳上来。是什么导致了这种行为?除了调整框架标记之外,还有其他更根本的方法来修复它吗?

在下面的 MWE 中,很明显,当添加第 15 行时,表格会跳转,而 lorem ipsum 段落不会跳转。我希望所有内容都像段落一样运行。由于这种行为也出现在列表中,尽管速度较慢,我怀疑它实际上可能成为胶水在桌子前面的垂直空间里,有人在捉弄我。

(请注意,我并不是想通过一些花哨的方法,比如缩小或划分到不同的框架中,将这些样板内容放入框架中。内容太高应该溢出,但我非常希望t当这种情况发生时能够尊重类选项。)

MWE 动画版

\documentclass[t]{beamer}
\begin{document}
  \begin{frame}{Test}
    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
  \end{frame}

  \begin{frame}{Test}
    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
  \end{frame}

  \begin{frame}{Test}
    \begin{table}
      \caption{Lorem ipsum dolor sit amet, consectetur adipisicing elit}
      \begin{tabular}{@{} r @{}}
        1 \\
        2 \\
        3 \\
        4 \\
        5 \\
        6 \\
        7 \\
        8 \\
        9 \\
        10 \\
        11 \\
        12 \\
        13 \\
        14 \\
      \end{tabular}
    \end{table}
  \end{frame}

  \begin{frame}{Test}
    \begin{table}
      \caption{Lorem ipsum dolor sit amet, consectetur adipisicing elit}
      \begin{tabular}{@{} r @{}}
        1 \\
        2 \\
        3 \\
        4 \\
        5 \\
        6 \\
        7 \\
        8 \\
        9 \\
        10 \\
        11 \\
        12 \\
        13 \\
        14 \\
        15 \\
      \end{tabular}
    \end{table}
  \end{frame}
\end{document}

答案1

beamer 类对表格环境的定义使用\begin{center} ...\end{center}将标题和表格居中。center 环境添加了垂直空间,因为它是作为列表环境实现的(并且还调用 \centering)。

\def\center{\trivlist \centering\item\relax}
\def\endcenter{\endtrivlist}

重新定义表环境仅使用\centering修复该问题。

图形环境也会出现同样的情况。参见https://tex.stackexchange.com/a/602685/161015

\documentclass[t]{beamer}

% *************************** added <<<<<<<<<<<<
\makeatletter
    \renewenvironment{table}[1][]{%
        \def\@captype{table}%
        \par\nobreak\centering} % before \par\nobreak\begin{center}\nobreak}
        {\par\nobreak} % before  {\par\nobreak\end{center}\nobreak}
\makeatother
% ***************************


\begin{document}
    \begin{frame}{Test}
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
    \end{frame}
    
    \begin{frame}{Test}
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
        
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
        
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
        
        Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
    \end{frame}
    
    \begin{frame}{Test}
        \begin{table}
            \caption{Lorem ipsum dolor sit amet, consectetur adipisicing elit}
            \begin{tabular}{@{} r @{}}
                1 \\
                2 \\
                3 \\
                4 \\
                5 \\
                6 \\
                7 \\
                8 \\
                9 \\
                10 \\
                11 \\
                12 \\
                13 \\
                14 \\
            \end{tabular}
        \end{table}
    \end{frame}
    
    \begin{frame}{Test}
        \begin{table}
            \caption{Lorem ipsum dolor sit amet, consectetur adipisicing elit}
            \begin{tabular}{@{} r @{}}
                1 \\
                2 \\
                3 \\
                4 \\
                5 \\
                6 \\
                7 \\
                8 \\
                9 \\
                10 \\
                11 \\
                12 \\
                13 \\
                14 \\
                15 \\
            \end{tabular}
        \end{table}
    \end{frame}
\end{document}

b

相关内容