
Das newverbs
Paket ermöglicht es dem Benutzer, Varianten des verb
Befehls zu definieren, die beispielsweise zum Anwenden von Farben auf wörtlichen Text verwendet werden können. Genau wie die alten verb
funktionieren die benutzerdefinierten Varianten im Mathematikmodus einwandfrei. Die Verwendung der benutzerdefinierten Varianten im Mathematikmodus führt jedoch beim Kompilieren zu folgendem Fehler:
LaTeX Error: Command \ttfamily invalid in math mode.
Was kann ich tun, wenn ich Varianten davon definieren möchte, verb
die ohne Fehler kompiliert werden?
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}
Wenn wir den Kompilierungsfehler ignorieren, erhalten wir die gewünschte Ausgabe, nämlich:
Antwort1
Der Unterschied besteht darin, dass ; genauer \verb
gesagt\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}
Die mit definierten Befehle \newverbcommand
führen diese Prüfung nicht durch. Sie können dies beheben, indem Sie den entsprechenden Befehl patchen und die Umhüllung \hbox
im Mathematikmodus hinzufügen.
\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}
Antwort2
Sie können den wörtlichen Text in eine Box einfügen:
\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}
Das Ergebnis ist das gleiche wie bei Ihnen, jedoch ohne den Fehler.
Korrektur: Wie egreg anmerkte, funktioniert dieser Ansatz bei neueren newverbs
Versionen nicht. Bei 1.3a (08.05.2012) funktioniert er, bei 1.4 (09.09.2019) nicht.