DocStrip \file 的变体,不添加 .tex 扩展名

DocStrip \file 的变体,不添加 .tex 扩展名

对于我想在 CTAN 上上传的一个类,借助DocStrip的实用程序生成了几个文件:

\generate{\file{⟨output⟩}{\from{⟨input⟩}{⟨optionlist⟩}}}

引用 Heiko Oberdiek 的话.dtx 文件(位于源/文件夹中)中提供什么路径来访问位于 doc/文件夹中的文件?

不幸的是,docstrip(TeX)无法轻松生成没有扩展名的文件名,因为默认扩展名 .tex 会起作用[.]

对于⟨output⟩应该无扩展名的文件,这是一件麻烦事:在发送到 CTAN 之前,必须不要忘记将生成的文件从 重命名为⟨output⟩.tex⟨output⟩相关的常见文件是⟨output⟩ = README ,但在我的用例中,⟨output⟩ = latexmkrc文件也是相关的。

由于此 CTAN 要求(不欢迎文件.tex扩展名README.tex),程序是否可以DocStrip提供一个星号变体,\file例如,如果⟨output⟩包含任何扩展名:

\generate{\file*{⟨output⟩}{\from{⟨input⟩}{⟨optionlist⟩}}}

生成一个名为 的文件⟨output⟩,而不是⟨output⟩.tex

答案1

这不是 DocStrip 的限制:这是 TeX 的限制。TeX 将总是.tex如果没有扩展名,则添加。例如,尝试

\newwrite\mywrite
\immediate\openout\mywrite foo %
\bye

(您可以这样做\immediate\openout\mywrite foo. %,但文件最终被称为foo.不仅仅是foo。)

解决此问题的正常方法是使用 CTAN 构建脚本,这样做的好处是确保您不会忘记步骤。这样的脚本可以轻松处理重命名。有关“丰富”示例,请参阅LaTeX3 发布脚本(用 Lua 编写)。

(注意:使用 LuaTX,您可以执行基于 Lua 的文件写入以避免扩展,但如果您想要可与 pdfTeX/XeTeX 一起使用的“纯 TeX”解决方案,那么这当然不适用。)

相关内容