LaTeX中,常将大型文档分解为不同的小文档,然后通过\\include命令将多个文件联合编译为一个文档。为了简化调试中的编译过程,可以使用\\includeonly命令指定特定的需要编译的文件。
在使用Beamer宏包制作演示文稿时,将不同章节的tex代码分解在不同的小文件中。
当需要多带带将每一章的内容独自生成PDF文档时,往往需要为每一个独立的PDF文档设置不同的子标题。此时,如果用\\includeonly命令则无法实现这一需求。
在此,可以使用LaTeX提供的\\ifcase\\or\\fi结构,实现这一需求,如:
\\documentclass{ctexbeamer} \\def\\chnum{1} % 根据需要载入宏包 \\ifcase\\chnum\\relax % 第0章 \\usepackage{multirow} \\or % 第1章 \\usepackage{multirow} \\usepackage{pifont} \\or % 第2章 \\usepackage{minted} \\usepackage[os=win]{menukeys} \\fi % 设置标题================================================== \\title[\\textsc{C Language Programming}] % (可选,仅当标题过长时使用) {C语言程序程序设计} \\ifcase\\chnum\\relax % 第0章 \\subtitle[绪论]{绪论} % (可选,仅当标题过长时使用) \\or % 第1章 \\subtitle[基础知识]{基础知识} % (可选,仅当标题过长时使用) \\or % 第2章 \\subtitle[算法简介]{算法简介} % (可选,仅当标题过长时使用) \\fi \\author[XXX]{XXX} % (可选,仅当有多个作者时使用) \\date{2019年秋} % 定义章选择命令 \\newcommand\\seledchap[1]{% \\ifcase#1\\relax % 第0章 \\include{data/ch00} % 绪论 \\or % 第1章 \\include{data/ch01} % 基础知识 \\or % 第2章 \\include{data/ch02} % 算法 \\fi } \\begin{document} %在document环境中撰写文档 % plain选项移除标题页的边栏和页眉 \\begin{frame}[plain,noframenumbering] \\titlepage \\end{frame} % 插入章节 \\seledchap{\\chnum} \\end{document}
采用\\ifcase\\or\\fi结构,同时可以实现为不同的子文件添加不同宏包的需求,以减少宏包依赖或解决宏包冲突。
这种方式,在每次编译时,仍需手动调整\\def\\chnum{1}的值,也许可以通过命令行将该参数传入,敬请大神给予指点。
写个脚本(例如 python 脚本)是最便利的方式。完全用 latex,可以考虑 subfiles 和 standalone 宏包提供的功能。