如何从子目录加载乳胶.sty文件?

我使用了一些.sty文件,这些文件不是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'\ ProvidePackage命令中包含“sty \”或设置TEXINPUTS环境variables(这似乎是不可能从main.tex本身) ?

我相信这里的线程:

  • LaTeX社区•查看主题 – 包括tex文件

谈论完全相同的事情:所以看来,唯一的select是要么使用TEXINPUTS环境variables; 或使用导入包 。 ( 注意,在import包上有一个变体, 包括tex文件,第3页

更多关于TEXINPUTS:

  • TeX常见问题 – “临时”安装(La)TeX文件
  • 设置TeX环境variablespath
  • 运行LaTeX的环境variables
  • 用于写math的TeX(和变体) – math.umn.edu (参见'TeXinput')
  • 安装LaTeX软件包 – TeXsearchpath

希望这可以帮助;
干杯!

编辑:我希望可以直接在tex文件中设置TEXINPUTSpath( 使用\write18 – 注意,一些版本的LaTeX使用--enable-write18 ,我使用-shell-escape来启用\write18 ;另请参阅这 ) – 但它似乎是不可能的:

…这是不可能的… …设置subprocess的环境variables,但是这对父进程(TeX)没有影响。 ”( Re:设置latex中的环境variablesTEXINPUTS – comp.text.tex )。

…所以,现在我只是在我的Linux bash调用pdflatex

TEXINPUTS=.//:$TEXINPUTS pdflatex ./myfile.tex

然后直接在myfile.tex文件中parsing\usepackage{mypackage} – 即使mypackage.sty位于子目录中,比如./subdir/mypackage.sty

在生成文件或构build脚本中调用pdflatex(或latex)之前,只需简单地input下面的行:

 export TEXINPUTS=".:./sty:" 

然后参考你的包:

 \usepackage{prettythesis} 

正如你发现的那样,将软件包放在一个子目录下(比如说./sty/prettythesis.sty ,就是关于你的main .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软件包(比如说这个natbib的修补程序 )的特定修改版本,那么软件包名称的变化清楚地表明它提供了什么软件包,如果你重用文件,那么它将(很可能)重新提出一个警告,提示你确保你知道你在做什么。