当我使用类似 的方法创建一个包含一个或多个子文档的主 pdflatex 文件\include{include/childdoc}
,然后使用 调用 pdflatex 时pdflatex -output-directory=out parent.tex
,我似乎无法找到在生成的文件上调用 bibtex 的方法parent.aux
。我尝试了 和,cd out; bibtex parent
但bibtex out/parent
都无济于事。
我知道有各种各样的构建工具,但我首先想让它只从 shell 中工作,而不需要特殊的构建工具依赖。
答案1
好的,我终于明白了(不确定是否已在某处记录):
我需要明确创建out
与我包含文件的目录同名的目录。然后,我需要在out
运行 bibtex 时位于该目录中。此外,bibtex 文件需要手动复制到该out
目录中。最后,我再次从顶级目录运行 pdflatex,再次使用 -output-directory 标志。
总结一下(从包含的目录开始parent.tex
):
mkdir out/include
pdflatex -output-directory=out parent.tex
cp mybib.bib out
cd out ; bibtex parent
cd .. ; pdflatex -output-directory=out parent.tex
(也许您需要再次运行 pdflatex,这取决于您使用的软件包……)
答案2
您可以使用环境变量 TEXMFOUTPUT 来指定 bibtex 文件的输出目录。对于您的情况,您可以创建如下 makefile:
all:
mkdir out -p
pdflatex -output-directory out parent.tex
TEXMFOUTPUT="out:" bibtex out/parent
pdflatex -output-directory out parent.tex
pdflatex -output-directory out parent.tex
考虑一个更复杂的变体,其中您将源文件放在子目录中src
。然后,您还将使用变量 BIBINPUTS 来指定 *.bib 文件的位置,并使用 BSTINPUTS 来指定 *.bst 文件的位置(参考书目样式)。然后 makefile 可能如下所示:
all:
mkdir out -p
TEXINPUTS="src:" pdflatex -output-directory out src/parent.tex
BIBINPUTS="src:" BSTINPUTS="out:" TEXMFOUTPUT="out:" bibtex out/parent
TEXINPUTS="src:" pdflatex -output-directory out src/parent.tex
TEXINPUTS="src:" pdflatex -output-directory out src/parent.tex
答案3
如果您使用的是 TexStudio,有一个简单的方法可以做到。在 Preferences/Commands 中,build/%.aux
如果您的 PdfLaTeX 输出文件夹名为 ,则可以将其添加到 BibTeX 行build
。
这对我来说是有效的,因为它与my_bibliography.bib
我的 LaTeX 文件位于同一文件夹中,并且在我的 LaTeX 文件末尾使用以下内容。
\bibliographystyle{plain}
\bibliography{bibliography}
我想您可以找到其他编辑器/编译器的类似设置。
希望这可以帮助 !
答案4
您检查过辅助文件的位置吗?--output-directory 不会影响辅助文件(至少在 miktex 中不会。在 miktex 中,有 --aux-directory 开关用于设置辅助文件的目录)。此外 - 当您使用时\include
:不要忘记它们将不止一个辅助文件。