该包中的哪些命令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。
具体流程如下:
运行
mkjobtexmf
生成一个目录,其中包含 LaTeX 编译所使用的所有文件。删除不需要的文件并可能添加其他重要的源文件。
生成一个档案文件(
zip
及相关文件)。通过 包含存档文件
embedfile
。我认为将源文件包含为多个单个文件没有多大意义。
版本控制系统,例如git
获取所有源文件的一个更简单的方法是向版本控制系统索取。例如,git
使用。
- 将项目放入版本控制:
cd "Project directory"
git init .
添加源文件(
git add
)并提交(git commit
)。向版本控制系统询问文件。
git
其功能使其变得简单archive
:
git archive --format=zip -o project.zip master
这会将分支的所有版本文件master
放入存档文件中project.zip
。
- 将存档文件包含在内
embedfile
。