
Estou tentando redefinir \rule
para deixar sublinhados mais limpos, mas meu arquivo de livro (na classe de memórias) está tendo problemas com o seguinte:
\RequirePackage{letltxmacro}
\LetLtxMacro{\oldrule}{\rule}
\renewcommand{\rule}[1]{\oldrule[0pt]{#1}{0.4pt}}
Recebo uma "sequência de controle indefinida" no \LetLtxMacro{\oldrule}{\rule}
.
Responder1
O objetivo do \newcommand
LaTeX é exatamente proteger os usuários de redefinir um comando que pode ser muito importante para o sistema.
Por exemplo, se alguém tentar redefinir \fi
, todo tipo de coisas estranhas acontecerão, começando pelo LaTeX, gerando um erro ao encontrar \begin{document}
e informar
Missing \begin{document}.
Realmente. :)
O comando \rule
é usado no kernel LaTeX ao compor notas de rodapé e redefini-las interromperá o recurso. Classes e pacotes \rule
também podem ser usados: aparece 14 vezes em memoir.cls
.
Em alguns casos é bom redefinir também os comandos do kernel; Os pacotes de Heiko Oberdiek fazem isso com frequência e para isso o pacoteletltxmacrofoi concebido. No entanto, os usuários devem saber exatamente o que estão fazendo enuncaaltere a sintaxe do comando (o número e a natureza dos argumentos).
É muito estranho que você receba um erro, porque seu código funciona para mim. No entanto,nãouse-o. Em vez disso, defina um comando pessoal como
\newcommand{\blank}[1]{\rule{#1}{0.4pt}}
Você só terá benefícios com isso: você dásemânticovalor para o seu código.