假设你使用解析并且有
\NewDocumentCommand{\macro}{+m}{%
\addcontentsline{foo}{#1}%
}%
当\macro{some text}
你进入 .aux 文件时,类似如下内容\@writefile{foo}{some text}
。
有时我希望以类似的方式处理在 verbatim-catcode-régime 下标记化的材料。例如,
\verbmacro|some text
some text
some text|
应该(使用\newlinechar=\endlinechar
和立即写入以确保在写入辅助文件时更改\newlinechar
有效)在 .aux 文件中产生类似以下内容的结果:
\@writeVerbatimArgFile{foo}|some text
some text
some text|
\@writeVerbatimArgFile
可以将其第二个参数作为+v
-type 参数处理。
关键点是:
如果将\verbmacro
的参数设为+v
-type-argument,则会删除周围的逐字分隔符。但这是必要的,因为它\@writeVerbatimArgFile
也将出现在 .aux 文件中的 -entry 中。
因此我的问题是:
是否添加解析v
/之类的参数类型+v
(其中逐字分隔符不会被删除)是否有意义?
使用这个的人是否属于极少数,以至于在解析不值得付出努力吗?
请不要误解我的意思:这不是一个“帮我做!”的问题。我已经有自己的例程了(不是基于解析)来做这样的事情。例如,\UDcollectverbarg
第二个例子中的例程我的答案针对这个问题唯一需求ID和相应测试方法列表“收集带有和不带有分隔符的逐字参数。
问题是:这样的参数类型是否经常被使用,以至于实现它并花费内存资源来存储底层宏机制的努力是否值得?
乍一看,您可以考虑\verbmacro
以某种方式定义,在写入 .aux 文件之前,|
将其添加到 -type 参数的前面并附加到-type 参数。+v
如果你这样做了,你就不能做这样的事情
\verbmacro?some text with | in it?
再也没有了。
使用硬编码|
你会得到\@writeVerbatimArgFile
这样的条目:
\@writeVerbatimArgFile{foo}|some text with | in it|
这可能是一个问题。
如果逐字分隔符不是硬编码而是传递过去,则会得到:
\@writeVerbatimArgFile{foo}?some text with | in it?
,这应该不是问题……