我使用一些不属于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文件中设置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软件包(例如,例如, 这片纳特比卜),然后包装名称中的更改清楚地指示了它提供的包装,如果您重复使用该文件,则它将(很可能)重新调整警告,以提示您确保您知道自己在做什么。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top