Beamer 与 \xdef 与 \underline

Beamer 与 \xdef 与 \underline

我在这里报告一个问题,这个问题(在某种程度上)是由另一个 LaTeX 论坛的用户 Blitz 发现的这里

考虑 MWE

\documentclass{beamer}
\begin{document}
\begin{frame}
\frametitle{What's going on here?}
\xdef\mytext{\underline{duck}}
\underline{underline is not the problem}
\end{frame}
\end{document}

在我的 TeXLive 2017 发行版中,它会抛出错误

! Use of \beamer@@frametitle doesn't match its definition.
\new@ifnextchar ...served@d = #1\def \reserved@a {
                                                  #2}\def \reserved@b {#3}\f...
l.7 \end{frame}

如果我用 替换\xdef\def则不会出现错误,而当我不使用\underline而只使用 或 时,\textbf则一切正常。经过一段时间的练习后,我的印象是,如果同时使用\xdef和 ,则会出现错误。\underline

问题:为什么会这样?如何解决?

答案1

\underline\edef在 beamer 中是一个脆弱的命令并且任何这样的命令都会在或\xdef或任何其他移动参数中产生或多或少的任意错误。

目前还不清楚为什么\xdef要使用,但你可以\underline\xdef\noexpand

\documentclass{beamer}
\begin{document}
\begin{frame}
\frametitle{What's going on here?}
\xdef\mytext{\noexpand\underline{duck}}
\underline{underline is not the problem}
\end{frame}
\end{document}

相关内容