Beamer:为所有列设置全局 parskip

Beamer:为所有列设置全局 parskip

似乎parskip不会影响也讨论过的列这里。但是 Stefan 的解决方案似乎只在块环境中有效(我不想到处都添加块环境)。所以我想尝试用 修补列环境etoolbox。在这方面,我尝试将以下命令添加到序言中,但没有效果:

\documentclass{beamer}
\usepackage{etoolbox}
\setlength{\parskip}{1cm}
%\BeforeBeginEnvironment{column}{\setlength{\parskip}{2cm}}
\AtBeginEnvironment{column}{\setlength{\parskip}{2cm}}
\begin{document}
    \begin{frame}{Title}
        foo

        bar
    \end{frame}

    \begin{frame}{Title}
        \begin{columns}
            \begin{column}{\textwidth}
                foo

                bar
            \end{column}
        \end{columns}
    \end{frame}

    \begin{frame}{Title}
    \begin{columns}
        \begin{column}{\textwidth}\setlength{\parskip}{1cm}
            foo

            bar
        \end{column}
    \end{columns}
\end{frame}
\end{document}

平均能量损失

有没有办法在每一列中设置一个 parskip 以使其像 MWE 的最后一帧一样工作?

答案1

将命令添加到columns环境中不起作用,因为 beamer 不会将文本直接插入到列中,而是先创建minipages文本所在的位置。但您可以将命令添加\parskip到 minipages:

\documentclass{beamer}
\usepackage{etoolbox}
\setlength{\parskip}{1cm}

\makeatletter
\newcommand{\@minipagerestore}{\setlength{\parskip}{1cm}}
\makeatother

\begin{document}
    \begin{frame}{Title}
        foo

        bar
    \end{frame}

    \begin{frame}{Title}
        \begin{columns}
            \begin{column}{\textwidth}
                foo

                bar
            \end{column}
        \end{columns}
    \end{frame}

    \begin{frame}{Title}
    \begin{columns}
        \begin{column}{\textwidth}\setlength{\parskip}{1cm}%
            foo

            bar
        \end{column}
    \end{columns}
\end{frame}
\end{document}

在此处输入图片描述

相关内容