自包含宏内的不同行为

自包含宏内的不同行为

我正在尝试创建一个宏,如果它包含自身,它的行为应该有所不同。如果我编写如下命令:

\uw{aaa \uw{bbb} }

我希望结果看起来像这样:

AAA

我接到了这个命令......

\newcommand{\uw}[1]{„#1“%
  \renewcommand{\uw}[1]{‚##1‘}%
}

...但结果是:

在此处输入图片描述

你能帮助我解决这个问题吗?

答案1

以下内容就足够了:

在此处输入图片描述

\documentclass{article}

\usepackage[T1]{fontenc}

\newcommand{\uw}[1]{{%
  \renewcommand{\uw}[1]{‚##1‘}%
  „#1“%
}}

\begin{document}

\uw{aaa \uw{bbb} }

\end{document}

我把重新定义放在一个组中设置论点。

答案2

这定义了三个级别,但支持任意多个级别。

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

\newcommand{\uw}[1]{%
  \addtocounter{uw}{1}%
  \csname uw\romannumeral\value{uw}\endcsname{#1}%
  \addtocounter{uw}{-1}%
}
\newcounter{uw}

\newcommand{\uwi}[1]{``#1''}
\newcommand{\uwii}[1]{`#1'}
\newcommand{\uwiii}[1]{<<#1>>}

\begin{document}

\uw{abc}

\uw{abc \uw{def} ghi}

\uw{abc \uw{def \uw{ghi} lmn} pqr}

\end{document}

在此处输入图片描述

相关内容