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}

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만든다는 babel것 입니다. 다음 옵션 < >을 사용할 수 있습니다 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}

관련 정보