子目录中的子文件,未找到文件

子目录中的子文件,未找到文件

我正在和另外两个人一起编写一份长文档,使用 Dropbox 作为文件存储机制。我希望每个人都能单独处理自己的部分。因此,我希望能够单独编译每个文档,以及编译主文档。子文件包似乎非常适合此目的。

我尝试按照以下示例进行模块化文档维基百科,但对我来说不起作用。顶层文档可以构建,但底层文档会出现文件未找到错误。

这是我的设置:

  • 图片文件夹
  • tex 文件夹
  • 主文本
  • 风格.sty

在 main.tex 内部:

\documentclass[11pt,letterpaper]{article}
\usepackage{styling} %includes \usepackage{subfiles}
\begin{document}
\maketitle
\tableofcontents
\subfile{./tex/subpiece1}
\end{document}

在 tex 文件夹中的 subpiece1 内:

\documentclass[../main.tex]{subfiles}
\graphicspath{ {Images/subpiece1/} }

\begin{document}
\section{sectiontitle}
%Images and text
\end{document}

单独构建子文件时出现错误:../main.tex:4: LaTeX 错误:未找到文件“styling.sty”。[^^M]

答案1

当我使用子文件包编译我的第一个多文件文档时,我遇到了与您相同的问题。

由于我不是长期的 Latex 用户,所以我并不完全了解问题的机制,但我怀疑问题在于当您编译“从属”文件(在您的情况下为“subpiece1.tex”)时,您的编译器会在与“subpiece1.tex”和其他默认 tex 目录相同的目录中搜索自定义包。

我设法通过改变 \usepackage{} 命令来解决这个问题,使其同时包含一个对于“主”和“从” .tex 文件都通用的相对路径。

你需要做什么:

  1. 在您的主目录中为主文档添加一个文件夹。即您的主目录应该有文件夹:master 文件夹(包含 main.tex)、tex 文件夹、images 文件夹。
  2. 编辑您的 main.tex 文件夹,以便 \usepackage{} 命令包含“styling.sty”的相对路径(它应该读取 \usepackage{../styling},没有文件扩展名)
  3. 如果您正确执行了第一步,则“styling.sty”将具有来自“main.tex”和“subpiece1.tex”的相同相对路径(两者的相对路径都位于一个文件夹上方。这是通过 \usepackage{} 命令中的“../”实现的)
  4. 更新所有其他相关文件路径,以便它们按要求读取。

main.tex 现在显示为

\documentclass[11pt,letterpaper]{article}
\usepackage{../styling} %includes \usepackage{subfiles}
\begin{document}
%\maketitle (I just removed these because for the demonstartion i didnt actually need them)
%\tableofcontents
\subfile{../tex/subpiece1}
\end{document}

subpiece1 现在读作

\documentclass[../master/main.tex]{subfiles}
% again I just removed the graphics path because I have no need for it
\begin{document}
\section{sectiontitle}
%Images and text
\end{document}

我个人更喜欢将 preamble.sty 分组到与 main.tex 相同的文件夹中,但基本思路是一样的。我相信任何路径都可以,只要“main.tex”和“subpiece1.tex”文件的相对路径相同即可。

我也怀疑有更好/更优雅的方法来解决这个问题,但到目前为止这对我有效。

相关内容