为什么新命令不起作用?

为什么新命令不起作用?
\documentclass[12pt]{article}
\usepackage[T1]{fontenc}


\newcommand*{\QEDA}{\null\nobreak\hfill\ensuremath{\blacksquare}}

\begin{document}

test \QEDA

\end{document}

错误提示“未定义的控制序列”。

答案1

您可以看到未定义的控制序列是\blacksquare因为它位于错误消息中的行末。您可以使用\vrule原语来定义它:

\documentclass[12pt]{article}
\usepackage[T1]{fontenc}


\def\QEDA {\null\nobreak\hfill\blacksquare}
\def\blacksquare {\vrule height.7em width.7em\relax}

\begin{document}

test \QEDA

\end{document}

请注意,如果您使用的是 TeX 基元和基本纯 TeX 宏(此处为\vrule\hfill、 ),则不再需要任何 LaTeX 包。第二点需要注意:因为在水平模式下(以及数学模式下)没有工作。\null\nobreak\ensuremath\vrule

相关内容