Babel-Spanisch-Option und FancyVRB-Inkompatibilität

Babel-Spanisch-Option und FancyVRB-Inkompatibilität

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 englishdurch 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 spanishfor aktive Zeichen babelerstellt . 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 quotatingUmgebung 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}

verwandte Informationen