对于我想在 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”解决方案,那么这当然不适用。)