LaTeX源文件的命名、组织与管理 - registor

发布于 2021-03-26 14:46:17

在 LaTeX 的使用过程中,往往需要多个文件,甚至大量文件相互支持和协作,以完成最终 PDF 的编译。这些文件经过 LaTeX 编译引擎,按一定的规则编译后,生成最终的一个独立的 PDF 文件

这与其他一些常见软件(如 Word、Powerpoint 等)的工作模式完全不同,在这些软件中,往往是将所有工作都集中在一个文件中进行处理。因此,LaTeX 中使用到的文件的命名、组织与管理都需要有更多细节需要考虑。

文件编码

所有*.tex*.bib*.sty*.cls等纯文本文件源代码文件,请务必使用 UTF-8 编码。否则,可能在打开文件后或编译后的 log 文件中会出现著名的“烫烫烫”、“屯屯屯”、“锟斤拷”乱码问题。

命名

由于排版一个PDF往往需要用到多个,甚至大量其他支持文件,并且在 LaTeX 的编译过程中也会产生*.aux*.toc*.log等辅助文件和日志文件。因此,强烈每当开始一个新的排版任务,就建立一个独立文件夹来存储该任务相关的所有文件。由于 LaTeX 发行版是开源免费软件,类似 TeXStudio 的编辑器IDE也是开源免费软件,一般在处理文件名及其路径名时,往往无法正确解析带有空格和非英文的名称。因此,强烈建议在文件名及其路径中不要使用空格和中文

另外,文件命名一定要具备自明性,禁止使用类似“a.tex”、“b.tex”、“c.bib”、“d.png”等这不知所云的文件命名。同时,文件名也不宜过长,个人建议使用“8.3 规则”命名,即 8 个字符构成主文件名,3 个字符构成后缀名。

建议:在多文件结构中,请将主控文件命名为 main.tex。

用子文件夹实现归类管理

为便于进行各类文件的管理和处理,应该将 tex 子文件、插图文件、文献数据库 bib 文件等按不同类别存储在不同的文件夹中。例如,对于一篇毕业学位论文的排版,一个建议的目录结构如下:
image.png

文件使用

在使用这些文件时,一般需同时指定该文件的路径。需要强调的是绝对不能使用绝对路径,只使用当前文件夹及其子文件夹中的文件。

如果需要的文件在子文件夹中,则需要用“/”分割路径中的各级文件夹(禁止使用“\\”分割),如:

% 插入图片
\includegraphics[width=0.5\textwidth]{figs/chap01/fig01-01.png}
...
% 插入代码,用minted宏包排版C语言代码
\inputminted{c}{codes/chap01/01helloworld.c}

对于插图,如果使用了graphicx 宏包,则可以使用graphicspath{{figs/}{pics/}}指定插图所在的文件夹,如:

% 子文件中
% 插入图片
\includegraphics[width=0.5\textwidth]{chap01/fig01-01.png}

多文件结构

在文档编写过程中,将复杂的内容切分成不同的子文件,然后用 input 或 include 载入子文件是一种常用的操作。这样,可以在每个子文件中仅关注少量内容,便于集中精力进行撰写,如:

% 导言区
% 载入需要的宏包
\input{settings/packages.tex}
% 进行必要的设置
\input{settings/format.tex}
...
\begin{document}
  \include{contents/chap00-abs.tex}
  \include{contents/chap01-intro.tex}
  ... 
  \include{contents/app03-resume.tex}
\end{document}

同时,可以通过用“%”注释操作,将暂时不关注的 input 或 include 语句注释,以减少当前参与编译的内容,加快编译速度或是用“注释大法”缩小错误定位范围,以定位错误、分析错误和解决错误,如:

...
\begin{document}
  \include{contents/chap00-abs.tex}
  %\ include{contents/chap01-intro.tex}
  % ... 
  % \include{contents/app03-resume.tex}
\end{document}

注释后后,则只需要关注“chap00-abs.tex”文件中的内容,

在多文件结构的子文件中,可以使用魔法注释指定主文件,从而实现多带带打开子文件也能编译的目的,如:

% 其它内容
...
% 魔法注释,指定主控文件为上一级文件夹中的“main.tex”文件
%%% Local Variables: 
%%% mode: latex
%%% TeX-master: "../main.tex"
%%% End: 

显然,如果主控文件采用“main.tex”命名,在各类子文件中用魔法注释指定主控文件及路径,则可以构造一个万能的 LaTeX 撰写文件结构框架。以后,每创建一个新的项目,只需要将该框架拷贝一下就可以了。

Happy LaTeXing!

0 条评论

发布
问题