我正在查看用于记录软件包的软件包。cnltx-doc
看起来不错,所以我想尝试一下。但是,它执行以下操作:
\ProcessPgfOptions{/cnltx-doc}
\let\@classoptionslist\relax
\LoadClass{scrartcl}
这意味着所有无法识别的选项都会丢失,而不是像通常那样被传递下去scrartcl
。例如,这意味着以下文档无法编译:
\documentclass[british]{cnltx-doc}
\usepackage{babel}
\begin{document}
another aardvark
\end{document}
通常会出现 Babel 错误,抱怨没有声明任何语言。相反,cnltx-doc
用底层类替换scrartcl
,会导致代码按预期顺利编译。
我认为丢弃这些选项是有原因的,因为它不是标准的,但我完全不确定这个原因是什么。这解决或避免了什么问题?
我想知道,因为修改派生类以供我自己使用显然非常容易,而且我想知道为什么我可能不想这样做。
请注意,我意识到我可以直接将选项传递给 Babel,但随后我需要考虑哪些其他包可能需要该信息 - 包括可能cnltx-doc
直接加载的包。因此我开始需要这样做,\PassOptions...
很快一切都变得混乱。更不用说我可能还想将其他选项传递给 Koma 或那些包......
load-preamble
有一个选项可以将选项传递给 Babel。不幸的是,这只有在为真时才有效。但load-preamble
显然会加载作者的自定义序言,而我不希望加载它。
这个包是不是不适合其他人使用 - 至少,不是未经修改的形式?我是否应该克隆并修改它?这很好,但这意味着我需要将修改后的版本发布到 CTAN 以支持我的包的文档,当然,其他人也需要这样做。
一般来说,CTAN 上有很多作者特定的包和类用于记录 LaTeX 包......我并不反对创建自己的包,但如果其他人已经写了一本解释 101 种烤豆腐方法的食谱书,我宁愿不要重新发现火。
答案1
你可以直接问我:)
我实际上从未想过有人会想要使用这个类,这就是为什么还有一些建筑工地还留着。你找到了最明显的一个,我很久以前就忘记了。如果我没记错的话,这是为了临时修复我后来忘记正确做的事情(?),可能是因为如果我可以避免的话,我自己从不使用全局选项。
我将在今天晚些时候向 CTAN 发送更新信息。