
我正在嘗試重新定義\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
也可以使用:它在memoir.cls
.
在某些情況下,重新定義核心指令也是有好處的。 Heiko Oberdiek 的包經常這樣做,為此包宏已被設計出來。然而,用戶應該準確地知道他們在做什麼,並且絕不更改命令語法(參數的數量和性質)。
你收到錯誤是很奇怪的,因為你的程式碼對我有用。然而,不用它。而是定義一個個人命令,例如
\newcommand{\blank}[1]{\rule{#1}{0.4pt}}
你只會從中得到好處:你給予語意對您的程式碼的價值。