newverbs 패키지로 정의된 새로운 축어적 환경은 수학 모드에서 사용될 때 오류를 생성합니다.

newverbs 패키지로 정의된 새로운 축어적 환경은 수학 모드에서 사용될 때 오류를 생성합니다.

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)에서는 작동하지 않습니다.

관련 정보