在子文件中导入文件的正确方法是什么?

在子文件中导入文件的正确方法是什么?

subfiles 文档解释说,当主文件和子文件位于不同的目录中,并且子文件包含相对于它们自己的目录的路径时,它使用该\import包处理路径问题。它出现这意味着在添加传递给 的文件内容时subfiles使用。例如,大致相当于修改然后调用的前言。不清楚的是如何正确地\import\subfile\subfile{ch/ch1.tex}ch1.tex\import{ch/ch1.tex}嵌套进口,即在导入的子文件内导入。

下面我提供了一个示例项目/目录结构和两个示例文件,假设 main.tex 应该导入 ch1.tex 而 ch1.tex 应该导入 fig.png 和 text.txt。

 +-- main.tex
 +-- chapters
     |
     +-- ch1.tex
     +-- content
         |
         +-- text1.txt
         +-- fig1.png
%% main.tex
\documentclass{book}
\usepackage{graphicx}
\usepackage{subfiles}

\begin{document}
    \subfile{chapters/ch1.tex} % \imports ch1.tex
\end{document}
%% ch1.tex
\documentclass[../main.tex]{subfiles}
\begin{document}
    \import{content}{text.txt}        % adds some text - note use of \import
    \includegraphics{content/fig.png} % adds a figure
\end{document}

当我编译上述文件时,它们会产生所需的输出。但是,在 main.tex 中的调用\import中使用了as,\subfile{chapters/ch1.tex}但随后是用过的之内ch1.tex 中的\import{content}{text.txt}调用。import 文档表示\subimport应该用于后者。如 \subimport requires a path relative to the currently imported file, the call should be\subimport{content/}/}`。

在子文件中导入时是否始终使用subimport? 如果是这样,我感到困惑,为什么\import与交换\subimport会产生相同的结果,而它们应该指向不同的目录,如文档中的示例所示import

答案1

可以\input直接使用。

│  main.tex
└─chapters
    │  ch1.tex
    └─content
            fig1.png
            text1.txt

main.tex

\documentclass{book}
\usepackage{graphicx}
\graphicspath{{chapters/content/}}
\makeatletter
\newcommand{\input@path}{{chapters/}{chapters/content/}}
\makeatother
\begin{document}
aaa
\input{ch1.tex}
bbb
\end{document}

ch1.tex

ccc
\input{text1.txt}
\includegraphics[width=3cm]{fig1.png}
ddd

text1.txt

eee

在此处输入图片描述

相关内容