我有一个与此处描述的问题非常相似的问题: 如何使用包含的 TeX 创建单独章节的 PDF?
我想从多个 TeX 文件(chap01.tex、chap02.tex 等)创建单独的 PDF 文件(chap01.pdf、chap02.pdf 等),这些文件都包含在我的 maintex.tex 文件中。但是,主要区别在于我的 main.tex 文件位于我的主要项目目录中(例如 /project),而文章文件位于子目录中(例如 /project/heft1-2019)。
\documentclass[a4paper]{report}
\usepackage[utf8]{inputenc} % Required for including letters with accents
\usepackage[T1]{fontenc} % Use 8-bit encoding that has 256 glyphs
\usepackage[ngerman]{babel}
\begin{document}
\include{heft1-2019/chap01}
\include{heft1-2019/chap02}
\include{heft1-2019/chap03}
\end{document}
我尝试了不同的解决方案,但对我来说最优雅的似乎是来自 egreg 的 bash 命令: https://tex.stackexchange.com/a/31366/192099
for i in chap*.tex; do j=${i%.tex}; pdflatex -jobname=the$j "\includeonly{$j}\input{maintex}"; done
如果所有 tex 文件都在同一个目录中,那么这个 bash 命令就可以很好地运行。
由于文章的 tex 文件位于子目录中,因此编译显然不起作用。
我如何重写 bash 命令,以便我可以从主项目目录运行它并在文章文件(chap01.tex、chap02.tex,...)所在的子目录(heft1-2019)中创建 PDF?
答案1
有两种方法:
从基础目录运行 LaTeX
% maintex.tex
\documentclass{report}
\begin{document}
\tableofcontents
\include{heft1-2019/chap01}
\include{heft1-2019/chap02}
\include{heft1-2019/chap03}
\end{document}
% heft1-2019/chap01.tex
\chapter{First chapter}
Foo bar.
% heft1-2019/chap02.tex
\chapter{Second chapter}
Baz.
% heft1-2019/chap03.tex
\chapter{Third chapter}
Quux.
从包含以下内容的目录运行 Bash 命令maintex.tex
:
for i in heft1-2019/chap*.tex; do j="${i%.tex}"; base="$(basename "$j")"; pdflatex -jobname="$base" "\includeonly{$j}\input{maintex}"; if [ -f "${base}.pdf" ]; then mv "${base}.pdf" heft1-2019; fi; done
当你想编译整个时:
pdflatex maintex.tex
使用此方法,包含的文件的路径是相对于包含的目录的maintex.tex
。
从子目录运行 LaTeX
% maintex.tex
\documentclass{report}
\begin{document}
\tableofcontents
\include{chap01}
\include{chap02}
\include{chap03}
\end{document}
和heft1-2019/chap01.tex
,heft1-2019/chap02.tex
,heft1-2019/chap03.tex
如上所述。 Bash 命令仍然从包含以下内容的目录运行maintex.tex
(根据您的问题):
(cd heft1-2019 && for i in chap*.tex; do j="${i%.tex}"; pdflatex -jobname="the$j" "\includeonly{$j}\input{../maintex}"; done)
当你想编译整个时:
(cd heft1-2019 && pdflatex ../maintex.tex)
使用此方法,包含的文件的路径与子目录相关heft1-2019
,因为 LaTeX 是从那里运行的。