Babel 西班牙語選項和 fancyvrb 不相容

Babel 西班牙語選項和 fancyvrb 不相容

以下MWE編譯沒有問題

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

但如果我用 babel 取代該選項englishspanish則會出現以下錯誤:

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

>我可以解決從巨集中使用的名稱中刪除的問題\SaveVerb,即 ,\SaveVerb{xy}|x > y|但我想知道是否有更好的解決方案。

答案1

問題是spanishforbabel使< >角色活躍;您可以使用以下es-noquoting選項:

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

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

但隨後您就失去了模組透過這些字元實現的自動引用功能(儘管環境quotating仍然可以使用);另一種選擇是在本地停用這些功能,然後恢復它們:

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

答案2

您可以重新定義命令來清理它們的參數:

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

相關內容