有没有办法将我的一些项目文件放在单独的文件夹中?

有没有办法将我的一些项目文件放在单独的文件夹中?

我的大学提供了一个论文项目模板,里面有大量文件。我当前的工作目录看起来有点像这样:

package1.sty
package2.sty
package3.sty
classFile.bst
classFile.cls
ttlps.def
logo.ps
... lots of other stuff ...
mythesis.tex    <-- these are the only files I work with
chapter01.tex   <--
chapter02.tex   <--

我想知道是否有一个好方法可以将所有这些文件“移开”,而无需全局安装它们(所有这些包仅对此特定项目有用)。有没有办法让我的目录结构看起来更像这样?

out/    <--- .pdf, .dvi, .aux, .log, etc go here
stuff/  <--- all the custom packages, logos, etc go here.
mythesis.tex
chapter01.tex
chapter02.tex

我在调用 latex 时通过传递一个标志来分离输出文件--output-directory,但我不知道是否有办法将所有其他内容移动到单独的文件夹中。到目前为止,我最接近的方法是运行 latex 时将其移动cdstuff文件夹中,但这迫使我将所有 tex 文件引用为 而../chapterXX不是chapterXX,即使在include指令和类似的东西中也是如此。

我想知道是否有办法做我想做的事情,而不需要借助于额外的工具,如快照或 arlatex,如建议的那样另一个问题

答案1

笔记:以下内容适用于所有基于 TeXLive 的发行版,但不适用于 MikTeX。

我通常将此类内容放在项目本地texmf子文件夹中。为了让pdflatex其他人真正搜索此文件夹,必须将其添加到TEXINPUTS环境变量中。我通常在 shell 中有一个sourceme.bash文件:source

export TEXINPUTS=./texmf//:${TEXINPUTS}
export BSTINPUTS=./texmf//:${BSTINPUTS}
export BIBINPUTS=./texmf//:${BIBINPUTS}

但是,由于我已经在几乎每个项目中开始这样做,因此我最近将这些行添加到我的登录脚本中,以便在每种情况下pdflatex都会查找一个./texmf文件夹。

如果您使用 Makefile,当然您也可以这样做:

export TEXINPUTS := ./texmf//:${TEXINPUTS}
export BSTINPUTS := ./texmf//:${BSTINPUTS}
export BIBINPUTS := ./texmf//:${BIBINPUTS}

路径末尾的双斜杠允许pdflatex递归搜索相应的文件夹,因此您可以在其中维护完整的符合 TDS 的 texmf 树。与TEXINPUTSLaTeX 样式文件、图像和\inputs 类似,还有更多可用的环境变量。最重要的是:

  • BSTINPUTS用于 BibTeX(和biblatex)样式文件。
  • BIBINPUTS用于.bib文件。
  • TEXFONTS用于附加(矢量)字体。

相关内容