在特定的其他命令内部重新定义命令是否可能?

在特定的其他命令内部重新定义命令是否可能?

一般来说,我如何根据命令嵌套的其他命令来(重新)定义命令?

更具体的例子:我有一个自定义 latex 命令(例如\code{}),它使文本显示为粗体。但是,当在另一个自定义命令(例如\question{Will you use \code{command 1} or \code{command 2}?})中使用时,我希望文本不显示为粗体。所以我想在另一个命令中\code{}重新定义when。\code{}

顺便说一句:当使用 CSS 格式化 HTML 页面时,它会像这样:

.code {font-weight: bold;}
.question .code {font-weight: normal;}

答案1

是的你可以。

\newcommand\question[1]{{% extra brace
  \renewcommand\code[1]{\textit{##1}}% double #
  whatever you want for #1}}

答案2

就我个人而言,我发现大多数时候很容易忽视支架,因此我使用\begingroup...\endgroup来代替:

\newcommand\question[1]{%
  \begingroup
    \renewcommand\code[1]{\textit{##1}}% double #
    whatever you want for #1%
  \endgroup}

答案3

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

\let\code\textbf
\newcommand\question[1]{{\itshape#1}}
\begin{document}

\question{Will you use \code{command 1} or \code{command 2}?}

\question{\let\code\textnormal Will you use \code{command 1} or \code{command 2}?}

\question{Will you use \code{command 1} or \code{command 2}?}

\end{document}

在此处输入图片描述

相关内容