根据现有命令创建新命令,但使用某些字符进行转义

根据现有命令创建新命令,但使用某些字符进行转义

我必须在里面频繁地转义下划线\texttt,因为我用它来标记函数和变量。

我想\texttt用不同的名字重新定义,这样我就可以写\mycommand{my_variable_name}而不是\texttt{my\_variable\_name}

答案1

你已完成

\newcommand{\myvar}[1]{%
  \texttt{\detokenize{#1}}%
}

前提是您加载了fontencT1选项。否则,您需要更改类别代码,这会使该命令不适合作为另一个命令的参数。

\documentclass{article}
\usepackage[T1]{fontenc}

\newcommand{\myvar}[1]{%
  \texttt{\detokenize{#1}}%
}

\begin{document}

Here is a variable \myvar{my_variable_name} and also
in a description
\begin{description}
\item[\myvar{my_variable_name}] is a nice variable
\end{description}

\end{document}

enter image description here

答案2

您可以尝试使用逐字模式,即\verb!my_name!- 这始终输出为\texttt或使用xparse并定义带有逐字参数“v”的命令,但此宏不能在另一个宏中使用。

这也适用于空格。

注:是\begingroup...\endgroup为了防止泄露\ttfamily至下文。

\documentclass{article}

\usepackage{xparse}

\NewDocumentCommand{\mycommand}{+v}{%
  \begingroup
  \ttfamily #1%
  \endgroup
}

\begin{document}
\verb!my_variable_name!

\mycommand{my_variable_name}

\end{document}

相关内容