这是我的目录结构 -
- 主 tex 文件
/Diss/main.tex
- 章节 tex文件
Diss/chap1/chap1.tex
等Diss/chap2/chap2.tex
- 图片
Diss/chap1/images/f1.png
等Diss/chap2/images/f2.png
我想编译主文件以及每个章节。因此,我发现子文件包很有用。例如
主文本
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{graphicx}
%here is the path
\graphicspath{{chap1/images/}{images/}}
\usepackage{subfiles}
\usepackage{blindtext}
\begin{document}
\subfile{chap1/chap1}
\end{document}
第一章.tex
\documentclass[../main.tex]{subfiles}
\begin{document}
\begin{figure}[bh]
\centering
\includegraphics[width=4cm]{f1}
\label{fig:img1}
\caption{ShareLaTeX learn logo}
\end{figure}
Hello, here is some text...
\end{document}
效果很好。到目前为止一切顺利。现在,我有几个章节,很可能\graphicspath{{chap*/images/}{images/}}
在每次调用章节之前使用会起作用(* 是章节号)。但是,我不太喜欢它,因为我必须多次添加它。有没有更好的方法来管理这种类型的结构。
PS-我花了很多时间,但没有找到满意的答案,可能是我的搜索方向错了。
答案1
如果您在主文件之前和相同位置添加\providecommand{\main}{..}
每个子文件,您现在可以用例如替换每个相对路径。命令在子文件中将 \main 定义为(表示上面的文件夹),但在主文档中将其定义为(同一文件夹)。Providecommand 仅在尚未定义时定义命令,因此当您编译 main.tex 时,子文件中的行基本上会被忽略。当子文件独立编译时,不会发生这种情况。documentclass
\providecommand{\main}{.}
\main/images/f1.png
..
.
\providecommand{\main}{..}
这还允许您将所有图像放在 images 文件夹中,该文件夹应该是主文件夹的子文件夹。您的目录结构现在可能变成:
/Diss/main.tex
/Diss/images/
/Diss/images/f1.png
/Diss/images/f2.png
...
/Diss/chap1/
/Diss/chap1/chap1.tex
...
MWE.main.tex
\providecommand{\main}{.}
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{graphicx}
%here is the path
\graphicspath{{\main/images/}{images/}}
\usepackage{subfiles}
\usepackage{blindtext}
\begin{document}
\subfile{\main/chap1/chap1}
\end{document}
第一章.tex
\providecommand{\main}{..}
\documentclass[\main/main.tex]{subfiles}
\begin{document}
\begin{figure}[bh]
\centering
\includegraphics[width=4cm]{f1}
\label{fig:img1}
\caption{ShareLaTeX learn logo}
\end{figure}
Hello, here is some text...
\end{document}
答案2
我以这种方式处理此类问题。我在序言中定义了一个命令,用于(重新)设置图形路径...
\newcommand*{\resetfigpath}[1]{
\graphicspath{{#1/figures/}}
}
我在每章开始时调用命令......
\resetfigpath{chapter01}
我的理解是,应尽可能缩短图形路径中的文件夹列表,以最大程度地减少解析搜索路径的时间。此外,我在文档正文中的中间点(重新)设置图形路径时没有遇到任何问题。
我很好奇为什么这种方法不是显而易见的或可行的。
答案3
我认为,最简单的解决方案是添加
\graphicspath{{./img}{../img}}
如果您的文件夹结构如下所示,则转到 main.tex:
- 主文本
- tex/(用于 .tex 文件)
- img/(用于图像文件)