
다음 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}