如何在小型嵌套文件夹中组织大型文档

如何在小型嵌套文件夹中组织大型文档

前言

我正在编写一个大型文档,并且我想使其不仅在源代码方面(我知道诸如\inputinclude以及standalone包之类的命令)保持良好的结构,而且在包含实际源文件的文件夹方面也保持良好的结构。

下列的如何处理大型项目,我的项目结构如下:

/my_project
    |-main.tex
    |-... % other directories
    |-/contents 
        |-chap01/ % more than one chapter
            |-chap01.tex
            |/img
                |-img01.tex % more than one image

关键点在于,每个章节文件夹都有一个内部文件夹,其中包含该章节中要排版的图像。现在的问题是,图像(通常是 TikZ 图形和 PGFplots)待编译) 放置在最低级别的目录中并通过 包含standalone,则会引发错误并且文档不会被编译。

实际问题

所以我的问题是:如果提议的结构合理,我该如何使它发挥作用?如果您认为这不是组织和管理项目的最佳方式,您能否建议(或指出有关)其他方式?

如何重现问题

main.tex

\documentclass{scrbook}
\usepackage{standalone}
\standaloneconfig{mode=buildnew}
\usepackage{graphicx}

\begin{document}
\include{./contents/chap01/chap01}
\end{document}

chap01.tex

\chapter{Test A}
\includestandalone{./img/img01}

img01.tex

\documentclass{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
  \fill [red] (0,0) circle (2cm);
\end{tikzpicture}
\end{document}

这里有一个小脚本,可以帮助减少 GNU/Linux 用户的设置麻烦。(将文件main.texchap01.tex和放在img01.tex文件夹中并运行它。)

#!/bin/bash

# Build folders
mkdir ./contents ./contents/chap01 ./contents/chap01/img

# Place files in their respective directory
cp chap01.tex ./contents/chap01
cp img01.tex ./contents/chap01/img

# Remove files from root directory
rm ./chap01.tex ./img01.tex

# Compile main.tex
pdflatex -shell-escape main.tex

相关问题(含评论)

答案1

我不确定我是否能以准确的方式回答所发布的问题,但我们还是开始吧。

从 LaTeX 的角度来看,当前工作目录./就像 unix 用户所说的那样。为了找到图像,您必须进入内容目录 ( ./contents/),然后再进入 chapter01 ( ./contents/chap01/),最后进入图像文件夹 ( ./contents/chap01/img/)。每次都这样写有点乏味,但有类似$TEXINPUTS或 的东西\graphicspath。这将是纯 LaTeX 的一面。

从另一个角度来看,在 shell 中更改目录可能很有趣,也可能很痛苦。如果您使用文件管理器,则可以通过单击来更改目录。

在我看来(看,这是基于观点的),最好的做法是只使用唯一的文件名,不仅适用于图形,而且适用于所有文件;tex 文件、图像文件、pdf 文件。

我曾经合作与人类一起,保存了所有期刊文章照原样,意思是带有一个奇怪的数字。这个人的系统相当完善,你必须至少向下 4 层才能看到 pdf 文件(记住,所有文件名都是随机的数字)。如果您要查找琼斯在 2011 年撰写的文章,则可能需要花 15 分钟才能找到它,因为您无法知道该人将其放在哪里。

我想说什么呢?
如果您小心谨慎地以精确且独特的方式命名文件名,那么您就不会失去对文件的监督,并且您的主管/学生/同事也不会发疯。

您可以拥有一个包含一千个 pdf 文件的数据库,查找jones2011并不困难。coffeemakerInit.jpg与图像文件不同coffeemakerExploded.jpg,但无需打开图像文件,您就知道它包含什么。对 tex 文件和标签也一样。您可以决定什么是好的标签,这会为您节省一分钟的搜索标签(或图像)时间,或节省 15 分钟的搜索期刊文章时间 ;-)

把事情简单化 ;-)

答案2

import包允许插入另一个目录的文档,允许该文件找到自己的\input文件、、 \includegraphics等。例如,我只使用docmute包制作独立文件:

img01.tex在目录中contents/chap01/img/

\documentclass[margin=5mm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
  \fill [red] (0,0) circle (1cm);
\end{tikzpicture}
\end{document}

平均能量损失

chap01.tex在目录中contents/chap01/

\documentclass[12pt]{article}
\usepackage{docmute}
\usepackage{import}
\usepackage{tikz}
\begin{document}
This is the subdocument\par\bigskip 
\subimport{img/}{img01}
\end{document}

平均能量损失

main.tex

\documentclass{scrbook}
\usepackage{docmute}
\usepackage{import}
\usepackage{tikz}
\begin{document}
This is in the main document\par\bigskip   
\subimport{contents/chap01/}{chap01}
\end{document}

平均能量损失

相关内容