我正在根据过去几年写的一些文章整理我的毕业论文。我使用subfile
一个main.tex
文件将所有序言集中到一个地方,然后插入所有文章。每一篇文章/章节都位于自己的文件夹中,其中包含一堆其他子文件和图像,而bib
我用于所有项目的大型文件位于 的上层文件夹中main.tex
。示意图文件夹树可以是以下形式:
- all_tex_projects 文件夹
bibliography.bib
- 论文文件夹
main.tex
- chap1文件夹
chap1.tex
- 包含一些文件的文件夹
- chap2文件夹
chap2.tex
- 带有外部标签的文件夹
tex
- 包含一些图表的 plots 文件夹
我希望能够单独编译单个文件以及主文档,其中包含图表、外部表格和参考书目(尽管完整的参考文献列表将仅在编译的主文档中)。我发现了改变图路径的方法,但这会破坏参考文献,反之亦然。有没有全面、优雅的解决方案?
梅威瑟:
主文本
\documentclass{report}
\usepackage[backref=true,
backend=biber,
style=authoryear-comp,
url=false,
doi=false,
isbn=false,
eprint=false,
language=auto,
natbib=true
]{biblatex}
\addbibresource{../bibliography.bib}
\usepackage{csquotes}
\usepackage{subfiles}
\begin{document}
\chapter{Chapter I}
%\graphicspath{{./chap1/plots}{plots/}}
\subfile{./chap1/chap1.tex}
\chapter{Chapter II}
%\graphicspath{{./chap2/plots}{plots/}}
\subfile{./chap2/chap2.tex}
\end{document}
第一章.tex
\documentclass[../main.tex]{subfiles}
\begin{document}
Some text with a citation from the all-encompassing bib \citep{item} to illustrate next table \ref{tab_in_chap2} with relative path
subfile{../chap2/tables/table.tex}
and a plot too, local to this file
\begin{figure}
\includegraphics{./plots/a_plot.pdf}
\end{figure}
Last, a piece of tex from this local folder
\subfile{./chap1/tables/tab.tex}
\end{document}
答案1
您可以使用该xr
包。
清洁解决方案:在主文件中,包含以下行
\usepackage{xr}
\usepackage{subfiles}
\externaldocument[M-]{\subfix{main}}% must appear after \usepackage{subfiles}
在子文件中,所有应与排版主文档时显示相同值的引用都加上前缀M-
。这意味着:对于标签,您写\label{XXX}
,对于引用,您写\ref{M-XXX}
和\pageref{M-XXX}
。
在排版子文件之前,您必须排版主文件几次以获得main.aux
包含正确引用的稳定文件。
肮脏的解决方案:如果您想避免修改从XXX
到的所有引用,请省略命令中的M-XXX
选项。缺点是您会收到警告,您应该检查/命令是否显示您期望的值。背景是标签确实是多次定义的,一次使用主文档中的编号/页码,一次使用子文件中的编号。似乎主文档中的编号胜过子文件中的编号,因此您得到了您想要的,但在更改的设置中可能会有所不同。M-
\externaldocument
multiply defined label
\ref
\pageref