Archiv verlassen und diese Seite im Standarddesign anzeigen : "TeX capacity exceeded" bei renewcommand
Hi
Ich habe folgendes Problem: ich versuche einen vorhandenen Befehl zu erweitern. Dabei kommt der Fehler "TeX capacity exceeded" sobald der Befehl optionale Argumente hat. hier der Code:
\newcommand{\myCMD}[3][old]{
#1 #2 #3
}
\let\myCMDorg\myCMD
\renewcommand{\myCMD}[3][new]{
\myCMDorg[#1]{#2}{#3} add this
}
Danke
u_fischer
06-06-2012, 11:16
Warum gibst du kein vollständiges Beispiel zum Testen? Sollen wir deine Schnipsel ergänzen?
Ja, wir brauchen ein MB, denn die Definition alleine bringt den Fehler nicht:
\documentclass{scrreprt}
\makeatletter
\newcommand{\myCMD}[3][old]{
#1 #2 #3
}
\let\myCMDorg\myCMD
\renewcommand{\myCMD}[3][new]{
\myCMDorg[#1]{#2}{#3} add this
}
\makeatother
\begin{document}
text text
\end{document}
tatsächlich
es ist der Aufruf, der dann zum Fehler führt! Warum?
und wieso das "makeatletter" ein "@" muss doch gar nicht geparsed werden?
\documentclass{scrreprt}
\makeatletter
\newcommand{\myCMD}[3][old]{
#1 #2 #3
}
\let\myCMDorg\myCMD
\renewcommand{\myCMD}[3][new]{
\myCMDorg[#1]{#2}{#3} add this
}
\makeatother
\begin{document}
text text
\myCMD{q}{w}
\end{document}
Ja stimmt, jetzt sehe ich den Fehler auch. Leider habe ich zu wenig Ahnung, um ihn zu beheben.
Ich weiß nicht, ob das makeatletter hier nötig ist, ich tue bei mir immer die newcommand- und renewcommand- Sachen mit in diesen Teil. Dachte irgendwie, das müsste so sein, weil da intern ein @ vorkommen könnte. Geschadet hat es noch nicht...
Hallo,
\let macht Probleme, wenn das Makro ein optionales Argument besitzt. Das Paket letltxmacro kann helfen.
\documentclass{scrreprt}
\usepackage{letltxmacro}
\newcommand{\myCMD}[3][old]{
#1 #2 #3
}
\LetLtxMacro{\myCMDorg}{\myCMD}
\renewcommand{\myCMD}[3][new]{
\myCMDorg[#1]{#2}{#3} add this
}
\begin{document}
text text
\myCMD{q}{w}
\end{document}
Gruß
Elke
Tausend Dank, genau diesen Hinweis habe ich gesucht!
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.