考虑以下最小的非工作示例(用编译注释该行\test{..}
。我想\verb+something+
在我的\test{}
环境中有一个。我该如何实现呢?
\documentclass{article}
\usepackage{xcolor,fancyvrb}
\newcommand{\test}[1]{{\color{blue}#1}}
\usepackage{siunitx,booktabs}
\begin{document}
This works \verb+\num{6.022e-23}+
\test{This is a test of a \verb+verb+}
\end{document}
答案1
你可以使用cprotect
,但在使用之前应该三思\verb
,也许,
\texttt` 就足够了。
\documentclass{article}
\usepackage{xcolor,cprotect}
\newcommand{\test}[1]{\textcolor{blue}{#1}}
\begin{document}
This works \verb+\num{6.022e-23}+
\cprotect\test{This is a test of a \verb+\num{6.022e-23}+}
\end{document}
如果有多个\test
包含的情况\verb
,您可能希望使其自动应用\cprotect
:
\documentclass{article}
\usepackage{xcolor,cprotect}
\newcommand{\test}[1]{\textcolor{blue}{#1}}
\cMakeRobust\test
\begin{document}
This works \verb+\num{6.022e-23}+
\test{This is a test of a \verb+\num{6.022e-23}+}
\end{document}
答案2
正如我所评论的,\verb
既不能出现在宏定义中,也不能出现在参数中。
但是,根据您的需要,这可能就足够了。可以verbbox
预先保存一个,并将其作为参数传递。
\documentclass{article}
\usepackage{xcolor,verbatimbox}
\newcommand{\test}[1]{{\color{blue}#1}}
\usepackage{siunitx,booktabs}
\begin{document}
This works \verb+\num{6.022e-23}+
\begin{verbbox}verb\end{verbbox}%
\test{This is a test of a \theverbbox}
\end{document}
如果想要蓝色的动词,则verbbox
可以将其保存为{\color{blue}\begin{verbbox}verb\end{verbbox}}%
。