我尝试使用以下代码将整个新环境大写,但没有成功:
\newenvironment{upc}{
\MakeUppercase\bgroup
}
{
\egroup
}
以下是一个例子:
\begin{upc}
23 Harrogate Dr. Foo, PA 17036 \\
717.576.----- \quad [email protected]
\end{upc}
但情况并没有改变。
答案1
该包environ
允许在宏中捕获环境体:
\documentclass{article}
\usepackage{environ}
\NewEnviron{upc}{\MakeUppercase{\BODY}}
\begin{document}
\begin{upc}
\noindent
23 Harrogate Dr. Foo, PA 17036 \\
717.576.--- \quad [email protected]
\end{upc}
\end{document}
居中版本。 之后\centering
,宏\\
不再健壮,需要以 为前缀\protect
。 以下示例无需通过包进行\\
健壮。\robustify
etoolbox
结尾也很重要,因为 TeX 使用段落结尾处的\par
设置。如果段落结尾在环境之后,则的设置将丢失并使用先前的设置。\centering
\centering
\documentclass{article}
\usepackage{environ}
\usepackage{etoolbox}
\NewEnviron{upc}{%
\par
\centering
\robustify\\%
\MakeUppercase{\BODY}%
\par
}
\begin{document}
\begin{upc}
23 Harrogate Dr. Foo, PA 17036 \\
717.576.---\quad [email protected]
\end{upc}
\end{document}