定义我自己的像宏这样的短动词?

定义我自己的像宏这样的短动词?

我正在尝试定义与 类似的简写宏\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}

相关内容