v/+v-argument-type 保留逐字分隔符?

v/+v-argument-type 保留逐字分隔符?

假设你使用解析并且有

\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?

,这应该不是问题……

相关内容