![在 \makebox 上应用 \MakeUppercase 会使文本消失](https://linux22.com/image/470335/%E5%9C%A8%20%5Cmakebox%20%E4%B8%8A%E5%BA%94%E7%94%A8%20%5CMakeUppercase%20%E4%BC%9A%E4%BD%BF%E6%96%87%E6%9C%AC%E6%B6%88%E5%A4%B1.png)
答案1
我在这里分享我的解决方案。希望对你有用。
\documentclass{article}
\DeclareRobustCommand*{\mybox}[1]{\makebox[4cm][l]{#1}}
\begin{document}
\makebox[4cm][l]{This is a test 1.}
\MakeUppercase{%
\mybox{This is a test 2.}}
\end{document}
答案2
你的例子可以简化为
\documentclass{article}
\begin{document}
\makebox[4cm][L]{THIS IS A TEST.}
\end{document}
生成一个空白页(除页码外)
问题在于\makebox
使用非常压缩的测试来检查[l]
、、选项,并且在它是一个意外值[r]
的[c]
情况下,L
而不是给出警告、错误或默认,[c]
它会默默地丢弃所有内容。
1993 年,我们的令牌内存非常短缺,无法添加额外的检查,但现在这看起来像是一个错误。
这将使\makebox
日志
LaTeX Warning: Unexpected alignment L on input line 18.
然后充当[c]
生产
\documentclass{article}
\makeatletter
\long\def\@imakebox[#1][#2]#3{%
\@begin@tempboxa\hbox{#3}%
\setlength\@tempdima{#1}% support calc
\hb@xt@\@tempdima{%
\expandafter\ifx\csname bm@#2\endcsname\relax\bm@c
\@latex@warning{Unexpected alignment #2}%
\else\csname bm@#2\endcsname
\fi}%
\@end@tempboxa}
\makeatother
\begin{document}
\makebox[4cm][L]{THIS IS A TEST.}
\end{document}
答案3
发生这种情况的原因是括号内的“l”也被大写了。
我建议将其放在\MakeUppercase
盒子里面,而不是盒子外面。