
Я пытаюсь переопределить, \rule
чтобы сделать подчеркивания более четкими, но в моем файле книги (по классу мемуаров) возникают следующие проблемы:
\RequirePackage{letltxmacro}
\LetLtxMacro{\oldrule}{\rule}
\renewcommand{\rule}[1]{\oldrule[0pt]{#1}{0.4pt}}
Я получаю «неопределенную управляющую последовательность» на \LetLtxMacro{\oldrule}{\rule}
.
решение1
Целью \newcommand
LaTeX является именно защита пользователей от переопределения команды, которая может быть очень важна для системы.
Например, если попытаться переопределить \fi
, произойдут всевозможные странные вещи, начиная с того, что LaTeX выдаст ошибку при поиске \begin{document}
и сообщении
Missing \begin{document}.
Действительно. :)
Команда \rule
используется в ядре LaTeX, когда набор сносок и их переопределение нарушат функцию. Классы и пакеты \rule
также могут использовать: она появляется 14 раз в memoir.cls
.
В некоторых случаях полезно переопределить также команды ядра; пакеты Хайко Обердика делают это часто, и для этого пакетletltxmacroбыл разработан. Однако пользователи должны точно знать, что они делают, иникогдаизменить синтаксис команды (количество и характер аргументов).
Довольно странно, что вы получаете ошибку, потому что ваш код работает у меня. Однако,неиспользуйте его. Лучше определите персональную команду, например
\newcommand{\blank}[1]{\rule{#1}{0.4pt}}
От этого вы получите только выгоду: вы отдаетесемантическийценность вашего кода.