![本地包中包含其他本地包](https://linux22.com/image/258146/%E6%9C%AC%E5%9C%B0%E5%8C%85%E4%B8%AD%E5%8C%85%E5%90%AB%E5%85%B6%E4%BB%96%E6%9C%AC%E5%9C%B0%E5%8C%85.png)
为什么这不起作用?:
文件夹内容:
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
太渴望评论了,所以我会写一个答案:
如果您以这种方式添加像 tikz-qtree 这样的标准包,这也许会帮助那些使用过时/不完善的 TeXLive 的人,但对于可以使用包管理器安装包的其他用户来说,这毫无用处。
有命令行选项可以将位置添加到搜索路径。但对于大多数用户来说,使用它们比安装包更困难:许多用户不知道如何添加命令行选项。而且它们很容易扰乱正常的搜索路径。
另一方面,绝大多数 Latex 用户确实知道如何安装软件包:他们使用 TeXlive(tlmgr)或 miktex 的包管理器。
因此,我建议,如果您想礼貌地将这样的标准包与您的文件一起发送:将 sty 放在 zip 文件夹中(如果许可证允许的话)并告诉用户main.tex
在需要时解压缩文件夹中的文件。