我正在尝试定义与 类似的简写宏\texttt
。\verb
最终结果是执行+asdf+
,这与 具有相同的效果\texttt{asdf}
。这就像包DefineShortVerb
中的命令,但我希望将其作为底层命令,fancyvrb
而不是逐字逐句。texttt
\ttt+asdf+
首先,我可以通过包获取类似的宏xparse
:
\documentclass[a4paper]{article}
\usepackage{xparse}
% want \ttt[delimiter]#1[delimiter] for \texttt{#1}:
\NewDocumentCommand\ttt{v}{%
\texttt{#1}%
}
\begin{document}
\ttt+asdf+
\end{document}
这有效。
有没有什么方法可以采取下一步并用来[delimiter]asdf[delimiter]
表示\texttt{asdf}
?
例如,如果我使用fancyvrb
我会使用DefineShortVerb
:
\documentclass[a4paper]{article}
\usepackage{fancyvrb}
\DefineShortVerb{\+}
\begin{document}
+asdf+ % typesets a verbatim 'asdf'
\end{document}
我的问题是:有什么方法可以模拟这种行为,但使用\texttt
基本命令而不是\verb
?。
它不必像提供DefineShortVerb
宏那样复杂;我只是喜欢它的[delmiter]text[delimiter]
功能。
(另一种解决方法是 - 有没有办法可以覆盖fancyvrb
命令\texttt
以代替\verb
基本命令?)
干杯。
答案1
您可以将+
(或您选择的任何符号)变成命令字符,然后使用\def
它来执行您想要的任何操作:
documentclass{article}
\catcode`+=\active
\def+#1+{\texttt{#1}}
\begin{document}
+abc def+
\end{document}
这里\catcode`+=\active
创建了+
一个“活动”字符,然后\def+#1+{\texttt{#1}}
定义+
为一个宏,该宏采用一个由另一个参数界定的参数+
并传递给\texttt
。
答案2
检查这是否可以正常工作:
\documentclass[a4paper]{article}
\usepackage{fancyvrb}
\begin{document}
\verb+asdf+ typesets a verbatim 'asdf' $a+b+c$
\end{document}