
Пакет newverbs
позволяет пользователю определять варианты команды verb
, которые могут использоваться для таких вещей, как применение цветов к дословному тексту. Как и старый verb
, пользовательские варианты отлично работают в математическом режиме. Однако использование пользовательских вариантов в математическом режиме приводит к следующей ошибке при компиляции:
LaTeX Error: Command \ttfamily invalid in math mode.
Что делать, если я хочу определить варианты verb
этой компиляции без ошибок?
МВЭ:
\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) — нет.