
El newverbs
paquete permite al usuario definir variantes del verb
comando que se pueden usar para cosas como aplicar colores al texto palabra por palabra. Al igual que el antiguo verb
, las variantes definidas por el usuario funcionan bien en modo matemático. Sin embargo, el uso de variantes definidas por el usuario en modo matemático genera el siguiente error al compilar:
LaTeX Error: Command \ttfamily invalid in math mode.
¿Qué puedo hacer si quiero definir variantes de verb
esa compilación sin errores?
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}
Cuando ignoramos el error de compilación, esto da el resultado deseado, a saber:
Respuesta1
La diferencia es que \verb
sí \ifmmode\hbox
; más precisamente
% 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}
Los comandos definidos con \newverbcommand
no hacen esta verificación. Puede solucionarlo parcheando el comando correspondiente y agregando el envolvente \hbox
en modo matemático.
\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}
Respuesta2
Puedes poner el texto textual en un cuadro:
\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}
El resultado es el mismo que el tuyo, pero sin el error.
Corrección: como señaló egreg, este enfoque no funciona para newverbs
las versiones más nuevas. Para 1.3a (08/05/2012) funciona, para 1.4 (09/09/2019) no.