我想找到一种方法来定义一个像这样工作的命令
\mycommand{This +is+ a +simple example+.}
并给予
这是A简单示例。
即查找由特定符号包围的单词的命令(这里是+
)包围的单词并更改格式(此处为大胆的)这些词。
另外,有没有关于 TeX 中“高级”宏的参考资料?
答案1
这很容易:
\def\mycommand{\begingroup\setupplus\mycommandaux}
\def\setupplus{%
\catcode`+=\active
\begingroup\lccode`~=`+\lowercase{\endgroup\def~##1~}{\textbf{##1}}%
}
\newcommand\mycommandaux[1]{#1\endgroup}
你打开一个组,并在这个组中将其设置+
为活动状态;其操作是收集下一个组之前的所有内容+
,并将其以粗体显示。重要的是在执行设置后收集参数。因此,操作分为两个,\mycommandaux
收集参数,以便 TeX 可以处理它,并关闭由 启动的组\mycommand
。
不要使用这样的捷径;迟早它们会给你带来麻烦。
注意:这\mycommand
不能在另一个命令的参数中使用。如果你需要它,那么需要一个稍微复杂一点的策略:
\protected\def\mycommand{\begingroup\setupplus\mycommandaux}
\def\setupplus{%
\catcode`+=\active
\begingroup\lccode`~=`+\lowercase{\endgroup\def~##1~}{\textbf{##1}}%
}
\newcommand\mycommandaux[1]{\scantokens{#1\noexpand}\endgroup}