本地包中包含其他本地包

本地包中包含其他本地包

为什么这不起作用?:

文件夹内容:

 Main folder/
 |- main.tex
 |- mylocal/
    |- headers.sty
    |- tikz-qtree/
       |- tikz-qtree.sty/.tex
       |- pgftree.sty/.tex
       |- pgfsubpic.sty/.tex

文件:

% Main.tex
\documentclass{article}

\usepackage{./mylocal/localpackage}

% ./mylocal/headers.sty
\usepackage{./mylocal/tikz-qtree/tikz-qtree}

上下文:我有一组文档,所有文档都具有相同的标题(一组具有相同格式、设置和包的相关文档)。因此,我在 main.tex(其中一个文档的示例)中写了以下行\usepackage{./mylocal/localpackage}。 在本地包.sty我拥有所有的包含、自定义命令、环境和设置。

现在,我需要 Ubuntu 存储库中未包含的其他附加软件包(例如)。我不想在我的系统中正式安装这些附加软件包,因为我的文档是免费的,我希望其他人可以下载我的文档并轻松编译它们。我不想强迫用户手动安装软件包(无论是在知名存储库中不存在还是在一般不常见的软件包中)来编译这些文档。

因此,我把这个额外的包(例如,其他本地包.sty) 在我的本地文件夹中 (./我的本地/),然后我添加以下行\usepackage{./mylocal/thisnewpackage}在我的“通用”标题中本地包.sty。读取这个“附加包”时出现问题,因为这个包确实是一组互相调用的文件(具有本地路径,而不是完整路径)。LaTeX 告诉我它找不到这个附加包。例如,tikz-qtree.sty有线\RequirePackage{pdftree}LaTeX 告诉我:

! LaTeX Error: `pgftree.sty' not found.

我如何强制 LaTeX 将我的本地文件夹作为“标准”文件夹处理,以便其他包内的“本地路径”可以工作?

我猜想将附加包中的每一行 RequirePackage/input/usepackage 重命名为更长的路径(自从我的 makefile 生成相关文件/包的路径)一定可以起作用,但我总是尽量避免手动工作,以使代码更灵活并避免潜在的风险。

答案1

太渴望评论了,所以我会写一个答案:

  1. 如果您以这种方式添加像 tikz-qtree 这样的标准包,这也许会帮助那些使用过时/不完善的 TeXLive 的人,但对于可以使用包管理器安装包的其他用户来说,这毫无用处。

  2. 有命令行选项可以将位置添加到搜索路径。但对于大多数用户来说,使用它们比安装包更困难:许多用户不知道如何添加命令行选项。而且它们很容易扰乱正常的搜索路径。

  3. 另一方面,绝大多数 Latex 用户确实知道如何安装软件包:他们使用 TeXlive(tlmgr)或 miktex 的包管理器。

因此,我建议,如果您想礼貌地将这样的标准包与您的文件一起发送:将 sty 放在 zip 文件夹中(如果许可证允许的话)并告诉用户main.tex在需要时解压缩文件夹中的文件。

相关内容