带有子文件 latex 的不同目录中的图形路径

带有子文件 latex 的不同目录中的图形路径

这是我的目录结构 -

  • 主 tex 文件/Diss/main.tex
  • 章节 tex文件Diss/chap1/chap1.texDiss/chap2/chap2.tex
  • 图片Diss/chap1/images/f1.pngDiss/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/(用于图像文件)

相关内容