Qual é a maneira correta de importar arquivos em subarquivos?

Qual é a maneira correta de importar arquivos em subarquivos?

Osubfiles documentosexplica que ele lida com problemas de caminho quando os arquivos principais e subarquivos estão em diretórios diferentes e os subarquivos contêm caminhos relativos aos seus próprios diretórios usando o \importpacote.Pareceque isso significa subfilesusar \importao adicionar o conteúdo dos arquivos passados ​​para \subfile. Por exemplo, \subfile{ch/ch1.tex}é aproximadamente equivalente a modificar o preâmbulo da ch1.texchamada \import{ch/ch1.tex}. O que não está claro é como fazer corretamenteimportações de ninhos, ou seja, importar dentro de subarquivos importados.

Abaixo, forneço um exemplo de estrutura de projeto/diretório e dois arquivos de exemplo, assumindo que main.tex deve importar ch1.tex e ch1.tex deve importar fig.png e 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}

Quando compilo os arquivos acima, eles produzem a saída desejada. No entanto, como \importé usado na \subfile{chapters/ch1.tex}chamada em main.tex mas então étambémusadodentro dech1.tex na \import{content}{text.txt}chamada. Oimport documentosindica \subimportque deve ser usado para o último. Como \subimport requires a path relative to the currently imported file, the call should be\subimport{content/}{text1.txt}`.

A importação em subarquivos deve sempre usar subimport? Nesse caso, estou confuso sobre por que a troca \importcom \subimportproduz os mesmos resultados quando eles provavelmente deveriam apontar para diretórios diferentes, como nos exemplos da importdocumentação.

Responder1

Você pode usar \inputdiretamente.

│  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

insira a descrição da imagem aqui

informação relacionada