我想知道有哪些类可用于排版 LaTeX 手册。到目前为止,我使用的是ltxdoc
。我对它的功能很满意,但对它的布局/设计不满意,而且在使用英语以外的语言编写时,它的灵活性并不高(请参阅 德语文档的类别/包)此外,{verbatim}
环境在其后留出了太多空间。
是否有其他类可以替代而不会对我现有的文件ltxdoc
造成太多工作?.dtx
有没有一个类可以使用,listings.sty
而不是纯{verbatim}
, 来获得语法高亮?我试过了
\let\verbatim\relax
\let\endverbatim\relax
\lstnewenvironment{verbatim}{}{}
但这不适用于像 DocStrip 输入
% Describing text for the following code
% \begin{macrocode}
\newcommand{\foo}{FOO}
\newcommand{\bar}{BAR}
% \end{macrocode}
% Some more text.
答案1
记录LaTeX
源代码有点拼凑,因为整个系统有四个主要依赖项文档,文档条,ltxdoc和文章,加上您在驱动程序中添加的附加命令。
一些主要的软件包作者付出了很多努力来修改标准类,就像我们修改文档中标准类的序言一样。文档类、软件包或大量修改中,最突出的是列表(lstdoc),微型(文档样式)和比布拉特克斯(ltxdockit)包。对于常用的类,您可以查看Koma
和memoir
dtx
文件。LaTeX3 项目还有一个实验性的文档类(文档),外观上非常赏心悦目。
但最终,您可能希望定义自己的内容。这并不像听起来那么难。文档部分排版的主要问题通常在于“用户手册”部分。实施部分最好采用不太鲜艳的方式,唯一的主要变化是将编号变灰。
查看microtype
和LaTeX3
文档,了解这如何改善代码部分的外观,尤其是当行号达到数千时。
现在介绍用户手册部分。这是您需要付出努力的地方,一切皆有可能,包括微排版。这里可以进行许多改进。首先,采用某种形式的装箱,并拥有一种使用 漂亮地打印 LaTeX 代码的方法。listings
此外,根据您正在开发的包或类,自动运行实际示例可以使生活更轻松。我建议添加的包是tcolorbox
。它为显示框提供了环境,自动执行 LaTeX 代码,并且非常擅长以样式显示键pgf
。在结合所有这些的序言中,我设法获得了这种类型的输出:
我遇到的主要困难是获取hyperref
,lstdoc
并tcolorbox
以正确的顺序和加载选项而不产生任何冲突。这很有效:
\usepackage[pdftex,bookmarks,raiselinks,pageanchor,hyperindex,colorlinks]{hyperref}
\usepackage{lstdoc}
\usepackage[listings,theorems,documentation]{tcolorbox}
这听起来很简单,再加上微排版和更改字体就可以了:
\usepackage[charter]{mathdesign}
\def\rmdefault{bch} % not scaled
\def\ttdefault{blg}
文档排版有了明显的改善。
其余约 200 行命令用于重新格式化标题和分段命令。对于微排版,我从 microtype 包中剪切并粘贴了相关代码。
如果您的包裹较小,那么一个很好的解决方案是执行以下操作:
\documentclass{article}
\usepackage{a,b,c,d,e} % as required
\usepackage{filecontents}
\begin{filecontents}{foo.sty}
... Package contents
\end{filecontents*}
\input{foo.sty}
\begin{document}
... User manual
... Code documentation
... \lstinputlisting{foo.sty}
\end{document}
在文件内容环境中输入包并保存为foo.sty
。然后输入它即可使用。在主文档中,您只需使用逐字输入listings
命令之一输入代码即可tcolorbox
。对于多达 100-200 行代码的任何内容,这是一种极好的方法,并且具有始终在一个文件中工作的优点。此外,在开发包时,您可以在一个文件中同时对其进行测试。当然,样式仍是您自己的责任,但您将获得手册和代码的漂亮打印。
我有一些代码正在忙着写,如果你有兴趣得到一份,只需发表评论(它相当冗长,我会在周末整理并发布到 github 上)。不过,MWE 可以在以下网址找到:LaTeX 文学编程的不同方法。
答案2
首先要说的是:我对编写包甚至类一无所知……
我依稀记得几个月前 Florent Chervet 发布了这样一个软件包。经过一番研究,我找到了fcltxdoc
。该软件包的手册上写道:
fcltxdoc 提供了一些用于打印文档 (.dtx) 文件的工具。其中大部分是未记录的软件包 holtxdoc 中定义的命令的进一步开发。
(它还说,“它不打算供公众使用......但公众可以使用或复制!”)
再次搜索:holtxdoc
是捆绑包的一部分oberdiek
,手册告诉我们
注意:此包不供公众使用!…因此,该软件包对兼容性一无所知。只有我当前的软件包的文档必须编译。
旧版本更有趣,因为它们包含将 hyper-ref 功能添加到 LATEX 文档系统的代码,例如书签和索引链接。我将这些内容分离出来并创建了一个新的包 hypdoc。
hypdoc
当然也是oberdiek
捆绑的一部分。
看看这些包。
编辑:mbork 指向gmdoc
。还有一个包gmdoc-enhance
,其文档仅以德语编写。
更新:
这个答案根本不打算全面,但自上次编辑以来,TeX.SE 的成员发布了另外三个文档类别:
最新版本
ncltdoc
由尼古拉·塔尔博特. 没有自己的文档。我们的一位管理员马丁·沙雷尔,为自己的软件包开发
ydoc
。文档并不完整。这实际上是一个类与一些软件包的捆绑包。这些软件包也可以独立于类使用。西蒙·“你”·西于尔德森,灵感来自关于 TeX.SE 的一个问题,创建于
skdoc
,主要基于ydoc
。文档似乎很完整。
顺便说一句,Martinydoc
还在文档中指出了一些其他类。但这里并未全部提及:
类似套餐
其他文档相关的类和包有
ltxdoc
、、、、、、、和。doc
dox
xdoc
gmdoc
pauldoc
hypdoc
codedoc
nicetext
tkz-doc
他还写了我们可以假设的主要原因,为什么同一项任务会有如此多不同的类别(“作者”=马丁):
所有这些包都不适合作者,因此,他猜测,编写了自己的文档包。
答案3
还有gmdoc
。我不记得它的灵活性(我很久以前读过它的手册),但它可以与hyperref
生成可点击索引等一起使用。此外,鉴于作者是波兰人,它应该可以在(至少一种)非英语语言中工作(我确实亲自在一个用波兰语记录的课程中使用过它,而且它工作得很好)。