居中和 \MakeUppercase 带换行符

居中和 \MakeUppercase 带换行符

我希望作者列表在我的标题页上居中显示,大写并垂直列出。我的 documentclass 包含如下部分

\begin{center}
...
\renewcommand{\and}{\\}\MakeUppercase{\@author}
...
\end{center}

但是这种特殊的组合或换行符、MakeUppercase 和居中会导致错误;\@icentercr doesn't match its definition

一个简单的例子是

\documentclass{article}
\newcommand{\mytext}{Foo \\ Bar}
\begin{document}
\begin{center}
 \MakeUppercase{\mytext}
\end{center}
\end{document}

答案1

TeX 命令\uppercase运行无错误:

\uppercase{Foo \\ Bar}

输出为:

酒吧

如果 LaTeX 命令可以工作,我更喜欢它而不是 TeX 命令,但由于它在这里不起作用,我们可以更深入地研究 TeX 命令。也许你对textcase包,这也有助于克服一些大小写转换问题。

使用textcase换行符可以进行保护;

\begin{center}
\renewcommand{\and}{\NoCaseChange{\\}}
\MakeTextUppercase{\@author}
\end{center}

答案2

虽然 Stefan Kottwitz 的答案确实纠正了这个问题,但它对问题的诊断是错误的。问题不在于大小写:而是 的定义\\通常是健壮的,但被宏重新定义\centering为脆弱的东西。请注意,以下 MWE 工作正常:

\documentclass{article}
\newcommand{\mytext}{Foo \protect\\ Bar}
\begin{document}
\begin{center}
 \MakeUppercase{\mytext}
\end{center}
\end{document}

大概 TeX\uppercase宏不需要强大的参数,而 while\MakeUppercase宏需要。

相关内容