Opção Babel em espanhol e incompatibilidade com fantasiavrb

Opção Babel em espanhol e incompatibilidade com fantasiavrb

O seguinte MWE compila sem 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}

mas se eu substituir a opção englishpor spanishno babel, recebo o seguinte erro:

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

Posso resolver o problema removendo >o nome usado na \SaveVerbmacro, ou seja, \SaveVerb{xy}|x > y|, mas quero saber se existe uma solução melhor.

Responder1

O problema é que spanishfor babelcria < >personagens ativos; você pode usar a es-noquotingopção:

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

como em

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

mas você perde os recursos de cotação automática implementados pelo módulo por meio desses caracteres (embora o quotatingambiente ainda possa ser usado); outra opção seria desativar localmente esses recursos e restaurá-los:

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

Responder2

Você pode redefinir os comandos para limpar seus argumentos:

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

informação relacionada