有没有办法使用来自另一个文件夹的文档类/包?

有没有办法使用来自另一个文件夹的文档类/包?

我正在构建一个文档类和一组包,用作各种文档的模板。我希望避免每次使用它们时都必须将它们复制到另一个文件夹,但我也希望避免用 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应该可以解决您的问题。

相关内容