如何从子目录加载乳胶.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的修补程序 )的特定修改版本,那么软件包名称的变化清楚地表明它提供了什么软件包,如果你重用文件,那么它将(很可能)重新提出一个警告,提示你确保你知道你在做什么。