题
我使用一些不属于Texlive的文件,并希望将它们放在我的Main..tex的文件夹的子目录中。我使用以下行加载软件包:
\usepackage{sty/prettythesis}
这有效,但是用Xelatex编译Main.Tex并使用 橡胶 给我一个警告:
sty/prettythesis.sty: You have requested package `sty/prettythesis',
but the package provides `prettythesis'. (page 1)
是否有一种方法可以防止此警告或处理这种情况,而无需在所有.STY-FILES的 supplypackage命令中包含“ STY ”或设置TexInputs环境变量(这似乎是从main.tex本身中不可能的) ?
解决方案
我相信这个线程在这里:
谈论完全相同的事情:因此,似乎唯一的选择是使用 TEXINPUTS
环境变量;或使用 导入包. (注意,有一个变体 import
包装 ...包括Tex文件pg 3。)
关于TexInputs的更多信息:
- TEX常见问题 - (la)Tex文件的“临时”安装
- 设置TEX环境变量路径
- 运行乳胶的环境变量
- Tex(和变体)编写数学-Math.umn.edu (请参阅“ Tex Inputs”)
- 安装乳胶软件包 - Tex搜索路径
希望这可以帮助;
干杯!
编辑:我希望可以直接在Tex文件中设置TexInputs路径(通过使用 \write18
- 注意,乳胶的一些版本 --enable-write18
, ,我的使用 -shell-escape
启用 \write18
;也可以看看 这) - 但似乎不可能:
"...这是不可能的。 ...设置了儿童过程的环境变量,但这对其父过程没有影响(TEX)。" (回复:在乳胶中设置环境变量TexInputs -comp.text.tex).
...所以,现在我只是打电话 pdflatex
在我的Linux中 bash
像这样:
TEXINPUTS=.//:$TEXINPUTS pdflatex ./myfile.tex
然后它将直接解决 \usepackage{mypackage}
在里面 myfile.tex
文件 - 即使 mypackage.sty
在子目录中,说 ./subdir/mypackage.sty
.
其他提示
只需在pdflatex(或latex)中以您的makefile或构建脚本拨打PDFLATEX(或LATEX)之前将行放在下面:
export TEXINPUTS=".:./sty:"
然后将您的软件包引用为:
\usepackage{prettythesis}
正如您发现的那样,将包裹放在子目录中(例如 ./sty/prettythesis.sty
关于您的主要 .tex
文件为 ./
),并通过
\usepackage{sty/prettythesis}
将成功加载包裹,但会产生警告
sty/prettythesis.sty: You have requested package `sty/prettythesis',
but the package provides `prettythesis'. (page 1)
如果您只想摆脱此警告,并且可以对 .sty
文件,然后您可以简单地更改其报告的软件包名称,通过更改 \ProvidesPackage
命令
\ProvidesPackage{sty/prettythesis}
如果您要在负载周围移动它,这可能是不便的,但是修改负载也不错。
更好的是,如果您有一个特定的,修改的标准Tex软件包(例如,例如, 这片纳特比卜),然后包装名称中的更改清楚地指示了它提供的包装,如果您重复使用该文件,则它将(很可能)重新调整警告,以提示您确保您知道自己在做什么。