在使用具有相当标准结构的 DocStrip 的 LaTeX 包中,可以包含以下文件:
mypackage-code.tex
mypackage.dtx
mypackage.ins
mypackage.tex
mypackage.dtx
.sty
根据 中的说明,是包含代码并从中提取 的主文件mypackage.ins
。mypackage-code.tex
仅仅是 的包装器mypackage.dtx
:
\documentclass{l3doc}
\usepackage{mypackage}
\begin{document}
\DocInput{mypackage.dtx}
\end{document}
这样我们就可以生成单独的代码文档了mypackage-code.pdf
。
mypackage.tex
是用户手册,生成mypackage.pdf
。
这一切都很好,并且在 LaTeX 方面产生了预期的结果。问题是由于 AUCTeX 命名自动生成的样式文件(存储在 中的文件./auto/
)的方式而发生的。AUCTeX 使用文件的基本名称加上.el
扩展名。但这样做会导致和 的生成样式文件mypackage.dtx
相互mypackage.tex
冲突和覆盖(技术上mypackage.ins
也存在冲突,但编辑频率较低,因此问题较少,但仍然......)。因此,每当我打开这两个文件中的任何一个时,我都会开始注意到事情不对劲,直到我说“啊!!!”,然后调用C-u C-c C-n
重新解析文件。但这非常烦人。
那么,问题是,有没有办法根据每个文件来控制自动生成的样式文件的名称,以便它们不会发生冲突?比如文件局部变量,或者类似的东西?
除此之外,是否有任何常见/已知的解决方法来应对这种情况?
答案1
我不确定是否有一个“一刀切”的解决方案可以解决您的问题。我可能会编写mypackage.el
最终产品提供的支持宏/环境mypackage.sty
,并将其保存在 目录下,并仅TeX-style-private
依赖文件中的解析信息。这种方法应该为您提供足够的灵活性,当您 时,只加载相关部分,而当您加载文件时,两种 AUCTeX 样式都会加载(至少在理论上如此;我没有尝试)。./auto/mypackage.el
.dtx
\usepackage{mypackage}
.dtx