我正在构建一个文档类和一组包,用作各种文档的模板。我希望避免每次使用它们时都必须将它们复制到另一个文件夹,但我也希望避免用 tex 文件(以及所有输出噪音......)弄乱包含文档类和包的文件夹。
我尝试用 开始一个文档\documentclass{../templates/mycls}
,但是由于 mycls.cls 以 开头\ProvidesPackage{mycls}
,因此我在使用的宏中遇到了命名问题\@currname
(例如kvoptions
包中的某些宏)。
有没有什么方法可以使用来自不同文件夹的文档类或包,而不必将该文件夹安装到本地 TeX 分发版中?
澄清:我在这里试图做的事情似乎有些令人困惑。我想要实现的是如下所示的文件夹结构:
--root
--templates
--myclass.cls
--apackageialsowrote.sty
--agraphtheyllneed.pdf
--adocumenttemplate.tex
--documents
--adoc.tex
--another.tex
这样做的原因是我想明确说明哪些文件与模板相关,哪些文件只是使用模板的文档,这样当有人来找我获取模板时,他们就会知道他们需要哪些文件。但是,使用上述文件夹结构,如果不将模板文件复制到 /documents/ 中,则无法编译 /documents/ 文件夹中的任何文档。我不想要重复的文件。
我是不是对如何在各种 TeX 发行版下安装软件包感兴趣(我正在研究 MiKTeX,我知道如何在这里执行此操作......) - 我只是想让人们尽可能轻松地找到模板文件。
答案1
我认为最简单的方法就是将你的文档类放入其中,这种方法不需要涉及环境变量(当你使用不是从命令行启动的图形程序时,这可能很难正确处理)~/texmf/tex/latex/mycls/mycls.cls
。
使用 MiKTeX,您需要注册一个本地添加目录。我没有这方面的经验,但是这个页看起来它有你需要做这件事的所有信息。
答案2
嗯,我认为将类或包放在相对于文档的子文件夹中不是一个好主意:获取后续 \inputs 的路径可能很棘手。以下是一些想法: https://texfaq.org/FAQ-docotherdir
但是关于@currname 的问题:由于这是您自己的课程,为什么不在课程开始时简单地重置@currname 呢?
答案3
默认情况下(即,此行为在“偏执”模式下被禁用),Web2c Tex(基本上,所有 Tex 实现)将在父目录中查找未配置为查找的内容。
因此,在父目录中创建一个从templates/mycls.cls
到的硬链接mycls.cls
应该可以解决您的问题。