如何使用 embedfile 包和 pdflatex 嵌入整个源文件树?

如何使用 embedfile 包和 pdflatex 嵌入整个源文件树?

该包中的哪些命令embedfile会将整个源文件树嵌入到 pdfLateX 的输出中?

我所拥有的树的类型非常简化,如下所示,其中 (d) 表示目录:

                mainsourefile.tex
              /          |             \
       preamble (d)   main (d)     one.bib,two.bib biblatex.cfg, ...
                     /     |        \
               chap1 (d)  chap2 (d)  chap3 (d)
              /     \        :          :
         sec11.tex  sec12.tex

也就是说,除了主.tex文件之外,在与 相同的顶级目录中还有一些单独的文件mainsourcefile.tex。该顶级目录有几个子目录(用于前言、正面内容、主要内容、背面内容)。而子目录mainmatter又有各个章节的子目录,每个这样的子目录由多个文件组成.tex(每个章节的一个文件)。

树结构的骨架也用以下形式表示mainsourcefile.tex

\documentclass{memoir}
\input{preamble/preamble}
\makeindex

\begin{document}

\include{front/frontmatter} 
% frontmatter.tex inputs several files
\tableofcontents

\mainmater
\input{main/mainmatter} 
% mainmatter.tex includes main/chap1/chap1.tex;
%      chap1.tex inputs sec11.tex, sec12.tex. etc.
% mainmatter.tex includes main/chap2/chap2.tex; etc.

\backmatter
\include{back/backmatter}
% backmatter.tex inputes back/indexes.tex, back/bibs.tex.

\end{document}

在文档中embedfile我找不到足够的示例来指导我如何嵌入这样的文件树。

答案1

除了 shell 转义功能(运行外部程序)外,LaTeX 无法读取目录列表。此外,如果包含文件,TeX 语言不知道该文件来自哪里。文件可以位于当前目录中,也可以位于当前目录下,也可以来自标准位置。

mkjobtexmf

.log文件包含带路径的文件名,但由于未定义的结构和硬换行符,解析它并不好玩。但是,许多 TeX 编译器(pdfTeX、XeTeX、LuaTeX)通过选项提供文件名记录器--recorder。这可用于检测输入文件路径。例如,该项目使用了mkjobtexmf

具体流程如下:

  1. 运行mkjobtexmf生成一个目录,其中包含 LaTeX 编译所使用的所有文件。

  2. 删除不需要的文件并可能添加其他重要的源文件。

  3. 生成一个档案文件(zip及相关文件)。

  4. 通过 包含存档文件embedfile。我认为将源文件包含为多个单个文件没有多大意义。

版本控制系统,例如git

获取所有源文件的一个更简单的方法是向版本控制系统索取。例如,git使用。

  1. 将项目放入版本控制:
    cd "Project directory"
    git init .
  1. 添加源文件(git add)并提交(git commit)。

  2. 向版本控制系统询问文件。git其功能使其变得简单archive

    git archive --format=zip -o project.zip master

这会将分支的所有版本文件master放入存档文件中project.zip

  1. 将存档文件包含在内embedfile

相关内容