12

It seems that \em and \emph do not alternate between itshape and normal shape. How can this be restored?

Test case:

\documentclass{beamer}
\begin{document}
\frame{\em abc \emph{def \emph{ghi} jkl} mno}
\end{document}

With "article" it works as expected.

This is beamer 2011/09/12 development version 3.20.

8
  • 2
    Almost certainly this is one of the many things that Till didn't allow for when writing beamer, I guess here as it likely use cases are pretty rare.
    – Joseph Wright
    Jan 5, 2013 at 9:47
  • Before anything else, remember that a change between rm and it shapes isn't as visible on a presentation as on a paper, that's why beamer defines the command \alert. About your problem, nesting emph commands should be used to over-emphasize a part of text, not to make the text back to its default level of emphasization, so defining a second emphasize command for that purpose would be a solution. In case what you want is simply to come back to the default level, the natural way of doing so is to close the macro and open a second one.
    – T. Verron
    Jan 5, 2013 at 10:00
  • The problem is not on the use of \em and \emph. It is just for nested \emphs.
    – Guido
    Jan 5, 2013 at 10:02
  • @JosephWright I frequently rely on nested \emphs.
    – user10274
    Jan 5, 2013 at 10:49
  • @T.Verron Creating a second command defeats the purpose. If, for some reason, you decide to remove the top-level emphasis command, you have to change the status of the second-level command to top-level command. If the second-level command is visible, this may not be a problem and you may spot it. However, if it's the result of a macro call, you may very well not notice it.
    – user10274
    Jan 5, 2013 at 10:51

1 Answer 1

12

beamerbaseoverlay.sty contains

\newcommand<>{\emph}[1]{{\only#2{\itshape}#1}}

so \emph only produces italic shape. However, \em is not changed and you can write

\documentclass{beamer}

\begin{document}
\frame{\em abc {\em def {\em ghi} jkl} mno}
\end{document}

giving

Sample output

which produces the shapes you expect, but is not overloaded with the overlay options beamer provides in its modified \emph. The overlay options mean that you can write \emph<3>{text} to print the text on all slides but italise it only on slide 3. If you are willing to forego this functionality and just want \emph to behave like {\em ...} then you can put

\renewcommand<>{\emph}[1]{{\em #1}}

in your preamble. Added: As you comment, the above may be combined to get the overlay behaviour via:

\renewcommand<>{\emph}[1]{{\only#2{\em}#1}}

As other posters note, often one would prefer to use beamer commands such as \alert for extra contrast in presentations.

1
  • Thanks, I have chosen to reimplement \emph with \renewcommand<>{\emph}[1]{{\only#2{\em}#1}} because (i) I want \emph and I consider it a bug that Beamer turns the feature off without saying, and (ii), yet I want to use the <> features.
    – akim
    Jan 6, 2013 at 11:09

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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