![居中和 \MakeUppercase 带换行符](https://linux22.com/image/235594/%E5%B1%85%E4%B8%AD%E5%92%8C%20%5CMakeUppercase%20%E5%B8%A6%E6%8D%A2%E8%A1%8C%E7%AC%A6.png)
我希望作者列表在我的标题页上居中显示,大写并垂直列出。我的 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
宏需要。