我在这里报告一个问题,这个问题(在某种程度上)是由另一个 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}