我如何将包实现移至文档的后面?

我如何将包实现移至文档的后面?

我正在尝试学习如何使用.dtx文件docstrip等从单个文件生成包代码和文档。到目前为止,我的主要信息来源是Joseph Wright 的模型 dtx 文件以及随行的博客文章

我已经开始一切顺利,我可以成功地将一些代码输出到样式文件以及 pdf 中该代码的文档。但是,我希望 pdf不是包含实际的实现 - 至少与我描述宏的位置不同。但是,我仍然希望将文档和实现放在文件中.dtx

阅读后doc 和 shortvrb 包(pdf,来自谷歌搜索的链接)我尝试将其添加\OnlyDescription到驱动程序部分的序言和文档中.dtx,但并没有什么区别(无论如何,我可以在我的 pdf 中观察到)。

如果可能的话,我完全可以(几乎更喜欢)将逐字包实现的输出延迟到文档的最后。但是,这不是必需的 - 我主要想确保代码不会与 pdf 中的文档文本混在一起。

例子

我的文件中有以下几行.dtx(忽略文本 - 无论如何,它是瑞典语......)

%\section{Paket som används}
%\textsf{fstil} använder sig av funktionalitet från följande paket:
%\begin{description}
%\item[\textsf{fontenc}, med option \textsf{T1}] Använder den modernare teckenkodningen T1, vilken t.ex. underlättar för specialtecken som åäö.
%    \begin{macrocode}
\RequirePackage[T1]{fontenc}
%    \end{macrocode}
%\end{description}

在我的 pdf 中,输出如下

包裹寄送}

弗斯蒂尔请使用以下包中的功能签名:

    fontenc,Med 选项 T1使用现代技术规范 T1,例如。了解关于
    特殊装饰的详细信息。
    1 \RequirePackage[T1]{fontenc}

我想将最后一行(包含逐字代码)移至文档末尾,或者将其完全删除。

答案1

据我所知,大多数软件包文档实际上都有一个部分包含用户界面文档(选项、用户级命令),另一个部分包含软件包的实现细节(带有有用的注释、记录的内部宏的副作用等)。例如amstextfixmath或者microtype说明这一点。

较大的软件包往往要么有一个单独的文档用于记录(biblatex没有.dtx文件 IIRC,除了记录的代码之外还有glossaries一个单独的手册),要么通过在序言中运行宏并在实现部分之前发出宏来隐藏实现部分。glossaries-userglossaries.pdf\OnlyDescription\StopEventually


重新阅读这个问题,我发现这不是你想要的。我认为如果你脱离模型docstrip,做例如skdoc确实如此(例如,用于verbatim将代码保存在 token 列表和/或文件中),您可以将代码的实际打印推迟到稍后的阶段,或完全省略它。该实现的相关代码位于skdoc.dtx,但必须进行修改。

简而言之,你要做的是:

  1. 不要使用dtx文件或文档条。
  2. 为每个输出文件定义一个标记列表(这就是所做\DeclareFileskdoc)。
  3. 创建一个基于verbatim此的环境,除了(或代替)打印内容之外,还将它们附加到适当的标记列表中(skdoc@verbatim在中skdoc,可以轻松修补以丢弃文本而不是打印它)。
  4. 在文档的末尾,将标记列表的内容保存到适当的文件中(第 773-783 行skdoc.dtx)。
  5. 可以定义一个宏来打印 token 列表verbatim(但保留其原样)。我不知道该怎么做。

相关内容