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

我使用了一些不属于texlive的.sty文件,并希望将它们放在我的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环境变量(这似乎不能从main.tex本身) ?     
已邀请:
我相信这个帖子在这里: LaTeX社区•查看主题 - 包括tex文件 谈到完全相同的事情:所以看来,唯一的选择是使用
TEXINPUTS
环境变量;或使用导入包。 (注意,
import
包上有一个变体......包括tex文件第3页。) 关于TEXINPUTS的更多信息: TeX常见问题 - (临时)安装(La)TeX文件 设置TeX环境变量路径 运行LaTeX的环境变量 编写数学的TeX(和变体) - math.umn.edu(参见'TeX输入') 安装LaTeX软件包 - TeX搜索路径 希望这可以帮助; 干杯!   编辑:我希望可以直接在tex文件中设置TEXINPUTS路径(通过使用
write18
- 注意,某些版本的LaTeX使用
--enable-write18
,我的使用
-shell-escape
启用
write18
;另请参阅此内容) - 但它似乎不是可能:   “......这是不可能的。...设置了子进程的环境变量,但这对其父进程(TeX)没有影响。” (Re:在latex中设置环境变量TEXINPUTS - comp.text.tex)。 ...所以,现在我只需在我的Linuxcall9ѭ中调用
pdflatex
:   
TEXINPUTS=.//:$TEXINPUTS pdflatex ./myfile.tex
然后它会在
myfile.tex
文件中直接解决
usepackage{mypackage}
- 即使
mypackage.sty
在子目录中,比如说
./subdir/mypackage.sty
。     
在makefile或build脚本中调用pdflatex(或latex)之前,只需输入以下行:
export TEXINPUTS=".:./sty:"
然后将您的包引用为:
usepackage{prettythesis}
    
正如您所发现的那样,将包放在一个子目录中(例如,相对于主
.tex
文件
./sty/prettythesis.sty
./
),并通过以下方式调用包
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补丁),那么软件包名称的更改会清楚地表明它提供的软件包,如果您重复使用然后它会(很可能)重新发出警告,提示你确保你知道你在做什么。     

要回复问题请先登录注册