LetLtxMacro 的问题

LetLtxMacro 的问题

我正在尝试重新定义\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}}

你这样做只会得到好处:你给予语义您的代码的价值。

相关内容