要在 OPmac 中创建索引条目,请输入如下内容:
Oh, how I like \ii figs figs.
注意到那里的重复了吗?为了方便起见,OPmac 提供了\iid
:
Oh, how I like \iid figs .
在这种情况下,我不需要重复单词“figs”,尽管我必须在“s”和“。”之间输入一个空格才能正确排版句子。
不幸的是,下面的排版不正确:
Oh, does anyone else like \iid figs ?
在这种情况下,我们不会排版“figs?”,而是得到带有空格的“figs?”。
罪魁祸首似乎在这里:
\def\iiD{\ifx\tmp,\else\ifx\tmp.\else\space\fi\fi}
% 处理逗号和句号
我修改了一下,添加了一个问号(“?”)
\def\iiD{\ifx\tmp,\else\ifx\tmp.\else\ifx\tmp?\else\space\fi\fi\fi}
但显然需要其他标点符号,例如感叹号、冒号、分号等。有没有更好的方法来处理这个问题?
答案1
有可能重新定义\iid
宏以使其更加智能。要点是,的参数\iid
用空格分隔(而不是两个括号),以节省输入。但有时两个括号可能很有用。
\let\iidC=\iid
\def\iid {\futurelet\next\iidA}
\def\iidA {\ifx\next\bgroup \expandafter \iidB\else \expandafter \iidC \fi}
\def\iidB #1{\iindex{#1}#1}
现在,您可以使用\iid word
后跟空格或\iid {word}
不跟跟空格。在您的例子中:\iid{figs}?
。