[Tex/LaTex] Differences and best practices: \onslide vs. \uncover, \onslide+ vs. \visible, \onslide* vs. \only

beamerbest practicesoverlays

Page 81 of the Beamer v3.20 user guide describes the behavior of the \onslide command. In particular, there are three forms when the optional text argument is given:

  • \onslide⟨overlay specification⟩{⟨text⟩},
  • \onslide+⟨overlay specification⟩{⟨text⟩}, and
  • \onslide*⟨overlay specification⟩{⟨text⟩}.

According to the user guide,

If a ⟨text⟩ argument is present, \onslide (without a ⟨modifier⟩) is mapped to \uncover, \onslide+ is mapped to \visible, and \onslide* is mapped to \only.

This raises three questions:

  • Is this mapping an exact correspondence?
  • If so, what is the point of allowing \onslide to accept an optional ⟨text⟩ argument: why not just require users to use \uncover, \visible, and \only directly?
  • Also, if so, is there any reason to prefer one form over the other as a best practice?

Best Answer

If {text} is present and indeed starts with a brace, \onslide will just fall through to \only, \visible or \uncover, respectively.

However if there is no brace, it will fall though to \only, \beamer@noargsvisibleonslide and \beamer@noargsonslide which I vaguely presume are the switch variants of \visible and \uncover. (I really don't like the "can be switch or have an argument" style, so I'm not very motivated to dig deeper into this right now. ;) )