Opción española de Babel e incompatibilidad con fancyvrb

Opción española de Babel e incompatibilidad con fancyvrb

El siguiente MWE se compila sin problemas.

\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}

pero si reemplazo la opción englishen spanishbabel, aparece el siguiente error:

$ pdflatex test.tex
! Missing \endcsname inserted.
<to be read again> 
                   \unhbox 
l.10 \UseVerb{x>y}

Puedo solucionar el problema eliminando >el nombre utilizado en la \SaveVerbmacro, es decir, \SaveVerb{xy}|x > y|pero quiero saber si existe una solución mejor.

Respuesta1

El problema es que spanishfor babelcrea < >personajes activos; puedes usar la es-noquotingopción:

\usepackage[spanish,es-noquoting]{babel}

como en

\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}

pero luego pierdes las funciones de cotización automática implementadas por el módulo a través de esos caracteres (aunque el quotatingentorno aún se puede usar); Otra opción sería desactivar localmente estas funciones y luego restaurarlas:

\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}

Respuesta2

Puede redefinir los comandos para desinfectar su argumento:

\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}

información relacionada