Problema con LetLtxMacro

Problema con LetLtxMacro

Estoy intentando redefinir \rulepara hacer guiones bajos más limpios, pero el archivo de mi libro (en la clase de memorias) tiene problemas con lo siguiente:

\RequirePackage{letltxmacro}
\LetLtxMacro{\oldrule}{\rule}
\renewcommand{\rule}[1]{\oldrule[0pt]{#1}{0.4pt}}

Aparece una "secuencia de control indefinida" \LetLtxMacro{\oldrule}{\rule}.

Respuesta1

El propósito de \newcommanden LaTeX es precisamente proteger a los usuarios de redefinir un comando que puede ser muy importante para el sistema.

Por ejemplo, si uno intenta redefinir \fi, sucederán todo tipo de cosas extrañas, empezando por que LaTeX arroje un error al encontrar \begin{document}y decir

Missing \begin{document}.

En realidad. :)

El comando \rulese utiliza en el kernel de LaTeX al escribir notas al pie y redefinirlas romperá la función. También se pueden utilizar clases y paquetes \rule: aparece 14 veces en memoir.cls.

En algunos casos es bueno redefinir también los comandos del kernel; Los paquetes de Heiko Oberdiek lo hacen con frecuencia y para ello el paqueteletltxmacroha sido ideado. Sin embargo, los usuarios deben saber exactamente lo que están haciendo ynuncacambiar la sintaxis del comando (el número y la naturaleza de los argumentos).

Es bastante extraño que te dé un error, porque tu código me funciona. Sin embargo,noúsalo. Más bien defina un comando personal como

\newcommand{\blank}[1]{\rule{#1}{0.4pt}}

De esto sólo obtendrás beneficios: dassemánticovalor a su código.

información relacionada