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 下標記化的材料。 IE,

\verbmacro|some text
some text
some text|

.aux 檔案中的應該(使用\newlinechar=\endlinechar和立即寫入來確保寫入 aux 檔案時的變更\newlinechar有效)會產生如下所示的結果:

\@writeVerbatimArgFile{foo}|some text
some text
some text|

\@writeVerbatimArgFile可以將其第二個參數處理為+v-type 參數。

關鍵點是:

如果將\verbmacro的參數+v設為 -type-argument,則周圍的逐字分隔符號將會被移除。但它是必需的,因為它也應該出現在 .aux 檔案和\@writeVerbatimArgFile-entry 中。

因此我的問題是:

是否添加到解析v類似/的參數類型+v,其中逐字分隔符號不會被刪除有意義嗎?

會使用此功能的人是否屬於少數人,以至於在解析不值得努力嗎?

請不要誤解我:這並不是一個「為我做!」的問題。我已經有自己的慣例(不是基於解析)做這樣的事情。例如,\UDcollectverbarg第二個範例中的例程我的答案對於這個問題“唯一的需求ID和對應測試方法的列表" 收集不含分隔符號和帶分隔符號的逐字逐句參數。

問題是:這樣的參數類型是否會經常使用,以至於實現它和花費記憶體資源來儲存底層宏觀機制的努力是否值得?


乍一看,您可能會想到在寫入 .aux 檔案之前\verbmacro以一種方式定義 where|是在 -type-參數前面和後面附加的。+v

如果你這樣做了,你就不能做類似的事情

\verbmacro?some text with | in it?

不再有。

透過硬編碼,|您將得到\@writeVerbatimArgFile如下的 -entry:

\@writeVerbatimArgFile{foo}|some text with | in it|

這可能是個問題。

如果逐字分隔符號不是硬編碼而是傳遞的,您將得到:

\@writeVerbatimArgFile{foo}?some text with | in it?

,這應該不是問題......

相關內容