
Das folgende MWE wird ohne Probleme kompiliert
\documentclass{article}
\usepackage[english]{babel}
\usepackage{amsmath}
\usepackage{fancyvrb}
\begin{document}
\SaveVerb{x>y}|x > y|
\begin{equation*}
\UseVerb{x>y}
\end{equation*}
\end{document}
aber wenn ich die Option in Babel english
durch ersetze spanish
, erhalte ich die folgende Fehlermeldung:
$ pdflatex test.tex
! Missing \endcsname inserted.
<to be read again>
\unhbox
l.10 \UseVerb{x>y}
Ich kann das Problem beheben, indem ich >
den im Makro verwendeten Namen entferne \SaveVerb
, d. h. \SaveVerb{xy}|x > y|
, möchte aber wissen, ob es eine bessere Lösung gibt.
Antwort1
Das Problem besteht darin, dass spanish
for aktive Zeichen babel
erstellt . Sie können die Option verwenden:<
>
es-noquoting
\usepackage[spanish,es-noquoting]{babel}
wie in
\documentclass{article}
\usepackage[spanish,es-noquoting]{babel}
\usepackage{amsmath}
\usepackage{fancyvrb}
\begin{document}
\SaveVerb{x>y}|x > y|
\begin{equation*}
\UseVerb{x>y}
\end{equation*}
\end{document}
Allerdings gehen dann die automatischen Anführungszeichen verloren, die das Modul durch diese Zeichen implementiert (die quotating
Umgebung kann jedoch weiterhin verwendet werden). Eine andere Möglichkeit besteht darin, diese Funktionen lokal zu deaktivieren und dann wiederherzustellen:
\documentclass{article}
\usepackage[spanish]{babel}
\usepackage{amsmath}
\usepackage{fancyvrb}
\begin{document}
\deactivatequoting
\SaveVerb{x>y}|x > y|
\begin{equation*}
\UseVerb{x>y}
\end{equation*}
\activatequoting
\end{document}
Antwort2
Sie können die Befehle neu definieren, um ihre Argumente zu bereinigen:
\documentclass{article}
\usepackage[spanish]{babel}
\usepackage{amsmath}
\usepackage{fancyvrb}
\let\xSaveVerb\SaveVerb
\def\SaveVerb#1{\xSaveVerb{\detokenize{#1}}}
\let\xUseVerb\UseVerb
\def\UseVerb#1{\xUseVerb{\detokenize{#1}}}
\begin{document}
\SaveVerb{x>y}|x > y|
\begin{equation*}
\UseVerb{x>y}
\end{equation*}
\end{document}