我正在使用 beamer,并且使用创建了两列
\begin{columns}
\column{.5\textwidth}
Column Number 1
\column{.5\textwidth}
Column Number 2
\end{columns}
我想在使用命令时控制这些列的顺序\pause
。使用\pause
before\column{.5\textwidth}
命令时,它会导致出现左侧的列,然后单击后,第二列就会出现。我怎样才能让 beamer 先绘制右列,然后绘制左列?
答案1
正如亨德里克 (Hendrik) 在评论中所说,\onslide
效果很好:
\documentclass{beamer}
\begin{document}
\begin{frame}
\begin{columns}
\onslide<2->{
\column{0.4\textwidth}
Foo
}
\onslide<1->{
\column{0.4\textwidth}
Bar and so on
}
\end{columns}
\end{frame}
\end{document}
右列将按照需要首先出现。
诀窍是将列从左到右排版,但是通过巧妙地使用覆盖,右侧列会首先出现...
答案2
假设您有最新版本的 bidi。这将使 beamer 列变为 RTL:
\makeatletter
\renewenvironment<>{columns}[1][]{%
\begin{actionenv}#2%
\def\beamer@colentrycode{%
\hboxR to\textwidth\bgroup%
\leavevmode%
\hskip-\beamer@leftmargin%
\nobreak%
\beamer@tempdim=\textwidth%
\advance\beamer@tempdim by\beamer@leftmargin%
\advance\beamer@tempdim by\beamer@rightmargin%
\hbox to\beamer@tempdim\bgroup%
\hbox{}\hfill\ignorespaces}%
\def\beamer@colexitcode{\egroup%
\nobreak%
\hskip-\beamer@rightmargin\egroup}%
\ifbeamer@centered\setkeys{beamer@col}{c}\else\setkeys{beamer@col}{t}\fi%
\setkeys{beamer@col}{#1}%
\par%
\beamer@colentrycode%
\def\beamer@colclose{}\ignorespaces}%
{\beamer@colclose\def\beamer@colclose{}\beamer@colexitcode\end{actionenv}}%
\renewcommand<>\beamer@columncom[2][\beamer@colmode]{%
\beamer@colclose%
\def\beamer@colclose{\end{minipage}\hfill\end{actionenv}\ignorespaces}%
\begin{actionenv}#3%
\setkeys{beamer@col}{#1}%
\begin{minipage}[\beamer@colalign]{#2}%
\leavevmode\raggedleft\beamer@colheadskip\ignorespaces}
\makeatother