如何定义一个具有功能特性的宏?

如何定义一个具有功能特性的宏?

我想要形成一个宏,使我能够获得以下结果。

假设我想要LMN在我的文档中处于活动状态。

我还希望角色p在代码中具有功能,以便

  • 如果L后面跟着 ,p则会变为q
  • 如果M后面跟着 ,p则会变为r
  • 如果N后面跟着 ,p则会变为s

我可以p这样定义性格吗?


@Red-Cloud 提供的代码很棒,但我有一个不同的设置,我最初将其排除在 MWE 之外,因为没有必要,但现在我发现有必要成为其中的一部分。这是我想要使用此代码的实际设置。

有一个字符“x”为活动字符设置了一个条件。该条件表示如果活动字符(在我们的例子中是 L、M 和 N)不是后跟“x”,然后在其后添加 X。

代码 -

\documentclass{article}
\makeatletter
\catcode`L=\active
\protected\def L{\bgroup a\futurelet\tmp\check}
\catcode`M=\active
\protected\def M{\bgroup b\futurelet\tmp\check}
\catcode`N=\active
\protected\def N{\bgroup c\futurelet\tmp\check}
\def\check{\ifx\tmp x\egroup\expandafter\@gobble\else X\egroup\fi}
\makeatother

\begin{document}
    LMN
\end{document}

这会产生 -

1

在不更改此设置的情况下,我想向其中添加之前询问的设置(初始问题)。如果我LpMpNp的输入中有我想要的内容qXrXsX(查看条件集 1 和 2),可以吗?

答案1

\documentclass{article}    
\begin{document}    
\begingroup
\catcode`L=\active
\catcode`M=\active
\catcode`N=\active
\makeatletter
\def L{\@ifnextchar p{q\@gobble}{}}
\def M{\@ifnextchar p{r\@gobble}{}}
\def N{\@ifnextchar p{s\@gobble}{}}
\makeatother
Lp Lq Lr

Mp Mq Mr

Np Nq Nr    
\endgroup

Lp Lq Lr

Mp Mq Mr

Np Nq Nr    

\end{document}

在此处输入图片描述

相关内容