
Estoy intentando redefinir \rule
para 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 \newcommand
en 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 \rule
se 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.