我开始使用DocStrip
和Doc
。我已经设法使用不同的防护装置或模块,从一个单一源创建不同的包文件.dtx
,我对此很满意。
我想知道是否有可能将模块名称自动集成到宏名称中?
例如,让我们想象一下,我的foobar.ins
文件如下所示:
\input docstrip.tex
\generate{\file{foo.sty}{\from{foobar.dtx}{foo}}}
\generate{\file{bar.sty}{\from{foobar.dtx}{bar}}}
此外,假设我的foobar.dtx
文件有一些这样的代码:
% \begin{macro}{\ifmy@foo@baz}
% \begin{macro}{\ifmy@bar@baz}
% This boolean switch is used to activate special baz options.
% \begin{macrocode}
%<foo>\ifmy@foo@baz
%<bar>\ifmy@bar@baz
% \end{macrocode}
毫无疑问,这是可行的。另一方面,自动设置宏名称并依赖于文件中使用的 guard/modulename 会更优雅.ins
。当我运行tex foobar.ins
并在新创建的文件中进行查看时foo.sty
,我发现在文件顶部有类似This is file foo.sty, ... with option 'foo'.
Docstrip 的东西,当然可以将实际的选项名称插入到文件中,它正在创建(至少作为注释)。
像这样的事情就很好了:
% \begin{macrocode}
\ifmy@\actualoption@baz
% \end{macrocode}
因为这样就足够了,只使用一行即可生成所有所需的变体。