Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

I am using beamer and I have created two columns using

\begin{columns} 
 \column{.5\textwidth}
Column Number 1 
 \column{.5\textwidth}
Column Number 2 
\end{columns}

And I'd like to control the order of these columns when using the \pause command. When using the \pause before \column{.5\textwidth} command, it would cause the column on the left to be appeared and then after clicking or so, the second column will appear. How can I make beamer first draw the right column and then draw the left column?

share|improve this question
2  
Does \onslide<> help you? –  Hendrik Vogt Jan 21 '11 at 11:04
1  
Well, what you really want to do is making beamer column RTL so that first column appears on RHS and the second column on the left of the previous one while in beamer columns are typeset LTR, first column is on LHS and next is to the right of previous one. Therefore you would need to hack column in beamer so that they are typeset RTL not LTR. –  IRAN Jan 21 '11 at 11:33
add comment

2 Answers

up vote 4 down vote accepted

As Hendrik said in the comments, \onslide works fine:

\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}

The right column appears first as desired.

The trick is that the columns are typeset left to right, but with nifty use of overlays, the right hand column appears first...

share|improve this answer
add comment

Suppose you have a recent version of bidi. This will make beamer columns 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
share|improve this answer
    
When compiling this code, the line {\beamer@colclose\def\beamer@colclose{}\beamer@colexitcode\end{actionenv}}% shows error, saying command beamerx@col... already defined. could it be the problem of xelatex, cause I am using it to compile it. –  Yasser Sobhdel Jan 21 '11 at 13:35
    
I am not sure. Maybe some beamer experts can comment why the error happens when \renewenvironment or \renewcommand is used. –  IRAN Jan 21 '11 at 16:06
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.