
以下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 取代該選項english
,spanish
則會出現以下錯誤:
$ pdflatex test.tex
! Missing \endcsname inserted.
<to be read again>
\unhbox
l.10 \UseVerb{x>y}
>
我可以解決從巨集中使用的名稱中刪除的問題\SaveVerb
,即 ,\SaveVerb{xy}|x > y|
但我想知道是否有更好的解決方案。
答案1
問題是spanish
forbabel
使<
>
角色活躍;您可以使用以下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}