我正在尝试重新定义\rule
以制作更清晰的下划线,但我的书籍文件(在回忆录类中)存在以下问题:
\RequirePackage{letltxmacro}
\LetLtxMacro{\oldrule}{\rule}
\renewcommand{\rule}[1]{\oldrule[0pt]{#1}{0.4pt}}
我收到“未定义的控制序列” \LetLtxMacro{\oldrule}{\rule}
。
答案1
LaTeX的目的\newcommand
正是保护用户免于重新定义对系统非常重要的命令。
例如,如果尝试重新定义\fi
,就会发生各种奇怪的事情,首先是 LaTeX 在查找\begin{document}
和告诉时抛出错误
Missing \begin{document}.
真的。 :)
该命令\rule
用于 LaTeX 内核中排版脚注时,重新定义它会破坏该功能。类和包\rule
也可以使用:它在 中出现了 14 次memoir.cls
。
在某些情况下,重新定义内核命令也是很好的;Heiko Oberdiek 的软件包经常这样做,为此,软件包letltxmacro已经设计好了。但是用户应该清楚地知道他们在做什么,并且绝不改变命令语法(参数的数量和性质)。
你收到错误信息很奇怪,因为你的代码对我来说是可以运行的。然而,不使用它。而是定义个人命令,例如
\newcommand{\blank}[1]{\rule{#1}{0.4pt}}
你这样做只会得到好处:你给予语义您的代码的价值。