
이 newverbs
패키지를 사용하면 사용자는 verb
텍스트에 색상을 적용하는 것과 같은 작업에 사용할 수 있는 명령의 변형을 정의할 수 있습니다. 이전 버전과 마찬가지로 verb
사용자 정의 변형도 수학 모드에서 잘 작동합니다. 그러나 수학 모드에서 사용자 정의 변형을 사용하면 컴파일 시 다음 오류가 발생합니다.
LaTeX Error: Command \ttfamily invalid in math mode.
verb
오류 없이 해당 컴파일 의 변형을 정의하려면 어떻게 해야 합니까 ?
MWE:
\documentclass{article}
\usepackage{newverbs}
\newverbcommand{\myverb}{}{}
\begin{document}
Old \verb|verb|, works in math: $+\verb|foo|+$.
New \myverb|verb|, gives error in math: $+\myverb|foo|+$.
\end{document}
컴파일 오류를 무시하면 다음과 같은 원하는 출력이 제공됩니다.
답변1
차이점은 다음과 \verb
같습니다 \ifmmode\hbox
. 더 정확하게
% latex.ltx, line 5775:
\def\verb{\relax\ifmmode\hbox\else\leavevmode\null\fi
\bgroup
\verb@eol@error \let\do\@makeother \dospecials
\verbatim@font\@noligs
\language\l@nohyphenation
\@ifstar\@sverb\@verb}
로 정의된 명령은 \newverbcommand
이 검사를 수행하지 않습니다. 관련 명령을 패치하고 \hbox
수학 모드에서 엔벨로프를 추가하여 문제를 해결할 수 있습니다.
\documentclass{article}
\usepackage{newverbs}
\usepackage{etoolbox}
\makeatletter
\patchcmd{\new@@verbcommand}
{\bgroup}
{\ifmmode\hbox\fi\bgroup}
{}{}
\makeatother
\newverbcommand{\myverb}{}{}
\begin{document}
Old \verb|verb|, works in math: $+\verb|foo|+$.
New \myverb|verb|, gives error in math: $+\myverb|foo\\|+$.
\end{document}
답변2
축어적 텍스트를 상자에 넣을 수 있습니다.
\documentclass{article}
\usepackage{newverbs}
\newverbcommand{\myverb}{\hbox\bgroup}{\egroup}
\begin{document}
Old \verb|verb|, works in math: $+\verb|foo|+$.
New \myverb|verb|, gives error in math: $+\myverb|foo|+$.
\end{document}
결과는 귀하와 동일하지만 오류는 없습니다.
수정: egreg가 지적했듯이 이 접근 방식은 최신 newverbs
버전에서는 작동하지 않습니다. 1.3a(2012/05/08)에서는 작동하지만 1.4(2019/09/09)에서는 작동하지 않습니다.