我试图理解如何将(相对)路径与包一起使用subfiles
。特别是,我不清楚我通常会包含在\include
、、\input
和\includegraphics
中的内容\bibliography
应该如何包含在子文件中。
\include
子文件是否使用或\input
或添加具有相对于子文件目录的路径的内容是否重要\import
,或者它是否因为内部而做同样的事情subfile
处理而做同样的事情?包文档注意,它\import
用于解决独立编译不在“主文件”目录中的子文件的问题,其中包含\usepackage{subfiles}
:
有时,将子文件及其图像和补充文件一起放入其自己的目录中是可取的。现在的困难是,这些附加文件必须根据主文件或子文件的排版方式通过不同的路径进行寻址。从 1.3 版开始,子文件包使用导入包来处理此问题。
答案1
为了缓解一些困惑:2020 年之前的大多数帖子都提到了旧版本的软件包subfiles
,这需要做更多的工作。较近期帖子中的信息可能比较旧帖子中的信息更可靠。
包含、输入和使用子文件包导入
“子文件是否使用 \include 或 \input 或 \import 来添加具有相对于子文件目录的路径的内容是否重要,或者它是否因为内部子文件处理而执行相同的操作?”
是的,这很重要,这些命令的作用不同。告诉 LaTeX用文件的内容\input
替换命令;如果此文件引用其他文件,则路径信息将相对于包含该命令的文件进行解释,即使该文件位于另一个目录中。在这方面是相似的,但做了一些额外的事情。但是, 会注意修改输入和图形路径,以便解释导入文件中的任何、、和语句中给出的路径\input
\input
\include
\import
\input
\include
\includegraphics
\import
\subfile
相对的到导入的文件。\subfile
本质上是一个\import
命令,但另外跳过了导入文件的前言。因此,\import
和的理念\subfile
是,导入/子文件文件中的任何路径信息都与此文件相关,无论其他哪个文档使用该文件。
带有子文件包的图形路径
“我是否需要先更改 \graphicspath 以确保图形路径设置为包含相应子文件的目录?”
不,这是件小事\import
,\subfile
要小心处理。
如何使用项目范围的 bibfile
以下示例假设您使用经典 BibTeX 和以下项目结构:
main.tex
allrefs.bib
part1/details.tex
主要.tex:
\documentclass{article}
\bibliographystyle{plain}
\usepackage{subfiles}
\begin{document}
This is the main file, citing~\cite{a}, but also~\cite{b}.
\subfile{part1/details}
\bibliography{allrefs}
\end{document}
allrefs.bib:
@Article{a,
author = {Morris, B.},
title = {Whipping the whip},
journal = {JWCS},
year = {2022}
}
@Article{b,
author = {Henk, V.},
title = {Hipping the hop},
journal = {JWCS},
year = {2022}
}
第 1 部分/详细信息.tex:
\documentclass[../main]{subfiles}
\begin{document}
\section{The details}
This is a subfile, but can also be processed as a main file.
It sites~\cite{b}.
\ifSubfilesClassLoaded{%
\bibliography{../allrefs}% <<< path relative to this file
}{}
\end{document}
在主目录中,你可以main.tex
使用以下命令进行排版
pdflatex main; bibtex main; pdflatex main; pdflatex main
而子文件可以用
cd part1; pdflatex details; bibtex details; pdflatex details; pdflatex details
答案2
我曾经subfiles
写过一个相当广泛的作品集,它由八个章节、一个包含附加文献的附录和一个包含大量外部 PDF 的档案组成。所有这些都是作为主文件的子文件创建的。我目前正在使用相同的设置将该作品集重新制作成一本书。作品集和书籍均基于Legrand 的公共模板,可以在其他网站The Orange Book
上找到。Overleaf
使用Orange Book
一个structure.tex
文件来定义要创建的书籍的大量布局。它本质上是preamble
主文件的。使用命令将该文件加载到主文件中\input{structure.tex}
。由于文件bibliographic environment
中也包含,因此structure.tex
主文档的前几行如下所示:
\documentclass[11pt,fleqn]{book}
\input{structure.tex} % Insert the commands.tex file which contains the majority of the structure behind the template
\addbibresource{hb_specialist_new.bib} % BiblateX bibliography file
\input{appendix/woordenlijst}
\usepackage{subfiles}
如您所见,我将三个单独的文件加载到我的主要 tex 文件中。最后一个文件woordenlijst
包含glossery
本书所有章节中使用的条目。bibliography
源文件以通常的方式加载。structure.tex
和hb_specialist_new.bib
文件都位于与main.tex
文件相同的目录中。该woordenlijst.tex
文件位于名为附录。
章节位于主文件夹的子文件夹中,其图表位于其文件夹的子文件夹中。因此相对于主文件夹有两个文件夹深度。文件夹结构简而言之如下:
Parent folder containing the `main.tex`, `structure.tex` and `hb_specialist_new.bib` files
|_ figures folder that contain images for chapter heading and main file
|_ appendox folder containing `woordenlijst.tex`
|_ domein1 folder containing `chapter_one.tex`
|_ figures1 folder containing the figures used in chapter one
|_ domein2 folder containing `chapter_two.tex`
|_ figures2 folder containing the figures used in chapter two
|_ etc.
该main.tex
文件加载章节文件使用以下行(这里给出前两章):
%----------------------------------------------------------------------------------------
% CHAPTER 1
%----------------------------------------------------------------------------------------
\chapterimage{lancaster1.jpg} % Chapter heading image
\subfile{domein1/zien_weten}
%----------------------------------------------------------------------------------------
% CHAPTER 2
%----------------------------------------------------------------------------------------
\subfile{domein2/zien_begrijp}
由于Orange Book
模板在章节标题中使用了图片,因此本例中包含了该文件,以显示如何在章节文件中使用相对路径。使用包时,该图像文件必须包含在章节文件的标题中subfiles
。使用包时,import
您可以删除该图像加载行。
\documentclass[../hbspec_main_mhc]{subfiles}
\chapterimage{../figures/lancaster1.jpg} % Chapter heading image
\begin{document}
\chapter{Weten en begrijpen}\index{Weten en begrijpen}
\label{chp:weten}
如您所见,图像标题的路径由其相对路径给出。在章节文件中,使用以下行加载图形:
{\includegraphics[width=0.95\linewidth]{figures1/Emotional-Intelligence-Competencies.png}}
请记住文件夹图1是域1(第一章)文件夹。编译时,这些图像从各自的路径加载。
总结一下您的问题:
- 如何将另一个文件包含到子文件只要你保持路径完整性在您的文件夹和子文件夹中。
\graphicspath
当您在 中使用相对路径结构时,无需更改\includegraphics
。但是如果您愿意,您提到的问题中的两个答案都非常有用。- 只要你
bibliography.bib
在前言主文件的所有子文件都可以访问该文件,并且将为主文件中的所有子文件创建参考书目。
笔记我目前使用包import
里面的主文本文件。从 切换到subfiles
相当import
容易,只需更改加载章节文件。主文件现在包含以下几行来加载第一章:
%----------------------------------------------------------------------------------------
% CHAPTER 1
%----------------------------------------------------------------------------------------
\chapterimage{lancaster1.jpg} % Chapter heading image
\subimport{domein1}{zien_weten}
在第一章的标题中前言行不再需要,因此章节文件的第一行内容如下:
\chapter{Weten en begrijpen}\index{Weten en begrijpen}
\label{chp:weten}