LaTeX教材排版

LaTeX教材排版

自己排版了一个教材的模板。

一、主要功能

  • 对文档的各个部分都进行了定制。
  • 可在同一个教材中排版章节式和项目任务式两种不同的体例,各部分章节独自编号。

二、文档结构

主文档同目录下有一个WonderTextbook.cls,用于提供文类,它里面引用了template目录下的各个自定义文件,template目录下的fonts目录中存放了要使用的字体,logo目录中存放了要模板要使用的图片(不是正文中的图片)。文档结构如下:

  1. 项目主目录 
  2. ├── Wonder.bib 
  3. ├── WonderTextbook.cls 
  4. ├── 主文档.tex 
  5. ├── doc 
  6. ├── fig 
  7. ├── template 
  8. ├─── fonts 
  9. ├── msjh.ttf 
  10. ├── MSYH.TTF 
  11. ├── MSYHBD.TTF 
  12. ├── simhei.ttf 
  13. ├── STXINGKA.TTF 
  14. ├── times.ttf 
  15. ├── 方正书宋简体.ttf 
  16. ├── 方正大标宋简体.ttf 
  17. ├── 方正小标宋简体.TTF 
  18. ├── 楷体GB2312.ttf 
  19. ├─── Logo 
  20. ├── Logo-CourseWork.jpg 
  21. ├── Logo-EvaluationCriterion.jpg 
  22. ├── Logo-Headings.jpg 
  23. ├── Logo-LearningTarget.jpg 
  24. ├── Logo-Project.jpg 
  25. ├── Logo-SSSection.jpg 
  26. ├── Logo-TaskDescription.jpg 
  27. ├── Logo-TaskGuide.jpg 
  28. ├── Logo-TaskImplement.jpg 
  29. ├── Logo-实践内容.jpg 
  30. ├── Logo-实践准备.jpg 
  31. ├── Logo-实践操作.jpg 
  32. ├── Logo-注意事项.jpg 
  33. ├── mylogo.jpg 
  34. ├── 学习目标.jpg 
  35. ├─── EnumItem.tex 
  36. ├─── Floatings.tex 
  37. ├─── Fonts.tex 
  38. ├─── FootnoteAndEndnote.tex 
  39. ├─── Geometry.tex 
  40. ├─── Headings.tex 
  41. ├─── JiaoCaiCommand.tex 
  42. ├─── Listings.tex 
  43. ├─── OptionsAndPackages.tex 
  44. ├─── References.tex 
  45. ├─── TableOfContents.tex 
  46. ├─── tables.tex 
  47. ├─── TongYongPeiZhi.tex 
  48. ├─── XiangMuRenWuShi.tex 
  49. ├─── ZhangJieShi.tex 
  50. ├─── ZuoYe.tex 

三、各个文档的内容及功能介绍

1. WonderTextbook.cls

  1. % ============================================================================== 
  2. % 一、文档类基础声明:指定LaTeX版本兼容性与文档类信息(.cls文件必备) 
  3. % ============================================================================== 
  4.  
  5. % 声明所需LaTeX最低版本:需LaTeX2e 1999年12月01日及以上版本(确保基础语法兼容) 
  6. \NeedsTeXFormat{LaTeX2e}[1999/12/01] 
  7.  
  8. % 声明文档类名称、版本、更新日期和用途: 
  9. % - 名称:WonderTextBook(自定义教材文档类) 
  10. % - 版本:v1.0(初始版本) 
  11. % - 用途:TEXTBOOK template(教材模板) 
  12. \ProvidesClass{WonderTextBook} 
  13. [2024/09/25 v1.0 TEXTBOOK template] 
  14.  
  15. % ============================================================================== 
  16. % 二、导入子模板文件:模块化整合教材所需功能(核心设计:拆分配置,便于维护) 
  17. % 每个\input{}对应一个独立的子配置文件,存放特定功能的设置(如字体、页面布局、习题等) 
  18. % ============================================================================== 
  19.  
  20. \input{template/OptionsAndPackages} % 1. 选项与依赖包配置: 
  21. % - 定义文档类可接收的用户选项(如字体大小、纸张类型) 
  22. % - 批量导入教材所需的LaTeX包(如中文处理、数学、图形、表格包等) 
  23.  
  24. \input{template/Geometry} % 2. 页面布局配置: 
  25. % - 设置纸张大小(如A4)、页边距、行距、段落间距等 
  26. % - 适配教材阅读习惯(通常左右边距适中,行距宽松) 
  27.  
  28. \input{template/Fonts} % 3. 字体配置: 
  29. % - 定义中文主字体、英文字体、数学字体(如正文宋体、标题黑体) 
  30. % - 设置字体大小层级(如章节标题、正文、注释的字体大小) 
  31. % - 适配教材的正式、规范风格 
  32.  
  33. \input{template/JiaoCaiCommand} % 4. 教材专用命令定义: 
  34. % - 封装教材常用自定义命令(如术语解释、重点提示、公式编号规则) 
  35. % - 统一教材中重复出现的排版元素(如“思考与练习”标题样式) 
  36.  
  37. \input{template/Headings} % 5. 章节标题样式配置: 
  38. % - 自定义章节标题(章、节、小节)的格式(如编号样式、字体、颜色、间距) 
  39. % - 适配教材的层级清晰、庄重规范的视觉要求 
  40.  
  41. \input{template/ZuoYe} % 6. 习题/作业相关配置: 
  42. % - 定义习题题型(选择题、填空题、简答题、计算题等)的排版样式 
  43. % - 可能包含答案显示/隐藏开关、习题编号规则等 
  44.  
  45. \input{template/TongYongPeiZhi} % 7. 通用配置: 
  46. % - 全局通用的排版设置(如段落缩进、首行空两格、标点符号间距) 
  47. % - 修复常见排版问题(如中文断行、公式与文本对齐) 
  48.  
  49. \input{template/listings} % 8. 代码高亮配置: 
  50. % - 若教材包含代码(如计算机、电子类教材),设置代码的语法高亮、字体、缩进等 
  51. % - 支持多种编程语言(如C、Python、MATLAB) 
  52.  
  53. \input{template/tables} % 9. 表格样式配置: 
  54. % - 定义教材中表格的默认样式(如边框、表头颜色、行高) 
  55. % - 支持复杂表格(如跨行跨列、三线表,符合学术规范) 
  56.  
  57. \input{template/EnumItem} % 10. 列表环境配置: 
  58. % - 自定义枚举列表(itemize/enumerate)的样式(如项目符号、编号格式) 
  59. % - 适配教材中“步骤说明”“要点罗列”的排版需求 
  60.  
  61. \input{template/TableOfContents} % 11. 目录配置: 
  62. % - 设置目录的显示层级(如显示到小节/子小节) 
  63. % - 定义目录项的字体、间距、页码对齐方式 
  64. % - 可能包含目录自动生成、更新规则 
  65.  
  66. \input{template/References} % 12. 参考文献配置: 
  67. % - 定义参考文献的引用格式(如数字编号、作者-年份格式) 
  68. % - 设置参考文献列表的排版样式(如条目间距、缩进) 
  69. % - 适配教材的参考文献规范(可能参考GB/T 7714) 
  70.  
  71. \input{template/Floatings} % 13. 浮动体配置: 
  72. % - 控制图片(figure)、表格(table)等浮动体的排版规则 
  73. % - 定义浮动体标题样式、编号规则(如“图1-1”“表2-3”) 
  74. % - 避免浮动体溢出或排版混乱 
  75.  
  76. \input{template/FootnoteAndEndnote} % 14. 注释配置: 
  77. % - 定义脚注(页脚注释)、尾注(文档末尾注释)的样式 
  78. % - 设置注释的字体大小、编号格式、缩进等 
  79.  
  80. \input{template/ZhangJieShi} % 15. 章节引言/概述配置: 
  81. % - 定义每章/每节开头的“引言”“概述”部分的排版样式(如背景色、边框、字体) 
  82. % - 突出章节核心内容,引导读者理解章节目标 
  83.  
  84. \input{template/XiangMuRenWuShi} % 16. 项目/任务式内容配置: 
  85. % - 针对“项目式教学”“任务驱动”教材的专属排版(如任务目标、任务步骤、任务总结) 
  86. % - 可能包含任务框、步骤编号、重点提示等样式 
  87.  
  88. % ============================================================================== 
  89. % 三、全局排版优化:确保页面底部对齐方式(避免页面底部空白不均) 
  90. % ============================================================================== 
  91.  
  92. \raggedbottom % 允许页面底部不齐(相对\flushbottom:强制页面底部对齐) 
  93. % 教材排版中常用\raggedbottom,避免为了对齐底部而拉伸段落间距,影响阅读体验 
  94.  
  95. % ============================================================================== 
  96. % 四、文档类结束标记:终止文档类定义(.cls文件必备) 
  97. % ============================================================================== 
  98.  
  99. \endinput % 强制结束文档类代码(后续即使有内容也会被忽略,避免语法错误) 

2. OptionsAndPackages.tex

  1. % ============================================================================== 
  2. % 一、模板可选参数定义:通过布尔变量控制模板功能开关(用户可通过选项启用/禁用) 
  3. % ============================================================================== 
  4.  
  5. % 1. 双面排版开关:默认启用双面排版 
  6. \newif\ifistwoside\istwosidetrue 
  7. % 定义"twoside"选项:用户传入时启用双面排版(\istwosidetrue) 
  8. \DeclareOption{twoside}{\istwosidetrue} 
  9.  
  10. % 2. 右页开始开关:默认不启用(章节从任意页开始) 
  11. \newif\ifisopenright\isopenrightfalse% 布尔变量:是否强制章节从右页开始 
  12. % 定义"openright"选项:用户传入时启用(\isopenrighttrue) 
  13. \DeclareOption{openright}{\isopenrighttrue} 
  14.  
  15. % 3. 答案显示开关:默认不显示作业答案 
  16. \newif\ifshowanswer\showanswerfalse% 布尔变量:是否显示作业题答案 
  17. % 定义"showanswer"选项:用户传入时显示答案(\showanswertrue) 
  18. \DeclareOption{showanswer}{\showanswertrue} 
  19.  
  20. % 4. 浮动体编号开关:默认不按"部"编号 
  21. \newif\ifFloatCountedByPart\FloatCountedByPartfalse% 布尔变量:浮动体(图/表)是否按部(part)编号 
  22. % 定义"FloatCountedByPart"选项:用户传入时启用(\FloatCountedByParttrue) 
  23. \DeclareOption{FloatCountedByPart}{\FloatCountedByParttrue} 
  24.  
  25. % 5. 待办注释开关:默认不显示待办内容 
  26. \newif\ifshowtodonotes\showtodonotesfalse% 布尔变量:是否显示todonotes待办标记 
  27. % 定义"ShowTODO"选项:用户传入时显示(\showtodonotestrue) 
  28. \DeclareOption{ShowTODO}{\showtodonotestrue} 
  29.  
  30. % 6. 草稿模式开关:默认不启用草稿模式 
  31. \newif\ifIsDraft\IsDraftfalse% 布尔变量:是否为草稿模式(草稿模式显示注释、标记) 
  32. % 定义"IsDraft"选项:用户传入时启用(\IsDrafttrue) 
  33. \DeclareOption{IsDraft}{\IsDrafttrue}% 
  34.  
  35. % 7. 自定义模式开关:默认不启用自定义模式 
  36. \newif\ifIsMyself\IsMyselffalse% 布尔变量:是否为自定义模式(隐藏部分默认样式) 
  37. % 定义"IsMyself"选项:用户传入时启用(\IsMyselftrue) 
  38. \DeclareOption{IsMyself}{\IsMyselftrue}% 
  39.  
  40. % 处理用户传入的选项:解析并应用上述定义的选项(\relax表示无额外处理) 
  41. \ProcessOptions\relax 
  42.  
  43. % ============================================================================== 
  44. % 二、加载基础文档类(book类):根据选项动态配置文档类参数 
  45. % 核心逻辑:按"双面/单面"+"右页开始/任意页开始"组合,加载对应的book类配置 
  46. % ============================================================================== 
  47.  
  48. \ifistwoside% 判断是否启用双面排版 
  49. \ifisopenright% 双面排版+强制右页开始 
  50. \LoadClass[twoside,openright]{book}% 加载book类,参数:双面、章节从右页开始 
  51. \else% 双面排版+任意页开始 
  52. \LoadClass[twoside,openany]{book}% 加载book类,参数:双面、章节从任意页开始 
  53. \fi 
  54. \else% 单面排版 
  55. \ifisopenright% 单面排版+强制右页开始(实际单面排版中右页开始无意义,仅保留参数) 
  56. \LoadClass[oneside,openright]{book}% 加载book类,参数:单面、右页开始 
  57. \else% 单面排版+任意页开始 
  58. \LoadClass[oneside,openany]{book}% 加载book类,参数:单面、任意页开始 
  59. \fi 
  60. \fi 
  61.  
  62. % ============================================================================== 
  63. % 三、加载核心依赖包:按功能分类加载LaTeX包,覆盖中文处理、排版、图表等需求 
  64. % ============================================================================== 
  65.  
  66. % 1. 中文处理包:ctex(处理中文排版,支持中文标题、章节) 
  67. % 参数:heading=true(启用中文标题样式)、sub3section/sub4section(支持3/4级子章节) 
  68. \RequirePackage[heading=true,sub3section,sub4section]{ctex}  
  69.  
  70. % 2. 图形包:graphicx(插入图片,支持JPG/PNG/PDF等格式) 
  71. \RequirePackage{graphicx}  
  72.  
  73. % 3. 代码高亮包:listings(插入代码块,支持语法高亮) 
  74. \RequirePackage{listings}  
  75.  
  76. % 4. 中文文本装饰包:xeCJKfntef(中文下划线支持换行,可隐藏文字) 
  77. \RequirePackage{xeCJKfntef}  
  78.  
  79. % 5. 符号包:bbding(提供判断题对勾\Checkmark、叉号\XSolid等符号) 
  80. \RequirePackage{bbding}  
  81.  
  82. % 6. 参考文献包:gbt7714(按GB/T 7714标准排版参考文献) 
  83. \RequirePackage{gbt7714}  
  84.  
  85. % 7. 数学计算包:calc(支持长度、数值计算,如调整间距、尺寸) 
  86. \RequirePackage{calc}  
  87.  
  88. % 8. 页面布局包:geometry(自定义纸张大小、页边距) 
  89. \RequirePackage{geometry}  
  90.  
  91. % 9. 颜色包:xcolor(导入X11标准颜色库,支持文本/背景着色) 
  92. \RequirePackage[x11names]{xcolor}  
  93.  
  94. % 10. 列表环境包:enumitem(自定义列表样式,如编号格式、间距) 
  95. \RequirePackage{enumitem}  
  96.  
  97. % 11. 标题格式包:titlesec(设置标题间距、样式,explicit=显式定义标题,compact=紧凑排版) 
  98. \RequirePackage[explicit,compact]{titlesec}  
  99.  
  100. % 12. 浮动体控制包:placeins(用floatbarrier命令控制浮动体位置,避免跨章节) 
  101. \RequirePackage[section]{placeins}  
  102.  
  103. % 13. 表格包:booktabs(排版专业三线表,避免竖线,符合学术规范) 
  104. \RequirePackage{booktabs}  
  105.  
  106. % 14. 跨行表格包:multirow(支持表格单元格跨行合并,longtable参数支持跨页表格) 
  107. \RequirePackage[longtable]{multirow}  
  108.  
  109. % 15. 长表格包:longtable(支持表格跨页显示,避免被截断) 
  110. \RequirePackage{longtable}  
  111.  
  112. % 16. 自适应表格包:tabularx(表格宽度自适应页面,X列自动调整) 
  113. \RequirePackage{tabularx}  
  114.  
  115. % 17. 对齐包:ragged2e(提供\Centering等命令,解决表格换行时居中对齐问题) 
  116. \RequirePackage{ragged2e}  
  117.  
  118. % 18. 待办注释包:todonotes(排版待办事项,参数:obeyDraft=遵循草稿模式,draft=草稿标记,colorinlistoftodos=目录显示颜色) 
  119. \RequirePackage[obeyDraft,draft,colorinlistoftodos]{todonotes}  
  120.  
  121. % 19. 图表标题包:caption(设置图表标题样式,参数:figurewithin=section/tablewithin=section=图表按节编号) 
  122. \RequirePackage[figurewithin = section,tablewithin = section]{caption}  
  123.  
  124. % 20. 子图包:subfig(支持多个子图并排显示,如fig1(a)、fig1(b)) 
  125. \RequirePackage{subfig}  
  126.  
  127. % 21. 目录定制包:tocloft(自定义目录样式,subfigure参数支持子图目录) 
  128. \RequirePackage[subfigure,titles]{tocloft}  
  129.  
  130. % 22. 浮动体尺寸控制包:adjustbox(限制浮动体最大宽高,Export参数支持导出功能) 
  131. \RequirePackage[Export]{adjustbox}  
  132.  
  133. % 23. 长文本换行包:seqsplit(超长英文字符串自动换行,避免溢出页面) 
  134. \RequirePackage{seqsplit}  
  135.  
  136. % 24. 超链接包:hyperref(创建可点击书签、跨引用链接,hidelinks=隐藏链接边框) 
  137. \RequirePackage[hidelinks]{hyperref}  
  138.  
  139. % 25. 网址排版包:url(正确排版网址,支持自动换行) 
  140. \RequirePackage{url}  
  141.  
  142. % 26. 行号包:lineno(在PDF中显示文本行号,方便校对) 
  143. \RequirePackage{lineno}  
  144.  
  145. % 27. 尾注包:endnotes(支持尾注功能,注释集中在文档末尾) 
  146. \RequirePackage{endnotes} 
  147.  
  148. % 28. 绘图包:tikz(核心绘图工具,支持图形、节点、流程框图) 
  149. \RequirePackage{tikz}  
  150.  
  151. % 29. tikz定位库:positioning(支持节点相对定位,如下方、右侧) 
  152. \usetikzlibrary{positioning}  
  153.  
  154. % 30. tikz渐变库:shadings(支持图形渐变填充,提升绘图美观度) 
  155. \usetikzlibrary{shadings}  
  156.  
  157. % 31. tikz几何图形库:shapes.geometric(提供预定义几何形状,如圆形、菱形) 
  158. \usetikzlibrary{shapes.geometric} 
  159.  
  160. % 32. 字符串处理包:xstring(支持字符串查找、替换、长度计算等操作) 
  161. \RequirePackage{xstring} 
  162.  
  163. % 33. 页眉页脚包:fancyhdr(自定义页眉页脚样式,支持奇偶页不同) 
  164. \RequirePackage{fancyhdr}  
  165.  
  166. % 34. 空间预留包:needspace(确保指定内容有足够空间,避免被拆分) 
  167. \RequirePackage{needspace} 

3. Geometry.tex

  1. % ============================================================================== 
  2. % 一、布局配置说明:明确核心目标(纸张尺寸、页边距、页眉页脚统一规范) 
  3. % ============================================================================== 
  4.  
  5. % 版式设置,包括页边距页眉 
  6. % 以下为使用geometry宏包进行版式设置(geometry是LaTeX核心页面布局包,支持直观的尺寸定义) 
  7.  
  8. % ============================================================================== 
  9. % 二、纸张尺寸与页边距配置:区分草稿模式与正式模式,适配不同使用场景 
  10. % ============================================================================== 
  11.  
  12. \ifIsDraft % 判断是否为草稿模式(\IsDraft为true时启用,需在主文档定义该布尔变量) 
  13. % 草稿模式布局:左侧留窄边距,右侧加宽用于写注释/待办 
  14. \geometry{ 
  15. paperwidth=184mm, % 纸张宽度:184mm(16开标准宽度) 
  16. paperheight=260mm, % 纸张高度:260mm(16开标准高度) 
  17. left=10mm, % 左侧页边距:10mm(窄边距,节省空间) 
  18. right=60mm % 右侧页边距:60mm(宽边距,用于添加编辑注释、待办标记) 
  19. } 
  20. \setlength{\marginparwidth}{55mm} % 页边注宽度:55mm(与右侧页边距匹配,用于放置\marginpar注释) 
  21. \showtodonotestrue % 启用待办注释(草稿模式下显示编辑标记,正式模式隐藏) 
  22. \else % 正式模式布局(默认模式,符合教材出版规范) 
  23. \geometry{ 
  24. paperwidth=184mm, % 纸张宽度:184mm(16开标准,18.4cm) 
  25. paperheight=260mm, % 纸张高度:260mm(16开标准,26cm) 
  26. left=20mm, % 左侧页边距:20mm(2cm,符合教材丛书规范) 
  27. right=20mm % 右侧页边距:20mm(2cm,左右对称,阅读舒适) 
  28. } 
  29. \fi 
  30.  
  31. % ============================================================================== 
  32. % 三、页眉页脚布局配置:控制页眉页脚高度、与正文的间距 
  33. % ============================================================================== 
  34.  
  35. % 页眉页脚包含在页面高度内 + 上下页边距设置 
  36. \geometry{ 
  37. includeheadfoot=true, % 关键参数:页眉(head)和页脚(foot)计入页面总高度(避免超出纸张) 
  38. top=18mm, % 上页边距:18mm(1.8cm,页眉顶部到纸张顶部的距离) 
  39. bottom=7mm % 下页边距:7mm(0.7cm,页脚底部到纸张底部的距离) 
  40. } 
  41.  
  42. % 页脚到正文底部的距离:21pt(关键调试参数) 
  43. \setlength{\footskip}{21pt}%  
  44. % 说明:该值是通过多次测试得到的适配值,若无此设置,bottom=7mm会因页脚占位导致实际下页边距异常(过窄或过宽) 
  45.  
  46. % ============================================================================== 
  47. % 四、正文行数配置:控制每页正文的固定行数,保证排版统一 
  48. % ============================================================================== 
  49.  
  50. \geometry{ 
  51. lines=38, % 每页固定显示38行正文(符合教材排版密度,避免页面行数不均) 
  52. heightrounded % 自动调整页面高度为行距的整数倍(避免因行数导致的底部空白不均,优化阅读体验) 
  53. } 
  54.  
  55. % ============================================================================== 
  56. % 五、页眉细节配置:控制页眉高度与页眉到正文的间距 
  57. % ============================================================================== 
  58.  
  59. \setlength{\headheight}{5mm} % 页眉高度:5mm(容纳页眉文字/LOGO,避免页眉内容溢出) 
  60. \setlength{\headsep}{5mm} % 页眉到正文的垂直距离:5mm(分隔页眉与正文,避免粘连) 
  61.  
  62. % ============================================================================== 
  63. % 六、中文公式适配:解决公式中中文显示问题 
  64. % ============================================================================== 
  65.  
  66. \xeCJKsetup{CJKmath=true} % 允许在数学公式中编排中文(与ctex包配合使用,避免公式中中文乱码或不显示) 
  67.  
  68. % ============================================================================== 
  69. % 七、页面底部对齐优化:避免页面底部空白不均 
  70. % ============================================================================== 
  71.  
  72. \raggedbottom % 允许页面底部不齐(相对\flushbottom强制对齐) 
  73. % 教材排版常用:避免为了对齐底部而拉伸段落间距,保证正文行距均匀,提升阅读体验 

4. Fonts.tex

  1. % ============================================================================== 
  2. % 一、字体配置核心说明:明确中英文字体控制逻辑(避免混淆) 
  3. % ============================================================================== 
  4.  
  5. % 字体设置 
  6. % 关键说明: 
  7. % 1. fontspec宏包的命令(\newfontfamily、\setmainfont等)仅对英文/阿拉伯数字有效; 
  8. % 2. xeCJK宏包的命令(\setCJKmainfont、\setCJKfamilyfont等)仅对中文(CJK字符)有效; 
  9. % 3. 因文档已加载ctex宏包(依赖xeCJK),无需额外导入xeCJK(注释中已预留)。 
  10.  
  11. % ============================================================================== 
  12. % 二、英文字体定义:使用\newfontfamily创建英文专属字体族(仅对英文生效) 
  13. % ============================================================================== 
  14.  
  15. %% 方正书宋简体(英文适配版) 
  16. \newfontfamily\FZSSJTen[AutoFakeBold=true,Path=template/fonts/,Extension=.ttf]{方正书宋简体}%  
  17. % - 命令名:\FZSSJTen(英文方正书宋); 
  18. % - AutoFakeBold=true:自动生成伪粗体(字体本身无粗体时,通过算法加粗); 
  19. % - 字体文件:方正书宋简体(仅英文/数字使用该字体轮廓)。 
  20.  
  21. %% 华文行楷(英文适配版) 
  22. \newfontfamily\HWXKen[AutoFakeBold=true,Path=template/fonts/,Extension=.ttf]{STXINGKA}%  
  23. % - 字体文件:STXINGKA.TTF(华文行楷的字体文件路径/名称); 
  24. % - 用途:英文手写风格排版(如示例文本、注释)。 
  25.  
  26. %% 方正大标宋简体(英文适配版) 
  27. \newfontfamily\FZDBSen[AutoFakeBold=true,Path=template/fonts/,Extension=.ttf]{方正大标宋简体}%  
  28. % - 用途:英文大标题排版(字体粗壮,视觉突出)。 
  29.  
  30. %% 新罗马字体(英文核心字体) 
  31. \newfontfamily\TimesNewRoman[AutoFakeBold=true,Path=template/fonts/,Extension=.ttf]{times}%  
  32. % - 字体文件:times.ttf(Times New Roman,学术/正式文档标准英文字体); 
  33. % - 用途:英文正文、公式中的英文变量。 
  34.  
  35. %% 微软正黑体(英文适配版) 
  36. \newfontfamily\WRZHTen[Path=template/fonts/,Extension=.ttf]{msjh}%  
  37. % - 字体文件:msjh.ttf(微软正黑体); 
  38. % - 用途:英文标题、强调文本(比新罗马字体更粗)。 
  39.  
  40. %% 黑体(英文适配版) 
  41. \newfontfamily\HTen[AutoFakeBold=true,Path=template/fonts/,Extension=.ttf]{simhei}%  
  42. % - 字体文件:simhei.ttf(黑体); 
  43. % - 用途:英文粗体标题、重点标识。 
  44.  
  45. %% 微软雅黑(英文适配版) 
  46. \newfontfamily\MicrosoftYaHeien{Microsoft YaHei}%  
  47. % - 字体名称:Microsoft YaHei(系统预装字体,无需指定.ttf路径); 
  48. % - 用途:英文现代风格排版。 
  49.  
  50. %% 代码专用字体(Courier New) 
  51. \newfontfamily\CourierNew{Courier New}%  
  52. % - 经典等宽字体,系统预装; 
  53. % - 用途:代码、表格固定宽度文本。 
  54.  
  55. %% 代码专用字体(Source Code Pro) 
  56. \newfontfamily{\SourceCodePro}{Source Code Pro}%  
  57. % - 开源等宽字体,可读性强; 
  58. % - 用途:高质量代码排版。 
  59.  
  60. %% 代码专用字体(Consolas) 
  61. \newfontfamily{\Consolas}{Consolas}%  
  62. % - Windows系统预装等宽字体,编程常用; 
  63. % - 用途:代码、命令行示例排版。 
  64.  
  65. % ============================================================================== 
  66. % 三、中文字体定义:使用\setCJKfamilyfont创建中文专属字体族(仅对中文生效) 
  67. % ============================================================================== 
  68.  
  69. %% 方正书宋简体(中文核心字体) 
  70. \setCJKfamilyfont{FZSSJTzh}[AutoFakeBold=true,Path=template/fonts/,Extension=.ttf]{方正书宋简体}%  
  71. % - 命令名:FZSSJTzh(中文方正书宋); 
  72. % - AutoFakeBold=true:自动伪粗体; 
  73. % - 用途:中文正文、普通文本(正式文档首选)。 
  74.  
  75. %% 华文行楷(中文手写体) 
  76. \setCJKfamilyfont{HWXKzh}[AutoFakeBold=true,Path=template/fonts/,Extension=.ttf]{STXINGKA}%  
  77. % - 字体文件:STXINGKA.TTF(华文行楷); 
  78. % - 用途:中文手写风格文本(如示例、注释)。 
  79.  
  80. %% 华文楷体(中文楷体) 
  81. \setCJKfamilyfont{HWKTzh}[AutoFakeBold=true,Path=template/fonts/,Extension=.ttf]{STKAITI}%  
  82. % - 字体文件:STKAITI.TTF(华文楷体); 
  83. % - 用途:中文书法风格文本、标题点缀。 
  84.  
  85. %% 方正大标宋简体(中文粗体标题) 
  86. \setCJKfamilyfont{FZDBSzh}[AutoFakeBold=true,Path=template/fonts/,Extension=.ttf]{方正大标宋简体}%  
  87. % - 用途:中文一级标题(如章节标题,字体粗壮醒目)。 
  88.  
  89. %% 微软正黑体(中文黑体) 
  90. \setCJKfamilyfont{WRZHTzh}[AutoFakeBold=true,Path=template/fonts/,Extension=.ttf]{msjh.ttf}%  
  91. % - 字体文件:msjh.ttf(微软正黑体); 
  92. % - 用途:中文标题、强调文本(现代风格)。 
  93.  
  94. %% 楷体_GB2312(中文规范楷体) 
  95. \setCJKfamilyfont{KTGB2312zh}[AutoFakeBold=true,Path=template/fonts/,Extension=.ttf]{楷体GB2312.ttf}%  
  96. % - 字体名称:楷体_GB2312(符合国标,正式文档规范); 
  97. % - 用途:中文注释、公式说明、引用文本。 
  98.  
  99. %% 黑体(中文经典黑体) 
  100. \setCJKfamilyfont{HTzh}[AutoFakeBold=true]{simhei.ttf}%  
  101. % - 字体文件:simhei.ttf(黑体); 
  102. % - 用途:中文粗体标题、重点提示(庄重规范)。 
  103.  
  104. %% 楷体(中文通用楷体) 
  105. \setCJKfamilyfont{KTzh}[AutoFakeBold=true]{simkai.ttf}%  
  106. % - 字体文件:simkai.ttf(楷体); 
  107. % - 用途:中文书法风格文本、二级标题。 
  108.  
  109. %% 微软雅黑(中文现代黑体) 
  110. \setCJKfamilyfont{YHzh}[AutoFakeBold=true]{Microsoft YaHei}%  
  111. % - 注释:原注释“只用于英文”有误,该命令是\setCJKfamilyfont,仅对中文生效; 
  112. % - 用途:中文现代风格标题、正文(兼容性强)。 
  113.  
  114. % ============================================================================== 
  115. % 四、中英文统一字体命令:封装组合命令,实现“中英文同字体风格” 
  116. % 核心逻辑:一个命令同时调用中文和英文对应字体,避免单独设置 
  117. % ============================================================================== 
  118.  
  119. %% 方正书宋简体(中英文统一) 
  120. \newcommand{\FZSSJT}{\CJKfamily{FZSSJTzh}\FZSSJTen}%  
  121. % - 功能:中文使用FZSSJTzh(方正书宋),英文使用FZSSJTen(方正书宋英文); 
  122. % - 用途:全局统一为方正书宋风格(如正文整体排版)。 
  123.  
  124. %% 华文行楷(中英文统一) 
  125. \newcommand{\HWXK}{\CJKfamily{HWXKzh}\HWXKen}%  
  126. % - 功能:中文华文行楷 + 英文华文行楷; 
  127. % - 用途:手写风格段落、示例文本。 
  128.  
  129. %% 方正大标宋简体(中英文统一) 
  130. \newcommand{\FZDBS}{\CJKfamily{FZDBSzh}\FZDBSen}%  
  131. % - 功能:中文方正大标宋 + 英文方正大标宋; 
  132. % - 用途:一级标题(中英文标题风格一致)。 
  133.  
  134. %% 微软正黑体(中英文统一) 
  135. \newcommand{\WRZHT}{\CJKfamily{WRZHTzh}\WRZHTen}%  
  136. % - 功能:中文微软正黑 + 英文微软正黑; 
  137. % - 用途:现代风格标题、强调文本。 
  138.  
  139. %% 楷体_GB2312(仅中文) 
  140. \newcommand{\KTGB}{\CJKfamily{KTGB2312zh}}%  
  141. % - 功能:仅中文使用楷体_GB2312(英文沿用默认字体); 
  142. % - 用途:中文注释、公式说明。 
  143.  
  144. %% 黑体(中英文统一,复用ctex宏包命令) 
  145. \newcommand{\HT}{\heiti}%  
  146. % - 功能:中文使用ctex宏包自带的\heiti(黑体),英文自动适配黑体; 
  147. % - 用途:快速设置黑体文本(无需单独调用中英文字体)。 
  148.  
  149. %% 楷体(仅中文) 
  150. \newcommand{\KT}{\CJKfamily{KTzh}}%  
  151. % - 功能:仅中文使用楷体(KTzh); 
  152. % - 用途:中文书法风格文本。 
  153.  
  154. %% 微软雅黑(中英文统一) 
  155. \newcommand{\WRYH}{\CJKfamily{YHzh}\MicrosoftYaHeien}%  
  156. % - 功能:中文微软雅黑(YHzh) + 英文微软雅黑(MicrosoftYaHeien); 
  157. % - 用途:现代风格正文、标题。 
  158.  
  159. % ============================================================================== 
  160. % 五、全局默认字体设置:定义文档默认的中英文排版字体(无需手动调用) 
  161. % ============================================================================== 
  162.  
  163. %% 默认英文字体:新罗马字体 
  164. \setmainfont[Path=template/fonts/,Extension=.ttf]{times} %  
  165. % - 所有未指定字体的英文文本,默认使用Times New Roman; 
  166. % - 学术/正式文档的英文标准字体,可读性强。 
  167.  
  168. %% 默认中文字体:方正书宋简体(主字体) 
  169. \setCJKmainfont[Path=template/fonts/,Extension=.ttf,BoldFont=simhei,ItalicFont=STXINGKA]{方正书宋简体} %  
  170. % - 主字体:中文默认使用方正书宋简体; 
  171. % - BoldFont={黑体}:中文加粗时自动使用黑体(替代伪粗体,更美观); 
  172. % - ItalicFont={华文行楷}:中文斜体时自动使用华文行楷(中文无真正斜体,用行楷替代)。 

5. JiaoCaiCommand.tex

  1. % ============================================================================== 
  2. % 一、教材核心信息变量定义:存储教材基础信息(系列名、编者、出版信息等) 
  3. % 核心逻辑:用toks类型变量存储文本,通过自定义命令赋值,方便全局调用 
  4. % ============================================================================== 
  5.  
  6. % 制作内封、外封、前言等 
  7. \newtoks\jiaocaixilie% 教材系列名称变量 
  8. \newcommand{\JiaoCaiXiLie}[1]{\jiaocaixilie={#1}} % 赋值命令:\JiaoCaiXiLie{系列名} 
  9.  
  10. \newtoks\zhubian% 主编姓名变量 
  11. \newcommand{\ZhuBian}[1]{\zhubian={#1}} % 赋值命令:\ZhuBian{主编姓名} 
  12.  
  13. % 参编人员变量(支持1-8人,分别对应Fir~Eig) 
  14. \newtoks\FirCanBian % 第一参编 
  15. \newtoks\SecCanBian % 第二参编 
  16. \newtoks\ThiCanBian % 第三参编 
  17. \newtoks\ForCanBian % 第四参编 
  18. \newtoks\FifCanBian % 第五参编 
  19. \newtoks\SixCanBian % 第六参编 
  20. \newtoks\SevCanBian % 第七参编 
  21. \newtoks\EigCanBian % 第八参编 
  22.  
  23. % 参编人员赋值命令:\CanBian{第一参编}{第二参编}...{第八参编}(不足8人填空字符串"") 
  24. \newcommand{\CanBian}[8]{ 
  25. \FirCanBian={#1} 
  26. \SecCanBian={#2} 
  27. \ThiCanBian={#3} 
  28. \ForCanBian={#4} 
  29. \FifCanBian={#5} 
  30. \SixCanBian={#6} 
  31. \SevCanBian={#7} 
  32. \EigCanBian={#8} 
  33. } 
  34.  
  35. \newtoks\zhushen% 主审姓名变量 
  36. \newif\ifHasZhuShen\HasZhuShenfalse % 布尔变量:是否有主审(默认false) 
  37. \newcommand{\ZhuShen}[1]{\HasZhuShentrue\zhushen={#1}} % 赋值命令:\ZhuShen{主审姓名}(自动设HasZhuShen=true) 
  38.  
  39. \newtoks\jiaodui% 校对人员变量 
  40. \newcommand{\JiaoDui}[1]{\jiaodui={#1}} % 赋值命令:\JiaoDui{校对姓名} 
  41. \newtoks\danwei % 单位名变量 
  42. \newcommand{\DanWei}[1]{\danwei={#1}} 
  43.  
  44. % ============================================================================== 
  45. % 二、外封页命令:\OuterCoverpage 生成教材外封(封面) 
  46. % 核心样式:顶部系列标识、中间大标题、底部编者与出版单位,符合教材封面规范 
  47. % ============================================================================== 
  48.  
  49. \newcommand{\OuterCoverpage}{ 
  50. \ifIsMyself\else % 非自定义模式(\IsMyself=false)才生成外封(自定义模式可隐藏) 
  51. \pagestyle{empty} % 外封页无页眉页脚 
  52. { 
  53. \noindent % 取消段落首行缩进 
  54. % 顶部标识栏:高度24mm,宽度整行,显示标识+系列名 
  55. \noindent\begin{minipage}[c][24mm][t]{\linewidth} 
  56. {\heiti \zihao{-3}\the\BiaoJiOne--\the\BiaoJiTwo\hfill\the\jiaocaixilie} 
  57. % 样式:黑体、小三号、标识1-标识2、右对齐系列名 
  58. \end{minipage} 
  59. \vfill % 垂直填充(将标题推至页面中间) 
  60. % 中间标题区:居中显示主标题+副标题 
  61. \begin{center} 
  62. \noindent 
  63. {\FZDBS\zihao{-0} \makeatletter\@title\makeatother}\par % 主标题:方正大标宋、0号字、文档\title内容 
  64. \ifhassubtitle % 判断是否有副标题(\hassubtitle=true) 
  65. \vspace{\baselineskip} % 副标题与主标题间距(1行高) 
  66.  
  67. {\KTGB\zihao{-2}(\the\SubTitle)}\par % 副标题:楷体GB2312、二号字、括号包裹 
  68. \else 
  69. \fi % 无副标题则不显示 
  70. \end{center} 
  71. \vfill % 垂直填充(将编者区推至页面下方) 
  72. % 底部编者与出版单位区:高度152mm 
  73. \begin{minipage}[c][152mm]{\linewidth} 
  74. \begin{center} 
  75. \zihao{-2}\KT % 二号字、楷体 
  76. {\heiti \ifIsMyself\else\quad\fi}\quad \the\zhubian % 主编:黑体标签+主编姓名(自定义模式隐藏标签) 
  77. \end{center} 
  78. \vfill % 垂直填充 
  79. \begin{center} 
  80. {\HWXK\zihao{-2}\the\danwei} % 出版单位:华文行楷、二号字(需替换为实际单位) 
  81. \end{center} 
  82. \vspace*{20mm} % 底部预留20mm空白 
  83. \end{minipage} 
  84. } 
  85. \cleardoublepage % 强制双页跳转(外封后留空白页,内封从右页开始) 
  86. \fi 
  87. } 
  88.  
  89. % ============================================================================== 
  90. % 三、内封页命令:\InnerCoverpage 生成教材内封(扉页) 
  91. % 核心样式:顶部标识、中间标题、底部编者(主编+参编)、主审、校对、出版时间,符合扉页规范 
  92. % ============================================================================== 
  93.  
  94. \newcommand{\InnerCoverpage}{ 
  95. \pagestyle{empty} % 内封页无页眉页脚 
  96. { \noindent 
  97. % 顶部标识栏(与外封一致,自定义模式显示空白占位) 
  98. \noindent\begin{minipage}[c][24mm][t]{\linewidth} 
  99. {\heiti \zihao{-3}\ifIsMyself\phantom{\the\BiaoJiOne--\the\BiaoJiTwo\hfill\the\jiaocaixilie}\else\the\BiaoJiOne--\the\BiaoJiTwo\hfill\the\jiaocaixilie\fi} 
  100. \end{minipage} 
  101. \vfill % 垂直填充 
  102. % 中间标题区(与外封一致:主标题+副标题) 
  103. \begin{center} 
  104. \noindent 
  105. {\FZDBS\zihao{-0} \makeatletter\@title\makeatother}\par 
  106. \ifhassubtitle 
  107. \vspace{\baselineskip} 
  108.  
  109. {\KTGB\zihao{-2}(\the\SubTitle)}\par 
  110. \else 
  111. \fi 
  112. \end{center} 
  113. \vfill % 垂直填充 
  114. % 底部编者信息区:高度152mm 
  115. \begin{minipage}[c][152mm]{\linewidth} 
  116. \begin{center} 
  117. \zihao{-2}\KT % 二号字、楷体 
  118. % 计算参编人员姓名长度(判断是否有该参编) 
  119. \StrLen{\the\FirCanBian}[\Firnamelength] % 第一参编姓名长度 
  120. \StrLen{\the\SecCanBian}[\Secnamelength] % 第二参编姓名长度 
  121. \StrLen{\the\ThiCanBian}[\Thinamelength] % 第三参编姓名长度 
  122. \StrLen{\the\ForCanBian}[\Fornamelength] % 第四参编姓名长度 
  123. \StrLen{\the\FifCanBian}[\Fifnamelength] % 第五参编姓名长度 
  124. \StrLen{\the\SixCanBian}[\Sixnamelength] % 第六参编姓名长度 
  125. \StrLen{\the\SevCanBian}[\Sevnamelength] % 第七参编姓名长度 
  126. \StrLen{\the\EigCanBian}[\Eignamelength] % 第八参编姓名长度 
  127.  
  128. % 动态调整编者区宽度(根据是否有第二参编、主审) 
  129. \ifnum \Secnamelength > 0 % 有第二参编 
  130. \setlength{\mylength}{11em} % 宽度11em 
  131. \else 
  132. \setlength{\mylength}{7em} % 无第二参编,宽度7em 
  133. \fi 
  134. \ifHasZhuShen % 有主审 
  135. \setlength{\mylength}{12em} % 宽度12em(预留主审位置) 
  136. \fi 
  137.  
  138. \ifIsMyself % 自定义模式:仅显示主编姓名(无标签) 
  139. \the\zhubian 
  140. \else % 默认模式:显示完整编者信息 
  141. \begin{minipage}{\mylength} % 固定宽度,避免排版错乱 
  142. {\heiti\quad 编}\quad \the\zhubian\par % 主编:黑体标签+姓名 
  143. \ifnum \Firnamelength > 0 % 有第一参编 
  144. \ifnum \Secnamelength > 0 % 有第二参编 
  145. {\heiti\quad 编}\quad\the\FirCanBian\quad\the\SecCanBian\par % 显示前两参编 
  146. \ifnum \Thinamelength > 0 % 有第三参编 
  147. \ifnum \Fornamelength > 0 % 有第四参编 
  148. \hphantom{\heiti\quad 编}\quad\the\ThiCanBian\quad\the\ForCanBian\par % 对齐显示三四参编 
  149. \ifnum \Fifnamelength > 0 % 有第五参编 
  150. \ifnum \Sixnamelength > 0 % 有第六参编 
  151. \hphantom{\heiti\quad 编}\quad\the\FifCanBian\quad\the\SixCanBian\par % 对齐显示五六参编 
  152. \ifnum \Sevnamelength > 0 % 有第七参编 
  153. \ifnum \Eignamelength > 0 % 有第八参编 
  154. \hphantom{\heiti\quad 编}\quad\the\SevCanBian\quad\the\EigCanBian\par % 对齐显示七八参编 
  155. \else 
  156. \hphantom{\heiti\quad 编}\quad\the\SevCanBian\par % 仅显示第七参编 
  157. \fi 
  158. \fi 
  159. \else 
  160. \hphantom{\heiti\quad 编}\quad\the\FifCanBian\par % 仅显示第五参编 
  161. \fi 
  162. \fi 
  163. \else 
  164. \hphantom{\heiti\quad 编}\quad\the\ThiCanBian\par % 仅显示第三参编 
  165. \fi 
  166. \fi 
  167. \else 
  168. {\heiti\quad 编}\quad \the\FirCanBian\par % 仅显示第一参编 
  169. \fi 
  170. \else 
  171. {\heiti\quad 编}\quad 无此人 % 无第一参编,显示“无此人” 
  172. \fi 
  173. \ifHasZhuShen % 有主审,显示主审信息 
  174. {\heiti\quad 审}\quad \the\zhushen\par 
  175. \fi 
  176. {\heiti\quad 对}\quad \the\jiaodui % 显示校对信息 
  177. \end{minipage} 
  178. \fi 
  179. \end{center} 
  180. \vfill % 垂直填充 
  181. \begin{center} 
  182. \zihao{-2}{\HWXK 
  183. \ifIsMyself\phantom{\the\danwei}\else \the\danwei\fi}\par % 出版单位(自定义模式显示空白占位) 
  184. \vspace*{5mm} % 间距5mm 
  185. {\KTGB\KT \zhdigits{\the\PublishYear}年\zhnumber{\the\PublishMonth}月} % 出版时间:楷体GB2312、中文数字(如“二〇二四年九月”) 
  186. \end{center} 
  187. \vspace*{20mm} % 底部预留20mm空白 
  188. \end{minipage} 
  189. } 
  190. \cleardoublepage % 强制双页跳转(内封后进入前言/目录) 
  191. } 
  192.  
  193. % ============================================================================== 
  194. % 四、前言命令:\Preface{前言内容}{署名} 生成教材前言 
  195. % 核心样式:居中“前言”标题、仿宋正文、右对齐署名+出版时间 
  196. % ============================================================================== 
  197.  
  198. \newcommand{\Preface}[2]{ 
  199. \pagestyle{empty} % 前言页无页眉页脚 
  200. { 
  201. \begin{center} 
  202. \vspace*{2mm} % 顶部预留2mm空白 
  203. \heiti\zihao{-2}\noindent\quad% 标题:黑体、二号字、居中、两字间距 
  204. \vspace*{5mm} % 标题下方间距5mm 
  205. \end{center} 
  206.  
  207. \fangsong\zihao{-4} % 正文:仿宋、小四(教材前言标准字体) 
  208. #1 % 第一参数:前言正文内容 
  209. \settowidth{\mylength}{\zhdigits{\the\PublishYear}年\zhnumber{\the\PublishMonth}月} % 计算出版时间宽度(用于署名对齐) 
  210. \begin{flushright} % 署名右对齐 
  211. \begin{minipage}{\mylength} % 固定宽度(与出版时间同宽,避免署名错位) 
  212. \centering 
  213. #2\par % 第二参数:署名(如“《XXX教材》编写组”) 
  214. \zhdigits{\the\PublishYear}年\zhnumber{\the\PublishMonth}月 % 出版时间(中文数字) 
  215. \end{minipage} 
  216. \end{flushright} 
  217. } 
  218. \cleardoublepage % 强制双页跳转(前言后进入目录/正文) 
  219. } 
  220.  
  221. % ============================================================================== 
  222. % 五、文档分区命令:重定义/新增frontmatter/midmatter/mainmatter/backmatter 
  223. % 核心功能:区分教材结构(前言区、中间区、正文区、附录区),统一页码样式 
  224. % ============================================================================== 
  225.  
  226. \makeatletter % 允许使用@开头的LaTeX内部命令 
  227. % 前言区(frontmatter):罗马数字页码、plain版式(无页眉) 
  228. \renewcommand{\frontmatter}{ 
  229. \if@openright\cleardoublepage\else\clearpage\fi % 强制右页开始,否则直接换页 
  230. \@mainmatterfalse % 标记为非正文区 
  231. \pagenumbering{Roman} % 页码格式:罗马数字(I、II、III...) 
  232. \pagestyle{plain} % 版式:plain(仅页码,无页眉) 
  233. } 
  234.  
  235. % 中间区(midmatter):新增命令,适配教材中间过渡区(如目录、绪论) 
  236. \newcommand{\midmatter}{ 
  237. \if@openright\cleardoublepage\else\clearpage\fi% 强制右页开始,否则直接换页 
  238. \@mainmatterfalse % 标记为非正文区 
  239. \pagenumbering{Roman} % 罗马数字页码 
  240. \pagestyle{plain} % plain版式 
  241. } 
  242.  
  243. % 正文区(mainmatter):阿拉伯数字页码、myfancy版式(自定义页眉页脚) 
  244. \renewcommand{\mainmatter}{ 
  245. \if@openright\cleardoublepage\else\clearpage\fi% 强制右页开始,否则直接换页 
  246. \cleardoublepage % 强制双页跳转(正文从右页开始) 
  247. \@mainmattertrue % 标记为正文区 
  248. \pagenumbering{arabic} % 页码格式:阿拉伯数字(1、2、3...) 
  249. \pagestyle{myfancy} % 版式:myfancy(自定义页眉页脚) 
  250. } 
  251.  
  252. % 附录区(backmatter):重定义,适配教材附录样式(“附录A、附录B”) 
  253. \renewcommand\backmatter{% 
  254. \if@openright\cleardoublepage\else\clearpage\fi% 强制右页开始,否则直接换页 
  255. % 附录标题样式:居中、黑体、三号字、“附录+章节号”(如“附录一”) 
  256. \titleformat{\chapter}{\filcenter \heiti \sanhao}{附录\,\thechapter\,}{1em}{} 
  257. % 附录目录样式:顶部间距、黑体小四、“附录+编号+标题”、点线填充+页码 
  258. \titlecontents{chapter}[0pt]{\vspace{0.25\baselineskip} \heiti \xiaosi[1.25]} 
  259. {附录\,\thecontentslabel\quad}{} 
  260. {\hspace{.5em}\titlerule*{.}\contentspage} 
  261. \@mainmattertrue % 标记为正文区(可使用章节编号) 
  262. \pagestyle{plain} % 版式:plain(附录区简化页眉) 
  263. } 
  264.  
  265. % 强制双页跳转优化:奇数页后自动补空白页(确保正文/附录从右页开始) 
  266. \renewcommand\cleardoublepage{\clearpage \ifodd\c@page\else 
  267. \newpage{} % 新增空白页 
  268. \thispagestyle{empty} % 空白页无页眉页脚 
  269. \vspace*{\fill} % 垂直填充(空白页中间留白) 
  270. \begin{center} 
  271. \end{center} 
  272. \vspace*{\fill} 
  273. \clearpage\fi% 
  274. } 
  275. \makeatother % 结束内部命令使用 
  276.  
  277. % ============================================================================== 
  278. % 六、功能性辅助命令:封装教材常用排版功能(出版时间、副标题、带圈数字等) 
  279. % ============================================================================== 
  280.  
  281. % 出版时间相关命令 
  282. \newtoks\PublishYear % 出版年份变量 
  283. \newtoks\PublishMonth % 出版月份变量 
  284. \newcommand{\PublishDate}[2]{ % 赋值命令:\PublishDate{年份}{月份}(如\PublishDate{2024}{9}) 
  285. \PublishYear={#1} 
  286. \PublishMonth={#2} 
  287. } 
  288.  
  289. % 子标题相关命令 
  290. \newtoks\SubTitle % 副标题变量 
  291. \newif\ifhassubtitle\hassubtitlefalse % 布尔变量:是否有副标题(默认false) 
  292. \newcommand{\subtitle}[1]{\hassubtitletrue\SubTitle={#1}} % 赋值命令:\subtitle{副标题}(自动设hassubtitle=true) 
  293.  
  294. % 完整标题命令:\EntireTitle 显示“主标题(副标题)”(无副标题则仅主标题) 
  295. \newcommand{\EntireTitle}{{\makeatletter\@title\makeatother}\ifhassubtitle\the\SubTitle\fi} 
  296.  
  297. % 标识变量(如教材分类标识) 
  298. \newtoks\BiaoJiOne 
  299. \BiaoJiOne={未指定} % 标识一默认值:未指定 
  300. \newtoks\BiaoJiTwo 
  301. \BiaoJiTwo={未指定} % 标识二默认值:未指定 
  302. \newcommand{\BiaoJi}[2]{\BiaoJiOne={#1}\BiaoJiTwo={#2}} % 赋值命令:\BiaoJi{标识一}{标识二} 
  303.  
  304. % 学习目标命令:\XueXiMuBiao 插入“学习目标”图标(需提前准备图标文件) 
  305. \newcommand{\XueXiMuBiao}{\par\noindent\includegraphics{template/Logo/学习目标}} 
  306.  
  307. % 自定义长度变量:\mylength 用于动态调整排版宽度 
  308. \newlength{\mylength} 
  309.  
  310. % 带圆圈数字命令:\circled{数字} 生成圆形包裹的小数字(如①、②,用于列表项) 
  311. \newcommand{\circled}[1]{\raisebox{1pt}{% 向上微调1pt(与文本基线对齐) 
  312. \tikz[baseline=(char.base)]{% tikz绘图,基线对齐 
  313. \node[shape=circle,draw,inner sep =0pt,minimum size = 12pt](char){\zihao{-5}#1};% 圆形节点:描边、无内边距、直径12pt、小五号数字 
  314. } 
  315. }} 
  316.  
  317. % 图标插入命令:\TuBiao{图标路径} 插入按钮/图标(高度1.7ex,与文本高度匹配) 
  318. \newcommand{\TuBiao}[1]{\includegraphics[height=1.7ex]{#1}} 
  319.  
  320. % 罗马数字排版命令:适配中文文档习惯 
  321. \makeatletter 
  322. \newcommand{\rmnum}[1]{\romannumeral #1} % 小写罗马数字(i、ii、iii...) 
  323. \newcommand{\Rmnum}[1]{\expandafter\@slowromancap\romannumeral #1\@} % 大写罗马数字(I、II、III...) 
  324. \makeatother 
  325.  
  326. % 引用文本命令:\yinyong{引用内容} 生成楷体GB2312+Courier New字体的引用(带中文引号) 
  327. \newcommand{\yinyong}[1]{{\KTGB\CourierNew#1”}} 

6. Headings.tex

  1. % ============================================================================== 
  2. % 一、页眉设计说明:明确奇偶页差异化布局逻辑(区分项目名、课程名、任务名、页码) 
  3. % ============================================================================== 
  4.  
  5. % 页眉: 
  6. % 奇数页(Odd page): 
  7. % - 中间(OC):项目名(chapter章节名,通过\rightmark获取) 
  8. % - 右边(OR):页码(英文粗体小字体) 
  9. % 偶数页(Even page): 
  10. % - 左边(EL):页码(英文粗体小字体) 
  11. % - 中间(EC):课程名(title文档名,通过\leftmark获取) 
  12. % 注:原注释中“logo+任务名”未实际启用,当前简化为“文字+页码”布局,保留logo加载逻辑备用 
  13.  
  14. % ============================================================================== 
  15. % 二、基础配置:启用fancy版式与logo加载 
  16. % ============================================================================== 
  17.  
  18. \pagestyle{fancy} % 启用fancyhdr宏包的fancy版式(替换LaTeX默认页眉页脚) 
  19.  
  20. \newsavebox{\mylogo} % 定义存储logo的盒子(用于预加载logo,避免重复编译时多次读取图片) 
  21. \sbox{\mylogo}{% 加载logo图片到\mylogo盒子 
  22. \smash{% 取消图片的垂直占位(避免logo过高导致页眉被拉伸) 
  23. \includegraphics[ 
  24. width=0.95cm, % logo宽度:0.95cm 
  25. height=0.95cm % logo高度:0.95cm(正方形比例,视觉协调) 
  26. ]{ 
  27. \ifIsMyself % 判断是否为自定义模式(\IsMyself为true时加载自定义logo) 
  28. template/Logo/wdlogo % 自定义logo路径:template/Logo/wdlogo(无后缀,LaTeX自动识别格式) 
  29. \else % 默认模式:加载通用logo 
  30. template/Logo/Logo-Headings % 通用logo路径:template/Logo/Logo-Headings 
  31. \fi 
  32. } 
  33. } 
  34. } 
  35.  
  36. % ============================================================================== 
  37. % 三、自定义页眉样式:\myheadings 命令(统一设置奇偶页页眉内容) 
  38. % ============================================================================== 
  39.  
  40. \newcommand{\myheadings}{ 
  41. % 奇数页中间(Odd page Center):项目名(章节名) 
  42. \fancyhead[OC]{% 
  43. \WRYH % 应用微软雅黑字体(\WRYH为全局定义的中英文统一字体命令) 
  44. \zihao{-5} % 字体大小:小五号(适配页眉紧凑排版) 
  45. \rightmark % 显示章节二级标题(section名,需配合\section命令,由fancyhdr自动记录) 
  46. } 
  47. % 奇数页右边(Odd page Right):页码 
  48. \fancyhead[OR]{% 
  49. \TimesNewRoman % 应用新罗马字体(英文页码专用,正式规范) 
  50. \zihao{-5} % 字体大小:小五号 
  51. \bfseries % 字体加粗(突出页码,便于查阅) 
  52. \thepage % 显示当前页码 
  53. } 
  54. % 偶数页左边(Even page Left):页码 
  55. \fancyhead[EL]{% 
  56. \TimesNewRoman % 新罗马字体 
  57. \zihao{-5} % 小五号 
  58. \bfseries % 加粗 
  59. \thepage % 当前页码 
  60. } 
  61. % 偶数页中间(Even page Center):课程名(文档标题) 
  62. \fancyhead[EC]{% 
  63. \WRYH % 微软雅黑字体 
  64. \zihao{-5} % 小五号 
  65. \leftmark % 显示章节一级标题(chapter名,需配合\chapter命令,由fancyhdr自动记录) 
  66. } 
  67. } 
  68.  
  69. % ============================================================================== 
  70. % 四、自定义页脚样式:\myfoot 命令(当前简化为空白,预留扩展) 
  71. % ============================================================================== 
  72.  
  73. \newcommand{\myfoot}{% 
  74. % 注释:备选页脚配置(当前未启用,保留奇偶页页码布局逻辑备用) 
  75. % \fancyfoot[OR,EL]{\TimesNewRoman\zihao{-5}\bfseries\thepage}%奇数页右边和偶数页左边的页脚 
  76. } 
  77.  
  78. % ============================================================================== 
  79. % 五、启用自定义版式:创建myfancy样式并应用 
  80. % ============================================================================== 
  81.  
  82. \fancypagestyle{myfancy}{ % 定义新的fancy版式,名为myfancy 
  83. \fancyhf{}% 清空默认页眉页脚内容(避免与自定义样式冲突) 
  84. \myheadings% 应用自定义页眉样式(\myheadings命令) 
  85. \myfoot% 应用自定义页脚样式(当前为空白,预留扩展) 
  86. \renewcommand{\headrulewidth}{0.4pt} % 页眉下方分隔线宽度:0.4pt(细实线,区分页眉与正文) 
  87. } 
  88.  
  89. % ============================================================================== 
  90. % 六、重定义plain版式:适配章节首页(chapter第一页) 
  91. % ============================================================================== 
  92.  
  93. \fancypagestyle{plain}{% % 重定义plain版式(LaTeX默认章节首页使用plain版式) 
  94. \fancyhf{}% 清空页眉页脚默认格式 
  95. \myfoot% 应用自定义页脚(当前为空白,可按需添加章节首页页脚) 
  96. \renewcommand{\headrulewidth}{0pt} % 章节首页隐藏页眉分隔线(避免与章节标题冲突,视觉更简洁) 
  97. } 

7. ZuoYe.tex

  1. % ============================================================================== 
  2. % 一、习题基础配置:定义题型计数器与通用题型命令 
  3. % ============================================================================== 
  4.  
  5. % 定义题型计数器:tixing(用于自动编号“一、二、三...”) 
  6. \newcounter{tixing} 
  7.  
  8. % 题型标题命令:\TiXing{题型名称} → 生成“一、单选题”“二、填空题”等标题 
  9. \newcommand{\TiXing}[1]{{ 
  10. \stepcounter{tixing} % 计数器自增1(每调用一次编号+1) 
  11. \par % 换行 
  12. \heiti \chinese{tixing}、#1 % 样式:黑体 + 中文数字编号 + 题型名称(如“一、单选题”) 
  13. }} 
  14.  
  15. % ============================================================================== 
  16. % 二、填空题命令:\tk[下划线长度系数]{答案} → 生成带下划线的填空区域 
  17. % ============================================================================== 
  18.  
  19. \newcommand{\tk}[2][0.5]{ % 参数:[1]下划线长度系数(默认0.5cm),[2]答案内容 
  20. \ifshowanswer % 判断是否显示答案(\showanswer=true时显示) 
  21. % 显示答案:下划线覆盖答案,hidden=true(仅显示下划线,不隐藏文字) 
  22. \CJKunderline[hidden=true,skip=false]{\hspace*{#1 cm}#2\hspace*{#1 cm}}% 
  23. \else % 不显示答案:下划线区域为空,仅显示空白下划线 
  24. \CJKunderline[hidden=true,skip=false]{\hspace*{#1 cm}#2\hspace*{#1 cm}}% 
  25. % 注:此处逻辑可优化(不显示答案时应替换#2为空白),当前代码下划线长度与答案无关,仅由#1控制 
  26. \fi 
  27. } 
  28. % 说明:\CJKunderline来自xeCJKfntef包,支持中文下划线换行,skip=false避免下划线断裂 
  29.  
  30. % ============================================================================== 
  31. % 三、选择题命令:支持4/3/5/6个选项,自适应列数(1列/2列/4列) 
  32. % 核心逻辑:计算最长选项宽度,自动选择最优列数(避免选项溢出或排版松散) 
  33. % ============================================================================== 
  34.  
  35. % 定义临时长度变量:存储各选项宽度、最大宽度、列宽(用于自适应布局) 
  36. \newlength{\la} 
  37. \newlength{\lb} 
  38. \newlength{\lc} 
  39. \newlength{\ld} 
  40. \newlength{\lee} 
  41. \newlength{\lf} 
  42. \newlength{\lhalf} % 半列宽(46%行宽,预留间距) 
  43. \newlength{\lquarter} % 四列宽(23%行宽,预留间距) 
  44. \newlength{\lmax} % 最长选项宽度 
  45.  
  46. % ------------------------------ 
  47. % 1. 四选项选择题:\xz{A选项}{B选项}{C选项}{D选项} 
  48. % ------------------------------ 
  49. \newcommand{\xz}[4]{\par % 换行开始选择题 
  50. % 计算各选项宽度(包含“A、”“B、”前缀和后续空白) 
  51. \settowidth{\la}{A、#1~~~}  
  52. \settowidth{\lb}{B、#2~~~} 
  53. \settowidth{\lc}{C、#3~~~}  
  54. \settowidth{\ld}{D、#4~~~}  
  55.  
  56. % 找出最长选项宽度(赋值给\lmax) 
  57. \ifdim \la > \lb 
  58. \setlength{\lmax}{\la} 
  59. \else 
  60. \setlength{\lmax}{\lb} 
  61. \fi 
  62. \ifdim \lmax < \lc 
  63. \setlength{\lmax}{\lc} 
  64. \fi 
  65. \ifdim \lmax < \ld 
  66. \setlength{\lmax}{\ld} 
  67. \fi  
  68.  
  69. % 定义列宽:半列宽=46%行宽,四列宽=23%行宽 
  70. \setlength{\lhalf}{0.46\linewidth}  
  71. \setlength{\lquarter}{0.23\linewidth} 
  72.  
  73. % 自适应列数判断: 
  74. \ifdim \lmax > \lhalf % 最长选项超过半列宽 → 1列排版(避免溢出) 
  75. \par A、#1 \par B、#2 \par C、#3 \par D、#4  
  76. \else 
  77. \ifdim \lmax > \lquarter % 最长选项超过四列宽 → 2列排版 
  78. \makebox[\lhalf][l]{A、#1~~~}% 左对齐,占半列宽,后续加空白填充 
  79. \makebox[\lhalf][l]{B、#2~~~}\par% 第二列,换行 
  80. \makebox[\lhalf][l]{C、#3~~~}% 第三列(新行第一列) 
  81. \makebox[\lhalf][l]{D、#4~~~}% 第四列(新行第二列) 
  82. \else % 最长选项不超过四列宽 → 4列排版(紧凑美观) 
  83. \makebox[\lquarter][l]{A、#1~~~}% 四列并排 
  84. \makebox[\lquarter][l]{B、#2~~~}%  
  85. \makebox[\lquarter][l]{C、#3~~~}%  
  86. \makebox[\lquarter][l]{D、#4~~~} 
  87. \fi 
  88. \fi 
  89. } 
  90.  
  91. % ------------------------------ 
  92. % 2. 三选项选择题:\xziii{A选项}{B选项}{C选项}(逻辑同四选项,仅少D选项) 
  93. % ------------------------------ 
  94. \newcommand{\xziii}[3]{\\[.5pt]% 换行,0.5pt垂直间距 
  95. \settowidth{\la}{A、#1~~~}  
  96. \settowidth{\lb}{B、#2~~~} 
  97. \settowidth{\lc}{C、#3~~~}  
  98.  
  99. % 计算最长选项宽度 
  100. \ifdim \la > \lb 
  101. \setlength{\lmax}{\la} 
  102. \else 
  103. \setlength{\lmax}{\lb} 
  104. \fi 
  105. \ifdim \lmax < \lc 
  106. \setlength{\lmax}{\lc} 
  107. \fi 
  108.  
  109. \setlength{\lhalf}{0.46\linewidth}  
  110. \setlength{\lquarter}{0.23\linewidth} 
  111.  
  112. % 自适应列数 
  113. \ifdim \lmax > \lhalf % 1列排版 
  114. A、#1 \\ B、#2 \\ C、#3 
  115. \else 
  116. \ifdim \lmax > \lquarter % 2列排版 
  117. \makebox[\lhalf][l]{A、#1~~~}%  
  118. \makebox[\lhalf][l]{B、#2~~~}\\% 
  119. \makebox[\lhalf][l]{C、#3~~~}%  
  120. \else % 3列排版(占用前三个四列宽位置) 
  121. \makebox[\lquarter][l]{A、#1~~~}%  
  122. \makebox[\lquarter][l]{B、#2~~~}%  
  123. \makebox[\lquarter][l]{C、#3~~~} 
  124. \fi 
  125. \fi 
  126. } 
  127.  
  128. % ------------------------------ 
  129. % 3. 五选项选择题:\xzv{A选项}{B选项}{C选项}{D选项}{E选项}(逻辑同前,新增E选项) 
  130. % ------------------------------ 
  131. \newcommand{\xzv}[5]{\\[.5pt]%  
  132. \settowidth{\la}{A、#1~~~}  
  133. \settowidth{\lb}{B、#2~~~} 
  134. \settowidth{\lc}{C、#3~~~}  
  135. \settowidth{\ld}{D、#4~~~}  
  136. \settowidth{\lee}{E、#5~~~}  
  137.  
  138. % 计算最长选项宽度 
  139. \ifdim \la > \lb 
  140. \setlength{\lmax}{\la} 
  141. \else 
  142. \setlength{\lmax}{\lb} 
  143. \fi 
  144. \ifdim \lmax < \lc 
  145. \setlength{\lmax}{\lc} 
  146. \fi 
  147. \ifdim \lmax < \ld 
  148. \setlength{\lmax}{\ld} 
  149. \fi 
  150. \ifdim \lmax < \lee 
  151. \setlength{\lmax}{\lee} 
  152. \fi 
  153.  
  154. \setlength{\lhalf}{0.46\linewidth}  
  155. \setlength{\lquarter}{0.23\linewidth} 
  156.  
  157. % 自适应列数 
  158. \ifdim \lmax > \lhalf % 1列排版 
  159. A、#1 \\ B、#2 \\ C、#3 \\ D、#4 \\ E、#5 
  160. \else 
  161. \ifdim \lmax > \lquarter % 2列排版(E选项单独一行第一列) 
  162. \makebox[\lhalf][l]{A、#1~~~}%  
  163. \makebox[\lhalf][l]{B、#2~~~}\\% 
  164. \makebox[\lhalf][l]{C、#3~~~}% 
  165. \makebox[\lhalf][l]{D、#4~~~}\\% 
  166. \makebox[\lhalf][l]{E、#5~~~}% 
  167. \else % 4列排版(E选项单独一行第一列) 
  168. \makebox[\lquarter][l]{A、#1~~~}%  
  169. \makebox[\lquarter][l]{B、#2~~~}%  
  170. \makebox[\lquarter][l]{C、#3~~~}% 
  171. \makebox[\lquarter][l]{D、#4~~~}\\% 
  172. \makebox[\lquarter][l]{E、#5~~~} 
  173. \fi 
  174. \fi 
  175. } 
  176.  
  177. % ------------------------------ 
  178. % 4. 六选项选择题:\xzvi{A-F选项}(逻辑同前,新增F选项) 
  179. % ------------------------------ 
  180. \newcommand{\xzvi}[6]{\\[.5pt]%  
  181. \settowidth{\la}{A、#1~~~}  
  182. \settowidth{\lb}{B、#2~~~} 
  183. \settowidth{\lc}{C、#3~~~}  
  184. \settowidth{\ld}{D、#4~~~}  
  185. \settowidth{\lee}{E、#5~~~} 
  186. \settowidth{\lf}{F、#6~~~} % 新增F选项宽度计算(原代码误写为E、#6,已修正) 
  187.  
  188. % 计算最长选项宽度 
  189. \ifdim \la > \lb 
  190. \setlength{\lmax}{\la} 
  191. \else 
  192. \setlength{\lmax}{\lb} 
  193. \fi 
  194. \ifdim \lmax < \lc 
  195. \setlength{\lmax}{\lc} 
  196. \fi 
  197. \ifdim \lmax < \ld 
  198. \setlength{\lmax}{\ld} 
  199. \fi 
  200. \ifdim \lmax < \lee 
  201. \setlength{\lmax}{\lee} 
  202. \fi 
  203. \ifdim \lmax < \lf 
  204. \setlength{\lmax}{\lf} 
  205. \fi 
  206.  
  207. \setlength{\lhalf}{0.46\linewidth}  
  208. \setlength{\lquarter}{0.23\linewidth} 
  209.  
  210. % 自适应列数 
  211. \ifdim \lmax > \lhalf % 1列排版 
  212. A、#1 \\ B、#2 \\ C、#3 \\ D、#4 \\ E、#5 \\ F、#6 
  213. \else 
  214. \ifdim \lmax > \lquarter % 2列排版(3行2列) 
  215. \makebox[\lhalf][l]{A、#1~~~}%  
  216. \makebox[\lhalf][l]{B、#2~~~}\\% 
  217. \makebox[\lhalf][l]{C、#3~~~}% 
  218. \makebox[\lhalf][l]{D、#4~~~}\\% 
  219. \makebox[\lhalf][l]{E、#5~~~}% 
  220. \makebox[\lhalf][l]{F、#6~~~}%  
  221. \else % 4列排版(2行4列,F选项占第二行第四列) 
  222. \makebox[\lquarter][l]{A、#1~~~}%  
  223. \makebox[\lquarter][l]{B、#2~~~}%  
  224. \makebox[\lquarter][l]{C、#3~~~}% 
  225. \makebox[\lquarter][l]{D、#4~~~}\\% 
  226. \makebox[\lquarter][l]{E、#5~~~}% 
  227. \makebox[\lquarter][l]{F、#6~~~}% 
  228. \fi 
  229. \fi 
  230. } 
  231.  
  232. % ============================================================================== 
  233. % 四、判断题命令:\pd[间距系数]{答案} → 生成带点线填充和答案括号的判断题 
  234. % ============================================================================== 
  235.  
  236. % 定义点线填充命令:\leaderfill → 用点号(·)填充空白区域(连接题干与答案括号) 
  237. \def\leaderfill{\leaders\hbox to 0.5em{\hss$\cdot$\hss}\hfill} 
  238.  
  239. \newcommand{\pd}[2][1]{\nolinebreak % 参数:[1]间距系数(默认1),[2]答案(t=对,非t=错) 
  240. \leaderfill% 点线填充至括号处 
  241. \ifshowanswer % 判断是否显示答案 
  242. \ifx #2 t % 答案为t(对)→ 显示对勾(\Checkmark来自bbding包) 
  243. \Checkmark 
  244. \else % 答案非t(错)→ 显示叉号(\XSolid来自bbding包) 
  245. \XSolid 
  246. \fi 
  247. \else % 不显示答案 → 显示空白占位(与对勾宽度一致) 
  248. \hphantom{\Checkmark} 
  249. \fi 
  250.  
  251. } 
  252.  
  253. % ============================================================================== 
  254. % 五、简答题命令:\jd{答案内容} → 显示“答:+答案”(仅在显示答案时生效) 
  255. % ============================================================================== 
  256.  
  257. \newcommand{\jd}[1]{\par % 换行 
  258. \ifshowanswer % 判断是否显示答案 
  259. \textbf{答:}#1 % 样式:加粗“答:”+答案内容 
  260. \fi 
  261. } 

8. TongYongPeiZhi.tex

  1. % ============================================================================== 
  2. % 一、自定义颜色定义:为文档元素(文本、标题)提供统一配色 
  3. % ============================================================================== 
  4.  
  5. % 定义文本蓝色:TextBlue(RGB:54,95,145)→ 用于重点文本、标题点缀 
  6. \definecolor{TextBlue}{RGB}{54,95,145} 
  7. % 定义小节标题色:SubsectionColor(RGB:58,93,138)→ 用于小节标题,与文本蓝协调 
  8. \definecolor{SubsectionColor}{RGB}{58,93,138} 
  9.  
  10. % ============================================================================== 
  11. % 二、图表/代码标题样式配置:统一图、表、代码块的标题字体与格式 
  12. % ============================================================================== 
  13.  
  14. % 定义图片标题字体:FigureFont → 中文方正书宋简体 + 小五号字 
  15. \DeclareCaptionFont{FigureFont}{\CJKfamily{FZSSJTzh}\zihao{-5}}% 
  16. % 用途:图片(figure)的标题文本使用该字体,风格统一 
  17.  
  18. % 定义表格标题字体:TableFont → 黑体 + 小五号字 
  19. \DeclareCaptionFont{TableFont}{\HT\zihao{-5}}% 
  20. % 用途:表格(table)的标题文本使用该字体,突出表格标题 
  21.  
  22. % 定义标题标签分隔符:fill → 标签(如图、表)与标题文本之间用“自动填充空白”分隔 
  23. \DeclareCaptionLabelSeparator{fill}{\hspace*{\fill}}% 
  24. % 示例:“图1”与标题文本之间自动填充空白,使标题右对齐 
  25.  
  26. % 定义表格标题格式:TableFormatWD → 标签+文本+右对齐页码(通过填充空白实现) 
  27. \DeclareCaptionFormat{TableFormatWD}{#1#2\hspace*{\fill}\hbox{#3}\hspace*{\fill}\phantom{#2#1}}% 
  28. % 参数说明:#1=标签(如表1),#2=分隔符,#3=页码;phantom用于平衡间距,使标题整体居中 
  29.  
  30. % 定义代码块标题字体:LstlistingFont → 小五号字 
  31. \DeclareCaptionFont{LstlistingFont}{\zihao{-5}}% 
  32. % 用途:代码块(lstlisting)的标题文本使用该字体,与图表标题字号统一 
  33.  
  34. % 定义代码块标题格式:LstlistingFormatWD → 与表格标题格式一致(标签+文本+右对齐页码) 
  35. \DeclareCaptionFormat{LstlistingFormatWD}{#1#2\hspace*{\fill}\hbox{#3}\hspace*{\fill}\phantom{#2#1}}% 
  36.  
  37. % ============================================================================== 
  38. % 三、三线表线条宽度配置:统一三线表的粗细风格 
  39. % ============================================================================== 
  40.  
  41. % 粗线宽度:heavyrulewidth=1pt → 用于三线表的顶部线(\toprule)和底部线(\bottomrule) 
  42. \setlength{\heavyrulewidth}{1pt}% 
  43. % 细线宽度:lightrulewidth=0.5pt → 用于三线表的中间线(\midrule) 
  44. \setlength{\lightrulewidth}{0.5pt}% 
  45. % 说明:原注释“midrule粗细1pt”有误,实际配置为0.5pt,符合“粗-细-粗”的三线表规范 
  46.  
  47. % ============================================================================== 
  48. % 四、预留功能命令:定义教材常用模块的空命令(预留扩展,当前未实现具体功能) 
  49. % ============================================================================== 
  50.  
  51. \newcommand{\xmrws}[1]{} % 预留命令:项目任务描述(未实现) 
  52. \newcommand{\ProjectYiJi}[1]{} % 预留命令:一级项目(未实现) 
  53. \newcommand{\ProjectErJi}[1]{} % 预留命令:二级项目(未实现) 
  54. \newcommand{\TaskColorText}[1]{} % 预留命令:任务彩色文本(未实现) 
  55. \newcommand{\LearningTarget}{} % 预留命令:学习目标(未实现) 
  56. \newcommand{\TaskDescription}{} % 预留命令:任务描述(未实现) 
  57. \newcommand{\TaskGuide}{} % 预留命令:任务指导(未实现) 
  58. \newcommand{\TaskImplement}{} % 预留命令:任务实施(未实现) 
  59. \newcommand{\EvaluationCriterion}{} % 预留命令:评价标准(未实现) 
  60. \newcommand{\CourseWork}{} % 预留命令:课程作业(未实现) 
  61. \newcommand{\ShiJianNeiRong}{} % 预留命令:实践内容(未实现) 
  62. \newcommand{\ShiJianZhunBei}{} % 预留命令:实践准备(未实现) 
  63. \newcommand{\ShiJianCaoZuo}{} % 预留命令:实践操作(未实现) 
  64. \newcommand{\ZhuYiShiXiang}{} % 预留命令:注意事项(未实现) 
  65.  
  66. % ============================================================================== 
  67. % 五、页面排版优化:避免孤行、寡行,优化章节跳转 
  68. % ============================================================================== 
  69.  
  70. % 节(section)跳转优化:节之间添加轻微负 penalty(-300),鼓励页面在节处分页 
  71. \newcommand{\sectionbreak}{% 
  72. \addpenalty{-300}% 负penalty降低分页成本,避免节内强制分页 
  73. \vspace*{0pt}} % 节之间预留0pt空白,不影响排版 
  74.  
  75. % 页面顶部基准线:topskip=0pt → 取消页面顶部默认基准线,避免文本贴顶 
  76. \setlength{\topskip}{0pt} 
  77.  
  78. % 孤行 penalty:clubpenalty=5000 → 避免段落首行单独出现在页面底部(孤行) 
  79. \clubpenalty=5000 
  80. % 寡行 penalty:widowpenalty=5000 → 避免段落末行单独出现在页面顶部(寡行) 
  81. \widowpenalty=5000 
  82. % 公式寡行 penalty:displaywidowpenalty=5000 → 避免公式单独出现在页面顶部 
  83. \displaywidowpenalty=5000 
  84. % 说明:penalty值越大,LaTeX越避免该情况(5000为高优先级,基本杜绝孤行/寡行) 
  85.  
  86. % ============================================================================== 
  87. % 六、部(part)标题样式配置:定制“部”的排版风格(教材分篇使用) 
  88. % ============================================================================== 
  89.  
  90. % 部标题样式:居中 + 方正大标宋 + 二号字 + 中文编号(第X篇) 
  91. \titleformat{\part}{% 
  92. \centering\FZDBS\zihao{2} % 对齐方式+字体+字号 
  93. }{第\chinese{part}篇}{1em}{#1} % 编号格式(第X篇)+ 编号与标题间距(1em)+ 标题内容(#1) 
  94.  
  95. % 部标题间距:左间距0pt + 上方间距1行高 + 下方间距1行高 
  96. \titlespacing{\part}{0pt}{\baselineskip}{\baselineskip} 
  97.  
  98. % 部标题层级:将part设为最高层级(top),优先于chapter显示 
  99. \titleclass{\part}{top} 

9. Listings.tex

  1. % ============================================================================== 
  2. % 一、代码字体定义:统一代码的中文字体与英文字体(适配中文注释+英文代码) 
  3. % ============================================================================== 
  4.  
  5. % 定义代码字体命令:\SourceCodeFont 
  6. \newcommand{\SourceCodeFont}{\zihao{-5}\CJKfamily{KTzh}\CourierNew}% 
  7. % 各部分功能说明: 
  8. % - \zihao{-5}:字体大小为小五号(紧凑不占用过多空间,适配代码密集排版) 
  9. % - \CJKfamily{KTzh}:中文使用楷体(KTzh为全局定义的中文楷体字体族,代码注释清晰易读) 
  10. % - \CourierNew:英文/数字使用Courier New(等宽字体,代码排版规范,字符对齐整齐) 
  11.  
  12. % ============================================================================== 
  13. % 二、代码块(lstlisting环境)全局配置:控制代码块的整体样式 
  14. % ============================================================================== 
  15.  
  16. \lstset{ 
  17. % xleftmargin = 0pt,% 注释:代码块左缩进(当前未启用,默认无额外缩进) 
  18. basicstyle = \SourceCodeFont,% 代码基础字体:应用上述\SourceCodeFont(小五号楷体+Courier New) 
  19. showspaces=true,% 注释:显示空格(用下划线标识,当前未启用,避免代码视觉杂乱) 
  20. % showtabs=true,% 注释:显示制表符(当前未启用) 
  21. stepnumber=4,% 行号步进:每4行显示一个行号(避免行号过多干扰代码阅读) 
  22. firstnumber =1,% 起始行号:从1开始计数(符合代码阅读习惯) 
  23. numberblanklines=false,% 空白行不显示行号(仅对有效代码行编号,简洁清晰) 
  24. % columns = flexible,% 注释:列格式为松散对齐(当前未启用,默认紧凑对齐) 
  25. aboveskip = 0pt,% 代码块上方空白:0pt(紧凑排版,与上下文文本无冗余间距) 
  26. belowskip = 0pt,% 代码块下方空白:0pt(同上,保持排版紧凑) 
  27. tabsize = 4,% 制表符宽度:4个字符(符合多数编程语言的缩进规范) 
  28. backgroundcolor=\color{Snow3},% 代码块背景色:Snow3(浅灰色,保护视力,区分代码与正文) 
  29. breaklines = true,% 长行自动换行:启用(避免代码超出页面宽度,无需横向滚动) 
  30. % numbers = left,% 注释:行号显示在左侧(当前未启用,需显示行号可取消注释) 
  31. % framexleftmargin=0pt,% 注释:代码框左侧内边距(当前未启用) 
  32. % floatplacement=ht% 注释:代码块浮动位置(当前未启用,默认随文本流排版) 
  33. } 
  34.  
  35. % ============================================================================== 
  36. % 三、代码块标题重定义:修改默认“Listing”为中文“代码” 
  37. % ============================================================================== 
  38.  
  39. \renewcommand{\lstlistingname}{代码} 
  40. % 说明:默认代码块标题为英文“Listing X”,修改后显示为中文“代码 X”(如“代码 1”),适配中文文档 
  41.  
  42. % ============================================================================== 
  43. % 四、行内代码命令:\wraplstinline{代码} 用于排版行内短代码(如命令、函数名) 
  44. % ============================================================================== 
  45.  
  46. % 定义行内代码环境:支持自动换行的行内代码排版 
  47. \newcommand{\wraplstinline}[1]{{\SourceCodeFont\seqsplit{#1}}} 
  48. % 各部分功能说明: 
  49. % - \SourceCodeFont:应用代码专用字体(与代码块字体一致,风格统一) 
  50. % - \seqsplit{#1}:自动拆分长文本(当行内代码过长时,自动换行,避免超出页面宽度) 
  51. % - 用途:排版行内短代码(如“\wraplstinline{print("Hello")}”),兼顾美观与可读性 

10. tables.tex

  1. % ============================================================================== 
  2. % 一、表格线条间距配置:控制表格横线与单元格内容的垂直间距(适配三线表) 
  3. % ============================================================================== 
  4.  
  5. % 表格内部横线(\midrule)下方间距:0pt(消除横线与下方内容的空白,紧凑排版) 
  6. \belowrulesep = 0pt 
  7. % 表格内部横线(\midrule)上方间距:0pt(消除横线与上方内容的空白) 
  8. \aboverulesep = 0pt 
  9. % 表格底部横线(\bottomrule)下方间距:0pt(消除底部横线与页面底部的冗余空白) 
  10. \belowbottomsep = 0pt 
  11.  
  12. % ============================================================================== 
  13. % 二、表格线条宽度配置:统一表格边框/横线的粗细 
  14. % ============================================================================== 
  15.  
  16. % 表格线条(横线、竖线)宽度:0.5pt(细线条,符合学术表格简洁美观的要求) 
  17. \setlength{\arrayrulewidth}{0.5pt} 
  18.  
  19. % ============================================================================== 
  20. % 三、自定义表格列格式:M列(垂直居中+自定义水平对齐+固定宽度) 
  21. % ============================================================================== 
  22.  
  23. % 定义新列格式M[水平对齐命令][列宽度]: 
  24. % - >{#1\zihao{-5}\arraybackslash}:列内文本先应用水平对齐命令(如\centering),再设为小五号字,最后重置换行规则 
  25. % - m{#2 - 2\tabcolsep-\arrayrulewidth}:列类型为m(垂直居中),宽度=指定宽度 - 2倍列间距(\tabcolsep) - 线条宽度(避免表格溢出) 
  26. % 用途:固定宽度列,支持垂直居中+自定义水平对齐(如左/中/右对齐) 
  27. \newcolumntype{M}[2]{>{#1\zihao{-5}\arraybackslash}m{#2 - 2\tabcolsep-\arrayrulewidth}}  
  28.  
  29. % ============================================================================== 
  30. % 四、tabularx表格适配:重定义X列(自动调整宽度列)样式 
  31. % ============================================================================== 
  32.  
  33. % 重定义tabularx的X列:垂直居中(m列)+ 小五号字 
  34. \renewcommand{\tabularxcolumn}[1]{>{\zihao{-5}\arraybackslash}m{#1}}  
  35. % 说明:默认X列为l列(水平左对齐、垂直顶端对齐),修改后变为垂直居中,字号统一为小五号 
  36.  
  37. % 定义新列格式x:水平居中+垂直居中+自动调整宽度 
  38. \newcolumntype{x}{>{\centering\arraybackslash}X}  
  39. % 特点:继承X列的自动宽度调整功能,叠加水平居中,且因上述重定义,默认小五号字,适配需要居中的自适应宽度列 
  40.  
  41. % ============================================================================== 
  42. % 五、通用表格列格式适配:统一c/l列的字号 
  43. % ============================================================================== 
  44.  
  45. % 定义新列格式C:通用c列(水平居中)+ 小五号字 
  46. \newcolumntype{C}{>{\zihao{-5}\arraybackslash}c}  
  47. % 用途:替代默认c列,无需重复设置字号,保持表格字体统一 
  48.  
  49. % 定义新列格式L:通用l列(水平左对齐)+ 小五号字 
  50. \newcolumntype{L}{>{\zihao{-5}\arraybackslash}l}  
  51. % 用途:替代默认l列,统一字号为小五号 
  52.  
  53. % ============================================================================== 
  54. % 六、表格行高配置:调整单元格内文字与横线的垂直间距 
  55. % ============================================================================== 
  56.  
  57. % 表格行高系数:1.2(默认1.0,放大1.2倍后,文字与上下横线间距更舒适,避免文字贴线) 
  58. \renewcommand{\arraystretch}{1.2}  
  59. % 说明:该参数控制行的拉伸比例,不改变字体大小,仅调整垂直间距 

11. EnumItem.tex

  1. % ============================================================================== 
  2. % 一、全局列表基础配置:统一所有列表的核心样式(有序+无序通用) 
  3. % ============================================================================== 
  4.  
  5. % 设置列表环境的格式 
  6. % \setlist{nosep} % 注释:原始仅取消垂直间距的配置(当前已扩展) 
  7. \setlist{nosep,align=left} % 全局列表基础样式: 
  8. % - nosep:取消列表项之间、列表与前后文本的默认垂直间距(紧凑排版,避免冗余空白) 
  9. % - align=left:列表项文本左对齐(默认可能为居中,左对齐更符合中文阅读习惯) 
  10.  
  11. % ============================================================================== 
  12. % 二、有序列表(enumerate)样式配置:按层级(1-3级)定制编号格式与排版 
  13. % 核心逻辑:适配中文正式文档习惯(如“1、”“(1)、”“①”编号),缩进与正文对齐 
  14. % ============================================================================== 
  15.  
  16. % 1级有序列表(最高层级,如“一、二、三”对应的数字层级) 
  17. \setlist[enumerate,1]{ 
  18. label = {\arabic*、}, % 编号格式:阿拉伯数字 + 中文顿号(如“1、”“2、”,符合中文排版规范) 
  19. leftmargin=0pt, % 列表左侧整体缩进:0pt(不额外左移,与正文左侧对齐) 
  20. labelindent = \parindent+0.3em, % 编号缩进:正文首行缩进量(\parindent,通常2字符)+ 0.3em(微调编号位置,避免贴边) 
  21. labelsep*=-0.2em, % 编号与文本间距:-0.2em(负间距,让文本紧跟编号,减少冗余空白) 
  22. labelwidth = *, % 编号宽度:自动适配(根据编号长度动态调整,避免编号溢出或间距不均) 
  23. listparindent=\parindent % 列表项内换行文本缩进:与正文首行缩进一致(如列表项文本过长换行后,缩进2字符,保持排版整齐) 
  24. } 
  25.  
  26. % 2级有序列表(嵌套在1级列表内,如“(1)、(2)、”) 
  27. \setlist[enumerate,2]{ 
  28. label = {(\arabic*)、}, % 编号格式:中文括号 + 阿拉伯数字 + 中文顿号(如“(1)、”“(2)、”,层级区分明显) 
  29. leftmargin=0pt, % 左侧整体缩进:0pt(继承1级列表对齐方式) 
  30. labelindent = \parindent, % 编号缩进:正文首行缩进量(与1级列表呼应,保持层级缩进逻辑) 
  31. labelsep*=-0.2em, % 编号与文本间距:-0.2em(与1级一致,风格统一) 
  32. labelwidth = *, % 编号宽度:自动适配 
  33. listparindent=\parindent % 换行文本缩进:与正文一致 
  34. } 
  35.  
  36. % 3级有序列表(嵌套在2级列表内,如“①、②、”) 
  37. \setlist[enumerate,3]{ 
  38. label = \protect\circled{\arabic*}, % 编号格式:带圈阿拉伯数字(如“①”“②”,\circled{}生成圆圈,\protect避免编译冲突) 
  39. leftmargin=0pt, % 左侧整体缩进:0pt 
  40. labelindent = \parindent, % 编号缩进:正文首行缩进量 
  41. labelsep*=-0.2em, % 编号与文本间距:-0.2em(统一风格) 
  42. labelwidth = *, % 编号宽度:自动适配 
  43. listparindent=\parindent % 换行文本缩进:与正文一致 
  44. } 
  45.  
  46. % ============================================================================== 
  47. % 三、无序列表(itemize)样式配置:按层级(1-2级)定制项目符号与排版 
  48. % 核心逻辑:项目符号区分层级,缩进符合中文嵌套习惯(二级列表更深缩进) 
  49. % ============================================================================== 
  50.  
  51.  
  52. % 1级无序列表(最高层级,如正文内的要点罗列) 
  53. \setlist[itemize,1]{ 
  54. labelindent = \parindent, % 项目符号缩进:正文首行缩进量(与正文段落对齐,不突兀) 
  55. labelsep*=0.5em, % 项目符号与文本间距:0.5em(正间距,避免文本与符号粘连) 
  56. leftmargin=*, % 左侧整体缩进:自动适配(根据符号宽度动态调整,保持左侧对齐) 
  57. listparindent=0pt % 列表项内换行文本缩进:0pt(无序列表换行文本左对齐,与首行文本对齐,更简洁) 
  58. } 
  59.  
  60. % 2级无序列表(嵌套在1级列表内,如子要点罗列) 
  61. \setlist[itemize,2]{ 
  62. leftmargin=0pt, % 左侧整体缩进:0pt 
  63. labelindent = 2\parindent, % 项目符号缩进:2倍正文首行缩进量(比1级更深,明确层级关系) 
  64. labelsep*=0.5em, % 项目符号与文本间距:0.5em(与1级一致,风格统一) 
  65. labelwidth = *, % 项目符号宽度:自动适配 
  66. listparindent=\parindent % 换行文本缩进:与正文一致 
  67. } 

12. TableOfContents.tex

  1. % ============================================================================== 
  2. % 一、目录间距基础配置:控制目录标题与条目、条目之间的垂直间距 
  3. % ============================================================================== 
  4.  
  5. % 目录标题(“目录”)上方间距:0pt(取消默认上方空白,紧凑排版) 
  6. \setlength{\cftbeforetoctitleskip}{0pt} 
  7. % 目录标题下方间距:0pt(取消默认下方空白,条目紧跟标题) 
  8. \setlength{\cftaftertoctitleskip}{0pt} 
  9. % 部(part)条目上方间距:1行高(\baselineskip,区分不同部) 
  10. \setlength{\cftbeforepartskip}{\baselineskip} 
  11. % 章(chapter)条目上方间距:5pt(适度间距,区分不同章) 
  12. \setlength{\cftbeforechapskip}{5pt} 
  13.  
  14. % ============================================================================== 
  15. % 三、目录编号深度配置:控制正文中章节编号与目录显示的层级 
  16. % ============================================================================== 
  17.  
  18. % 正文中章节编号深度:4级(支持paragraph层级编号,对应-1:part~5:subparagraph) 
  19. \setcounter{secnumdepth}{4}  
  20. % 目录中显示的层级:3级(显示到subsubsection,即“章-节-小节”,不显示paragraph及以下) 
  21. \setcounter{tocdepth}{3}  
  22. % 层级编号说明(对应数值含义): 
  23. %-1 part(部) 
  24. %0 chapter(章) 
  25. %1 section(节) 
  26. %2 subsection(小节) 
  27. %3 subsubsection(子小节) 
  28. %4 paragraph(段) 
  29. %5 subparagraph(子段) 
  30.  
  31. % ============================================================================== 
  32. % 三、目录标题样式重定义:覆盖前序配置,最终生效样式 
  33. % ============================================================================== 
  34. \makeatletter 
  35. %\renewcommand{\@tocrmarg}{0pt plus1fil} 
  36. \renewcommand{\@pnumwidth}{1em} 
  37. \makeatother 
  38. % ============================================================================== 
  39. % 四、目录标题样式重定义:覆盖前序配置,最终生效样式 
  40. % ============================================================================== 
  41.  
  42. % 目录标题文本:“目录”(中间加一个“目”字宽度的空白,\hphantom{目},使标题更舒展) 
  43. \renewcommand{\contentsname}{目\hphantom{目}录} 
  44. % 目录标题字体:右对齐 + 小二号字 + 黑体(最终生效的字体大小) 
  45. \renewcommand{\cfttoctitlefont}{\hfill\zihao{-2}\HT} 
  46. % 目录标题后填充:仅右对齐(简化对齐逻辑,与前序\mbox{}效果一致) 
  47. \renewcommand{\cftaftertoctitle}{\hfill} 
  48. % 目录标题上方间距:1行高(\baselineskip,适度留白,避免贴顶) 
  49. \setlength{\cftbeforetoctitleskip}{\baselineskip} 
  50. % 目录标题下方间距:1行高(\baselineskip,与标题上方间距对称,美观) 
  51. \setlength{\cftaftertoctitleskip}{\baselineskip} 
  52.  
  53. % ============================================================================== 
  54. % 五、目录点线填充配置:定制条目名称与页码之间的点线样式 
  55. % ============================================================================== 
  56.  
  57. % 点线字符:单个点(向上微调0.5ex,与文本基线对齐,更美观) 
  58. \renewcommand{\cftdot}{\raisebox{0.5ex}{.}} 
  59. \renewcommand{\cftdotsep}{4} % 设置点之间的间隔 
  60. % 点线填充命令:\QianDaoFu(quad空格 + 点线填充 + 按默认点间距填充) 
  61. \def\QianDaoFu{\cftdotfill{\cftdotsep}} 
  62.  
  63.  
  64. % ============================================================================== 
  65. % 六、部(part)条目样式配置:定制“部”的字体、间距、点线 
  66. % ============================================================================== 
  67.  
  68. % 部条目点线:使用上述\QianDaoFu点线样式 
  69. \renewcommand{\cftpartleader}{\QianDaoFu} 
  70. % 部条目上方间距:0pt(紧凑排版,与上一条目无额外空白) 
  71. \setlength{\cftbeforepartskip}{0pt} 
  72. % 部条目字体:黑体 + 小五号字 
  73. \renewcommand{\cftpartfont}{\HT\zihao{5}} 
  74. % 部条目页码字体:新罗马字体 + 小五号字 + 加粗 
  75. \renewcommand{\cftpartpagefont}{\TimesNewRoman\zihao{5}\bfseries} 
  76.  
  77. % ============================================================================== 
  78. % 七、章(chapter)条目样式配置:定制“章”的字体、间距、点线 
  79. % ============================================================================== 
  80.  
  81. % 章条目点线:使用\QianDaoFu点线样式 
  82. \renewcommand{\cftchapleader}{\QianDaoFu} 
  83. % 章条目上方间距:0pt(紧凑排版) 
  84. \setlength{\cftbeforechapskip}{0pt} 
  85. % 章条目字体:黑体 + 小五号字 
  86. \renewcommand{\cftchapfont}{\HT\zihao{5}} 
  87. % 章条目页码字体:新罗马字体 + 小五号字 + 加粗 
  88. \renewcommand{\cftchappagefont}{\TimesNewRoman\zihao{5}\bfseries} 
  89.  
  90. % ============================================================================== 
  91. % 八、节(section)条目样式配置:定制“节”的字体、间距、点线、缩进 
  92. % ============================================================================== 
  93.  
  94. % 节条目点线:使用\QianDaoFu点线样式 
  95. \renewcommand{\cftsecleader}{\QianDaoFu} 
  96. % 节条目上方间距:0pt(紧凑排版) 
  97. \setlength{\cftbeforesecskip}{0pt} 
  98. % 节条目缩进:1em(相对于章条目右移1em,明确层级关系) 
  99. \setlength{\cftsecindent}{1em} 
  100. % 节条目字体:方正书宋简体(\FZSSJT为全局定义的中英文统一字体命令) + 小五号字 
  101. \renewcommand{\cftsecfont}{\FZSSJT\zihao{5}} 
  102. % 节条目页码字体:新罗马字体 + 小五号字 + 加粗 
  103. \renewcommand{\cftsecpagefont}{\TimesNewRoman\zihao{5}\bfseries} 
  104.  
  105.  
  106. % ============================================================================== 
  107. % 九、小节(subsection)条目样式配置:定制“小节”的字体、间距、点线、缩进 
  108. % ============================================================================== 
  109.  
  110. % 小节条目点线:使用\QianDaoFu点线样式 
  111. \renewcommand{\cftsubsecleader}{\QianDaoFu} 
  112. % 小节条目上方间距:0pt(紧凑排版) 
  113. \setlength{\cftbeforesubsecskip}{0pt} 
  114. % 小节条目缩进:3em(相对于节条目右移2em,明确层级关系) 
  115. \setlength{\cftsubsecindent}{3em} 
  116. % 小节条目字体:方正书宋简体(\FZSSJT为全局定义的中英文统一字体命令) + 小五号字 
  117. \renewcommand{\cftsubsecfont}{\FZSSJT\zihao{5}} 
  118. % 小节条目页码字体:新罗马字体 + 小五号字 + 加粗 
  119. \renewcommand{\cftsubsecpagefont}{\TimesNewRoman\zihao{5}\bfseries} 
  120. \setlength{\cftsubsecnumwidth}{2em} % 小节编号宽度 
  121.  
  122.  
  123.  
  124. % ============================================================================== 
  125. % 十、小小节(subsubsection)条目样式配置:定制“小小节”的字体、间距、点线、缩进 
  126. % ============================================================================== 
  127.  
  128. % 小小节条目点线:使用\QianDaoFu点线样式 
  129. \renewcommand{\cftsubsubsecleader}{\QianDaoFu} 
  130. % 小小节条目上方间距:0pt(紧凑排版) 
  131. \setlength{\cftbeforesubsubsecskip}{0pt} 
  132. % 小小节条目缩进:5em(相对于小节条目右移2em,明确层级关系) 
  133. \setlength{\cftsubsubsecindent}{5em} 
  134. % 小小节条目字体:方正书宋简体(\FZSSJT为全局定义的中英文统一字体命令) + 小五号字 
  135. \renewcommand{\cftsubsubsecfont}{\FZSSJT\zihao{5}} 
  136. % 小小节条目页码字体:新罗马字体 + 小五号字 + 加粗 
  137. \renewcommand{\cftsubsubsecpagefont}{\TimesNewRoman\zihao{5}\bfseries} 
  138. \setlength{\cftsubsubsecnumwidth}{2em} % 小小节编号宽度 

13. References.tex

  1. % ============================================================================== 
  2. % 参考文献列表间距配置:控制参考文献条目之间的垂直间距 
  3. % ============================================================================== 
  4.  
  5. % 设置参考文献条目之间的垂直间距为0pt 
  6. \setlength{\bibsep}{0pt} 
  7. % 核心说明: 
  8. % 1. \bibsep 是LaTeX控制参考文献列表条目间距的内置长度变量,默认值约6pt(存在一定空白); 
  9. % 2. 设为0pt后,参考文献条目将紧凑排列,无额外垂直冗余空白,节省页面空间; 
  10. % 3. 适配场景:教材、学术论文等需要密集排版参考文献的文档,避免因条目间距过大导致页面浪费; 
  11. % 4. 依赖说明:该设置需配合参考文献包(如gbt7714、biblatex)使用,仅控制条目间距,不改变参考文献格式(如作者、年份、标题的排版)。 

14. Floatings.tex

  1. % ============================================================================== 
  2. % 一、浮动体尺寸与缩放配置:控制图片/表格的最大尺寸,避免溢出或比例失调 
  3. % ============================================================================== 
  4.  
  5. % 图片/浮动体尺寸全局限制(使用adjustbox包,当前启用) 
  6. \adjustboxset{max totalsize={\linewidth}{0.46\textheight},keepaspectratio} 
  7. % 功能:通过adjustbox包统一控制所有浮动体(图片、表格)的最大尺寸: 
  8. % - max totalsize={宽度限制}{高度限制}:宽度不超过行宽(\linewidth),高度不超过页面高度的46% 
  9. % - keepaspectratio:强制保持宽高比,防止拉伸变形(核心参数,避免图片/表格失真) 
  10.  
  11.  
  12. % 段落间距设置:取消段落之间的默认垂直间距(\parskip=0pt) 
  13. % 目的:避免浮动体与前后段落因额外间距导致排版松散,适配教材紧凑排版需求 
  14. \setlength{\parskip}{0pt} 
  15.  
  16. % ============================================================================== 
  17. % 二、浮动体数量限制:控制单页可容纳的浮动体个数,避免页面过度拥挤 
  18. % ============================================================================== 
  19.  
  20. \setcounter{topnumber}{4}% 页面顶部最多可放置4个浮动体(如图片/表格) 
  21. \setcounter{bottomnumber}{4}% 页面底部最多可放置4个浮动体 
  22. \setcounter{totalnumber}{8}% 单页(顶部+底部)最多可容纳8个浮动体 
  23. % 说明:数量限制兼顾“排版效率”和“阅读体验”,避免单页全是浮动体或文本被过度拆分 
  24.  
  25. % ============================================================================== 
  26. % 三、浮动体占比控制:定义浮动体与文本的高度比例,优化页面布局平衡 
  27. % 注释:以下参数参考国防科技大学模板,适配正式文档排版规范 
  28. % ============================================================================== 
  29.  
  30. \renewcommand{\textfraction}{0.01}% 文本占比下限:页面中文本高度至少为版心高度的1% 
  31. % 作用:避免页面几乎全是浮动体、文本极少(保证页面核心是文本内容) 
  32.  
  33. \renewcommand{\topfraction}{0.98}% 顶部浮动体占比上限:页面顶部所有浮动体总高度不超过版心高度的98% 
  34. \renewcommand{\bottomfraction}{0.98}% 底部浮动体占比上限:页面底部所有浮动体总高度不超过版心高度的98% 
  35. % 作用:允许顶部/底部放置多个浮动体(接近满高),但预留少量空间避免溢出 
  36.  
  37. \renewcommand{\floatpagefraction}{0.8}% 纯浮动页占比下限:纯浮动体页面(无文本)中,浮动体总高度至少为版心高度的80% 
  38. % 作用:避免纯浮动页只有少量内容(如单个小图),浪费页面空间 
  39.  
  40. % ============================================================================== 
  41. % 四、浮动体间距配置:统一浮动体与文本、浮动体之间的垂直距离,保证视觉协调 
  42. % ============================================================================== 
  43.  
  44. \textfloatsep=10pt% 文本页中,顶部/底部浮动体与正文文本之间的垂直距离(10pt,紧凑不拥挤) 
  45. \floatsep=12pt% 文本页中,顶部/底部多个浮动体之间的垂直距离(12pt,区分不同浮动体) 
  46. \intextsep=5pt% 行内浮动体(如插入文本中间的图片)与上下文本的垂直距离(5pt,避免文本与浮动体粘连) 
  47. % 注释:行内浮动体的视觉间距主要靠caption的aboveskip/belowskip调整,此参数仅控制基础间距 
  48.  
  49. % ============================================================================== 
  50. % 五、浮动页(纯浮动体页面)专属配置:定义纯浮动页的内部间距与浮动体位置优先级 
  51. % ============================================================================== 
  52.  
  53. \makeatletter% 允许使用@开头的LaTeX内部命令(用于修改浮动页底层参数) 
  54.  
  55. \@fptop=2pt% 纯浮动页中,最顶部浮动体与版心顶边的距离(2pt,紧凑排版) 
  56. \@fpsep=10pt% 纯浮动页中,多个浮动体之间的垂直距离(10pt,与文本页浮动体间距逻辑一致) 
  57.  
  58.  
  59. \def\fps@figure{hbtp}% 图片浮动体(figure)的位置优先级: 
  60. % - h(here):当前位置(优先放在代码插入处) 
  61. % - b(bottom):页面底部 
  62. % - t(top):页面顶部 
  63. % - p(page):纯浮动页 
  64. % 作用:优化图片排版逻辑,优先靠近引用文本,避免图片与上下文脱节 
  65.  
  66. \makeatother% 结束内部命令使用,恢复默认语法限制 

15. FootnoteAndEndnote.tex

  1. % ============================================================================== 
  2. % 一、待办注释(todonotes)配置:控制编辑过程中“待办标记”的显示状态与样式 
  3. % 核心逻辑:通过\ifshowtodonotes布尔变量,切换待办注释的“启用/禁用” 
  4. % ============================================================================== 
  5.  
  6. \ifshowtodonotes % 判断是否启用待办注释(\showtodonotes为true时启用) 
  7. % 启用待办注释:设置样式为“非行内显示+小字体” 
  8. \setuptodonotes{ 
  9. noinline, % 待办注释不嵌入正文行内,而是单独显示在页边距或页面底部(避免干扰正文阅读) 
  10. size=\footnotesize % 待办注释字体大小:\footnotesize(小字体,不抢占正文视觉焦点) 
  11. } 
  12. \else % 未启用待办注释(默认状态) 
  13. % 禁用待办注释:非行内显示+完全隐藏(编译时不生成待办标记) 
  14. \setuptodonotes{ 
  15. noinline, % 保持非行内模式(即使禁用,样式逻辑统一) 
  16. disable % 禁用待办注释功能(所有\TODO命令不会显示在最终文档中) 
  17. } 
  18. \fi 
  19.  
  20. % ============================================================================== 
  21. % 二、尾注(endnote)配置:控制文档末尾注释的编号格式 
  22. % ============================================================================== 
  23.  
  24. % 重定义尾注编号:将默认编号格式(可能为罗马数字或其他)改为阿拉伯数字 
  25. \renewcommand{\theendnote}{\arabic{endnote}} 
  26. % 说明:尾注(\endnote命令)会在文档末尾集中显示,编号为1、2、3...,符合中文正式文档的注释编号习惯 
  27.  
  28. % ============================================================================== 
  29. % 注释:额外排版优化说明(当前未编写对应代码,仅记录需求) 
  30. % ============================================================================== 
  31.  
  32. % 由于section标题出现在浮动体(图片/表格)后面时,标题与浮动体的间距会异常(过窄或粘连) 
  33. % 此处预留注释,提示后续可添加“标题与浮动体间距调整命令”,解决该排版问题 

16. ZhangJieShi.tex

  1. % ============================================================================== 
  2. % 一、核心命令定义:\ZhangJieShi 启用传统章节式排版模式 
  3. % 核心逻辑:重定义页眉页脚、章节标题样式(篇-章-节-子节)、图表编号,适配经典教材规范 
  4. % ============================================================================== 
  5.  
  6. \newcommand{\ZhangJieShi}{ 
  7. \clearpage % 切换模式前强制换页,避免不同排版模式混淆 
  8. % ------------------------------ 
  9. % 1. 重定义页眉样式(奇偶页差异化,聚焦章节标题与页码) 
  10. % ------------------------------ 
  11. \renewcommand{\myheadings}{ 
  12. \fancyhead[OC]{% 奇数页中间 
  13. \WRYH\zihao{-5}\rightmark% 微软雅黑、小五号 + 二级标题(section名,\rightmark,如“第1节”) 
  14. } 
  15. \fancyhead[OR]{% 奇数页右边 
  16. \TimesNewRoman\zihao{-5}\bfseries\thepage% 新罗马、小五号、加粗 + 页码 
  17. } 
  18. \fancyhead[EL]{% 偶数页左边 
  19. \TimesNewRoman\zihao{-5}\bfseries\thepage% 新罗马、小五号、加粗 + 页码 
  20. } 
  21. \fancyhead[EC]{% 偶数页中间 
  22. \WRYH\zihao{-5}\leftmark% 微软雅黑、小五号 + 一级标题(chapter名,\leftmark,如“第1章”) 
  23. } 
  24. } 
  25.  
  26. % ------------------------------ 
  27. % 2. 重定义页脚样式(当前为空,页码已在页眉显示) 
  28. % ------------------------------ 
  29. \renewcommand{\myfoot}{% 
  30. % 注释:备选页脚配置(当前未启用,页眉已包含页码,页脚留白更简洁) 
  31. % \fancyfoot[OR,EL]{\TimesNewRoman\zihao{-5}\bfseries\thepage}%奇数页右边和偶数页左边的页脚 
  32. } 
  33.  
  34. % ------------------------------ 
  35. % 3. 启用自定义页眉页脚版式(myfancy) 
  36. % ------------------------------ 
  37. \fancypagestyle{myfancy}{ 
  38. \fancyhf{}% 清空默认页眉页脚 
  39. \myheadings% 应用重定义的页眉 
  40. \myfoot% 应用重定义的页脚(空) 
  41. \renewcommand{\headrulewidth}{0.4pt}% 页眉分隔线宽度:0.4pt(细实线,区分页眉与正文) 
  42. } 
  43.  
  44. % ------------------------------ 
  45. % 4. 重定义plain版式(章节首页专用) 
  46. % ------------------------------ 
  47. \fancypagestyle{plain}{% % plain版式默认用于章节首页 
  48. \fancyhf{}% 清空页眉页脚默认格式 
  49. \myfoot% 应用页脚(空) 
  50. \renewcommand{\headrulewidth}{0pt}% 章节首页隐藏页眉分隔线(避免与大标题冲突) 
  51. } 
  52. \pagestyle{myfancy} % 全局启用myfancy版式 
  53.  
  54. % ------------------------------ 
  55. % 5. 章节编号重置与标题样式(适配“篇-章-节”层级) 
  56. % ------------------------------ 
  57. \setcounter{chapter}{0} % 重置章节计数器(章节从1开始编号) 
  58. % 重定义chapter标题样式:居中 + 黑体 + 小二号 + “第X章”编号 
  59. \titleformat{\chapter}{\centering\HT\zihao{-2}}{第\chinese{chapter}章}{1em}{##1} 
  60.  
  61. % ------------------------------ 
  62. % 6. 中文章节标题全局配置(ctexset):定义8级标题的名称、编号、格式 
  63. % 层级逻辑:篇(part)→ 章(chapter)→ 节(section)→ 子节(subsection)→ 子子节(subsubsection)→ 段(paragraph)→ 子段(subparagraph) 
  64. % 完全遵循传统教材排版规范,字体、对齐、间距均符合出版要求 
  65. % ------------------------------ 
  66. \ctexset{ 
  67. % 一级标题:篇(对应part,教材分篇/模块) 
  68. part = { 
  69. name = {第,篇}, % 编号格式:第X篇 
  70. number = \chinese{part}, % 中文数字编号 
  71. aftername = \quad, % 编号后加1em空格(如“第一篇 ”) 
  72. format = \FZDBS\zihao{2} % 字体:方正大标宋、二号(符合一级标题出版规范) 
  73. }, 
  74. % 二级标题:章(对应chapter,教材核心章节) 
  75. chapter = { 
  76. name = {第,章}, % 编号格式:第X章 
  77. number = \chinese{chapter}, % 中文数字编号 
  78. aftername = \quad, % 编号后加1em空格 
  79. format = \centering\HT\zihao{-2} % 格式:居中、黑体、小二号(二级标题规范) 
  80. }, 
  81. % 三级标题:节(对应section,章下分节) 
  82. section = { 
  83. name = {第,节}, % 编号格式:第X节 
  84. number = \chinese{section}, % 中文数字编号 
  85. aftername = \quad, % 编号后加1em空格 
  86. format = \centering\KTGB\zihao{3} % 格式:居中、楷体GB2312、三号(三级标题规范) 
  87. }, 
  88. % 四级标题:子节(对应subsection,节下分子节) 
  89. subsection = { 
  90. name = {,、}, % 编号格式:X、 
  91. number = \chinese{subsection}, % 中文数字编号 
  92. aftername = {}, % 编号后无符号 
  93. format = \HT\zihao{5} % 格式:黑体、小五号(四级标题规范) 
  94. }, 
  95. % 五级标题:子子节(对应subsubsection,子节下分点) 
  96. subsubsection = { 
  97. name = {(,)}, % 编号格式:(X) 
  98. number = \chinese{subsubsection}, % 中文数字编号 
  99. aftername = {}, % 编号后无符号 
  100. format = \KTGB\zihao{5} % 格式:楷体GB2312、小五号(五级标题规范) 
  101. }, 
  102. % 六级标题:段(对应paragraph,正文内第一层次分点) 
  103. paragraph = { 
  104. name = {,.}, % 编号格式:X. 
  105. number = \arabic{paragraph}, % 阿拉伯数字编号 
  106. aftername = {}, % 编号后无符号 
  107. format = \FZSSJT\zihao{5} % 格式:方正书宋、小五号(六级标题规范) 
  108. }, 
  109. % 七级标题:子段(对应subparagraph,正文内第二层次分点) 
  110. subparagraph = { 
  111. name = {(,)}, % 编号格式:(X) 
  112. number = \arabic{subparagraph}, % 阿拉伯数字编号 
  113. format = \FZSSJT\zihao{5} % 格式:方正书宋、小五号(七级标题规范) 
  114. } 
  115. } 
  116.  
  117. % ------------------------------ 
  118. % 7. 章节标题间距配置(严格遵循出版规范,段前段后间距统一) 
  119. % ------------------------------ 
  120. \titlespacing{\chapter}{0pt}{\baselineskip}{\baselineskip} % chapter:上下各1行高间距 
  121. \titlespacing{\section}{0pt}{\baselineskip}{\baselineskip} % section:上下各1行高间距 
  122. \titlespacing{\subsection}{\parindent}{0\baselineskip}{0\baselineskip} % subsection:首行缩进、上下无间距 
  123. \titlespacing{\subsubsection}{\parindent}{0\baselineskip}{0\baselineskip} % subsubsection:同上 
  124. \titlespacing{\paragraph}{\parindent}{0pt}{0pt} % paragraph:首行缩进、上下无间距 
  125. \titlespacing{\subparagraph}{\parindent}{0pt}{0pt} % subparagraph:同上 
  126.  
  127. % ------------------------------ 
  128. % 8. 图片(figure)编号与标题样式 
  129. % ------------------------------ 
  130. % 图片编号规则:按“part-章-节-序号”或“章-节-序号”(根据FloatCountedByPart开关) 
  131. \ifFloatCountedByPart 
  132. \renewcommand{\thefigure}{\the\value{part}-\thechapter-\the\value{section}-\the\value{figure}} 
  133. \else 
  134. \renewcommand{\thefigure}{\thechapter-\the\value{section}-\the\value{figure}} 
  135. \fi 
  136. % 图片标题配置(符合出版规范): 
  137. \captionsetup[figure]{ 
  138. labelsep=quad, % 标签(图X)与标题文本间距:1em 
  139. font=FigureFont, % 字体:小五号方正书宋(FigureFont为全局定义) 
  140. position = below, % 标题在图片下方(传统教材规范) 
  141. aboveskip = 0.2\baselineskip, % 标题上方间距:0.2行高(紧凑不拥挤) 
  142. belowskip=-0.2\baselineskip % 标题下方间距:-0.2行高(抵消默认间距,避免冗余空白) 
  143. } 
  144.  
  145. % ------------------------------ 
  146. % 9. 表格(table)编号与标题样式 
  147. % ------------------------------ 
  148. % 表格编号规则:与图片一致(part-章-节-序号或章-节-序号) 
  149. \ifFloatCountedByPart 
  150. \renewcommand{\thetable}{\the\value{part}-\thechapter-\the\value{section}-\the\value{table}} 
  151. \else 
  152. \renewcommand{\thetable}{\thechapter-\the\value{section}-\the\value{table}} 
  153. \fi 
  154. % 表格标题配置(符合出版规范): 
  155. \captionsetup[table]{ 
  156. labelsep=none, % 标签与标题无间距 
  157. textformat = simple, % 标题文本格式:简单格式 
  158. format = TableFormatWD, % 标题整体格式(右对齐页码,全局定义) 
  159. font=TableFont, % 字体:小五号黑体(TableFont为全局定义) 
  160. position = above, % 标题在表格上方(传统教材规范) 
  161. aboveskip =0pt, % 标题上方间距:0pt 
  162. belowskip=0.2\baselineskip % 标题下方间距:0.2行高(与表格间距适中) 
  163. } 
  164.  
  165. % ------------------------------ 
  166. % 10. 代码块(lstlisting)编号与标题样式 
  167. % ------------------------------ 
  168. % 代码块标题配置:与表格一致(右对齐页码) 
  169. \captionsetup[lstlisting]{ 
  170. labelsep=quad, % 标签与标题间距:1em 
  171. format= LstlistingFormatWD, % 标题格式(全局定义) 
  172. font=LstlistingFont, % 字体:小五号(LstlistingFont为全局定义) 
  173. skip = 0pt % 标题上下间距:0pt 
  174. } 
  175. % 代码块编号规则:与图片/表格一致 
  176. \ifFloatCountedByPart 
  177. \renewcommand{\thelstlisting}{\the\value{part}-\thechapter-\the\value{section}-\the\value{lstlisting}} 
  178. \else 
  179. \renewcommand{\thelstlisting}{\thechapter-\the\value{section}-\the\value{lstlisting}} 
  180. \fi 
  181.  
  182. % ------------------------------ 
  183. % 11. 重定义预留功能命令:章节式模式下隐藏项目任务相关模块 
  184. % ------------------------------ 
  185. \renewcommand{\xmrws}[1]{} % 项目任务描述:空(不显示) 
  186. \renewcommand{\ProjectYiJi}[1]{} % 一级项目:空 
  187. \renewcommand{\ProjectErJi}[1]{} % 二级项目:空 
  188. \renewcommand{\TaskColorText}[1]{} % 任务彩色文本:空 
  189. \renewcommand{\LearningTarget}{} % 学习目标:空 
  190. \renewcommand{\TaskDescription}{} % 任务描述:空 
  191. \renewcommand{\TaskGuide}{} % 任务指导:空 
  192. \renewcommand{\TaskImplement}{} % 任务实践:空 
  193. \renewcommand{\EvaluationCriterion}{} % 评价标准:空 
  194. % 习题模块:保留“习题X”章节(无编号,计入目录),重置题型计数器 
  195. \renewcommand{\CourseWork}{\setcounter{tixing}{0}\section*{习题\chinese{chapter}}\addcontentsline{toc}{section}{习题\chinese{chapter}}} 
  196. \renewcommand{\ShiJianNeiRong}{} % 实践内容:空 
  197. \renewcommand{\ShiJianZhunBei}{} % 实践准备:空 
  198. \renewcommand{\ShiJianCaoZuo}{} % 实践操作:空 
  199. \renewcommand{\ZhuYiShiXiang}{} % 注意事项:空 
  200.  
  201. % ------------------------------ 
  202. % 12. 页面底部对齐优化:允许页面底部不齐(避免拉伸段落间距,提升阅读体验) 
  203. % ------------------------------ 
  204. \raggedbottom 
  205. } 

17. XiangMuRenWuShi.tex

  1. % ============================================================================== 
  2. % 一、核心命令定义:\XiangMuRenWuShi 启用项目任务式排版模式 
  3. % 核心逻辑:重定义页眉页脚、章节层级、图表编号、功能模块(学习目标/任务描述等) 
  4. % ============================================================================== 
  5.  
  6. \makeatletter % 允许使用@开头的LaTeX内部命令 
  7. \newcommand{\XiangMuRenWuShi}{ 
  8. \clearpage % 切换模式前强制换页,避免排版错乱 
  9. % ------------------------------ 
  10. % 1. 重定义页眉样式(奇偶页差异化,含logo+标题+章节名) 
  11. % ------------------------------ 
  12. \renewcommand{\myheadings}{ 
  13. \fancyhead[OL]{% 奇数页左边 
  14. {\WRYH\zihao{-5}\usebox{\mylogo}\@title}% 微软雅黑、小五号 + logo + 文档标题(\@title) 
  15. } 
  16. \fancyhead[OC]{% 奇数页中间 
  17. {}% 空白(仅左右显示内容) 
  18. } 
  19. \fancyhead[OR]{% 奇数页右边 
  20. {\WRYH\zihao{-5}\leftmark}% 微软雅黑、小五号 + 一级标题(chapter名,\leftmark) 
  21. } 
  22. \fancyhead[EL]{% 偶数页左边 
  23. {\WRYH\zihao{-5}\leftmark}% 微软雅黑、小五号 + 一级标题 
  24. } 
  25. \fancyhead[EC]{% 偶数页中间 
  26. {}% 空白 
  27. } 
  28. \fancyhead[ER]{% 偶数页右边 
  29. \WRYH\zihao{-5}\rightmark\usebox{\mylogo}% 微软雅黑、小五号 + 二级标题(section名,\rightmark)+ logo 
  30. } 
  31. } 
  32.  
  33. % ------------------------------ 
  34. % 2. 重定义页脚样式(奇偶页均显示页码) 
  35. % ------------------------------ 
  36. \renewcommand{\myfoot}{% 
  37. \fancyfoot[OR]{\TimesNewRoman\zihao{5}\bfseries\thepage}% 奇数页右边:新罗马、五号、加粗 + 页码 
  38. \fancyfoot[EL]{\TimesNewRoman\zihao{5}\bfseries\thepage}% 偶数页左边:同上(原注释重复,实际为偶数页左边) 
  39. } 
  40.  
  41. % ------------------------------ 
  42. % 3. 启用自定义页眉页脚版式(myfancy) 
  43. % ------------------------------ 
  44. \fancypagestyle{myfancy}{ 
  45. \fancyhf{}% 清空默认页眉页脚 
  46. \myheadings% 应用重定义的页眉 
  47. \myfoot% 应用重定义的页脚 
  48. \renewcommand{\headrulewidth}{0.4pt}% 页眉分隔线宽度:0.4pt(细实线) 
  49. } 
  50. \pagestyle{myfancy} % 全局启用myfancy版式 
  51.  
  52. % ------------------------------ 
  53. % 4. 章节编号重置与标题样式(适配项目任务层级) 
  54. % ------------------------------ 
  55. \setcounter{chapter}{0} % 重置章节计数器(项目从1开始编号) 
  56. % 重定义chapter标题样式:居中 + 黑体 + 小二号 + “项目X”编号 
  57. \titleformat{\chapter}{\centering\HT\zihao{-2}}{项目\chinese{chapter}}{1em}{##1} 
  58.  
  59. % ------------------------------ 
  60. % 5. 中文章节标题全局配置(ctexset):定义6级标题的名称、编号、格式 
  61. % 层级逻辑:篇(part)→ 项目(chapter)→ 任务(section)→ 子任务(subsection)→ 段(paragraph)→ 子段(subparagraph) 
  62. % ------------------------------ 
  63. \ctexset{ 
  64. % 一级标题:篇(对应part,教材分篇/模块) 
  65. part = { 
  66. name = {第,篇}, % 编号格式:第X篇 
  67. number = {\chinese{part}}, % 中文数字编号 
  68. aftername = {:}, % 编号后加冒号(如“第一篇:”) 
  69. format += \FZDBS\zihao{2}\thispagestyle{empty} % 字体:方正大标宋、二号;当前页无页眉页脚 
  70. }, 
  71. % 二级标题:项目(对应chapter) 
  72. chapter = { 
  73. name = {项目,}, % 编号格式:项目X 
  74. number = \chinese{chapter}, % 中文数字编号 
  75. aftername = \quad, % 编号后加1em空格(如“项目一 ”) 
  76. format = \centering\HT\zihao{-2} % 格式:居中、黑体、小二号 
  77. }, 
  78. % 三级标题:任务(对应section) 
  79. section = { 
  80. name = {任务,}, % 编号格式:任务X 
  81. number = {\chinese{section}}, % 中文数字编号 
  82. aftername = \quad, % 编号后加1em空格 
  83. format = \centering\KTGB\zihao{3} % 格式:居中、楷体GB2312、三号 
  84. }, 
  85. % 四级标题:子任务(对应subsection) 
  86. subsection = { 
  87. name = {,、}, % 编号格式:X、 
  88. number = \chinese{subsection}, % 中文数字编号 
  89. aftername = {}, % 编号后无符号 
  90. format = \FloatBarrier\HT\zihao{5} % 格式:强制浮动体不跨节(FloatBarrier)、黑体、小五号 
  91. }, 
  92. % 五级标题:子子任务(对应subsubsection) 
  93. subsubsection = { 
  94. name = {(,)}, % 编号格式:(X) 
  95. number = \chinese{subsubsection}, % 中文数字编号 
  96. aftername = {}, % 编号后无符号 
  97. format = \KTGB\zihao{5} % 格式:楷体GB2312、小五号 
  98. }, 
  99. % 六级标题:段(对应paragraph) 
  100. paragraph = { 
  101. name = {,.}, % 编号格式:X. 
  102. number = \arabic{paragraph}, % 阿拉伯数字编号 
  103. aftername = {}, % 编号后无符号 
  104. format = \FZSSJT\zihao{5} % 格式:方正书宋、小五号 
  105. }, 
  106. % 七级标题:子段(对应subparagraph) 
  107. subparagraph = { 
  108. name = {(,)}, % 编号格式:(X) 
  109. number = \arabic{subparagraph}, % 阿拉伯数字编号 
  110. format = \FZSSJT\zihao{5} % 格式:方正书宋、小五号 
  111. } 
  112. } 
  113.  
  114. % ------------------------------ 
  115. % 6. 章节标题间距配置(控制标题与上下文本的距离) 
  116. % ------------------------------ 
  117. \titlespacing{\chapter}{0pt}{\baselineskip}{\baselineskip} % chapter:上下各1行高间距 
  118. \titlespacing{\section}{0pt}{\baselineskip}{\baselineskip} % section:上下各1行高间距 
  119. \titlespacing{\subsection}{\parindent}{0\baselineskip}{0\baselineskip} % subsection:首行缩进、上下无间距 
  120. \titlespacing{\subsubsection}{\parindent}{0\baselineskip}{0\baselineskip} % subsubsection:同上 
  121. \titlespacing{\paragraph}{\parindent}{0pt}{0pt} % paragraph:首行缩进、上下无间距 
  122. \titlespacing{\subparagraph}{\parindent}{0pt}{0pt} % subparagraph:同上 
  123.  
  124. % ------------------------------ 
  125. % 7. 图片(figure)编号与标题样式 
  126. % ------------------------------ 
  127. % 图片编号规则:按“part-项目-任务-序号”或“项目-任务-序号”(根据FloatCountedByPart开关) 
  128. \ifFloatCountedByPart 
  129. \renewcommand{\thefigure}{\the\value{part}-\thechapter-\the\value{section}-\the\value{figure}} 
  130. \else 
  131. \renewcommand{\thefigure}{\thechapter-\the\value{section}-\the\value{figure}} 
  132. \fi 
  133. % 图片标题配置: 
  134. \captionsetup[figure]{ 
  135. labelsep=quad, % 标签(图X)与标题文本间距:1em 
  136. font=FigureFont, % 字体:小五号方正书宋(FigureFont为全局定义) 
  137. position = below, % 标题在图片下方 
  138. aboveskip = 0.2\baselineskip, % 标题上方间距:0.2行高 
  139. belowskip=-0.2\baselineskip % 标题下方间距:-0.2行高(抵消默认间距,紧凑排版) 
  140. } 
  141.  
  142. % ------------------------------ 
  143. % 8. 表格(table)编号与标题样式 
  144. % ------------------------------ 
  145. % 表格编号规则:与图片一致(part-项目-任务-序号或项目-任务-序号) 
  146. \ifFloatCountedByPart 
  147. \renewcommand{\thetable}{\the\value{part}-\thechapter-\the\value{section}-\the\value{table}} 
  148. \else 
  149. \renewcommand{\thetable}{\thechapter-\the\value{section}-\the\value{table}} 
  150. \fi 
  151. % 表格标题配置: 
  152. \captionsetup[table]{ 
  153. labelsep=none, % 标签与标题无间距 
  154. textformat = simple, % 标题文本格式:简单格式 
  155. format = TableFormatWD, % 标题整体格式(右对齐页码,全局定义) 
  156. font=TableFont, % 字体:小五号黑体(TableFont为全局定义) 
  157. position = above, % 标题在表格上方 
  158. aboveskip =0pt, % 标题上方间距:0pt 
  159. belowskip=0.2\baselineskip % 标题下方间距:0.2行高(与表格间距适中) 
  160. } 
  161.  
  162. % ------------------------------ 
  163. % 9. 代码块(lstlisting)编号与标题样式 
  164. % ------------------------------ 
  165. % 代码块标题配置:与表格一致(右对齐页码) 
  166. \captionsetup[lstlisting]{ 
  167. labelsep=quad, % 标签与标题间距:1em 
  168. format= LstlistingFormatWD, % 标题格式(全局定义) 
  169. font=LstlistingFont, % 字体:小五号(LstlistingFont为全局定义) 
  170. skip = 0pt % 标题上下间距:0pt 
  171. } 
  172. % 代码块编号规则:与图片/表格一致 
  173. \ifFloatCountedByPart 
  174. \renewcommand{\thelstlisting}{\the\value{part}-\thechapter-\the\value{section}-\the\value{lstlisting}} 
  175. \else 
  176. \renewcommand{\thelstlisting}{\thechapter-\the\value{section}-\the\value{lstlisting}} 
  177. \fi 
  178.  
  179. % ------------------------------ 
  180. % 10. 重定义预留功能命令:实现项目任务核心模块样式(带图标+彩色边框) 
  181. % ------------------------------ 
  182. \renewcommand{\xmrws}[1]{##1} % 项目任务描述:直接输出内容(无额外样式) 
  183.  
  184. % 重新定义核心颜色(与通用配置一致,确保风格统一) 
  185. \definecolor{TextBlue}{RGB}{54,95,145} % 文本蓝 
  186. \definecolor{SubsectionColor}{RGB}{58,93,138} % 小节标题蓝 
  187.  
  188. % 定义tikz绘图样式(用于模块标题框) 
  189. \tikzstyle{node 1} = [xshift = -4em,inner sep = 0pt] % 图标节点:左移4em,无内边距 
  190. \tikzstyle{node 2} = [draw=SubsectionColor,line width=3pt,trapezium,trapezium left angle=120,fill=white,font=\color{SubsectionColor},right =0cm of LearningTarget.east] 
  191. % 模块标题框样式:蓝色边框(3pt)、梯形(左角120°)、白色填充、蓝色字体、紧贴图标右侧 
  192. \tikzstyle{draw 1} = [color=SubsectionColor,line width=3pt] % 下划线样式1:蓝色粗线 
  193. \tikzstyle{draw 2} = [color=SubsectionColor,line width=3pt] % 下划线样式2:蓝色粗线 
  194.  
  195. % (1)一级项目标题:三号字、加粗、上下0.2行高间距 
  196. \renewcommand{\ProjectYiJi}[1]{\par{\zihao{3}\vspace{0.2\baselineskip}\noindent\textbf{##1}\vspace{0.2\baselineskip}\par}} 
  197. % (2)二级项目标题:蓝色、微软雅黑、加粗 
  198. \renewcommand{\ProjectErJi}[1]{\par{\textcolor{TextBlue}{\WRZHT\textbf{##1}}\par}} 
  199. % (3)任务彩色文本:蓝色、加粗 
  200. \renewcommand{\TaskColorText}[1]{\par\textcolor{TextBlue}{\textbf{##1}}\par} 
  201.  
  202. % (4)学习目标模块:带图标+蓝色梯形标题框+下划线 
  203. \renewcommand{\LearningTarget}{ 
  204. \noindent 
  205. \begin{minipage}{\linewidth} % 固定宽度为行宽 
  206. \vspace*{0.5\baselineskip} % 上方间距0.5行高 
  207. \begin{tikzpicture} 
  208. % 插入学习目标图标(宽度7%行宽) 
  209. \node[node 1](LearningTarget){\includegraphics[width=0.07\linewidth]{template/Logo/Logo-LearningTarget}}; 
  210. % 梯形标题框:方正书宋、加粗、“学习目标” 
  211. \node[node 2](SubsectionText){\CJKfamily{FZSSJTzh}\textbf{\quad \ziju{1}学习目标}}; 
  212. % 绘制下划线(从标题框左下角延伸至页面右侧) 
  213. \draw[draw 1] (SubsectionText.bottom left corner)--([xshift=\linewidth]LearningTarget.south west|-SubsectionText.bottom left corner); 
  214. % 绘制标题框下方短横线(居中) 
  215. \draw[draw 2] ([yshift=-1pt,xshift=-1em]SubsectionText.south)--([yshift=-1pt,xshift=1em]SubsectionText.south); 
  216. \end{tikzpicture}% 
  217. \vspace*{0.5\baselineskip} % 下方间距0.5行高 
  218. \end{minipage} 
  219. \par 
  220. } 
  221.  
  222. % (5)任务描述模块:与学习目标样式一致,仅图标和文本不同 
  223. \renewcommand{\TaskDescription}{ 
  224. \noindent 
  225. \begin{minipage}{\linewidth} 
  226. \vspace*{0.5\baselineskip} 
  227. \begin{tikzpicture} 
  228. \node[node 1](LearningTarget){\includegraphics[width=0.07\linewidth]{template/Logo/Logo-TaskDescription}}; 
  229. \node[node 2](SubsectionText){\CJKfamily{FZSSJTzh}\textbf{\quad \ziju{1}任务描述}}; 
  230. \draw[draw 1] (SubsectionText.bottom left corner)--([xshift=\linewidth]LearningTarget.south west|-SubsectionText.bottom left corner); 
  231. \draw[draw 2] ([yshift=-1pt,xshift=-1em]SubsectionText.south)--([yshift=-1pt,xshift=1em]SubsectionText.south); 
  232. \end{tikzpicture}% 
  233. \vspace*{0.5\baselineskip} 
  234. \end{minipage} 
  235. \par 
  236. } 
  237.  
  238. % (6)任务指导模块:带FloatBarrier(强制浮动体不跨节),其余与上述一致 
  239. \renewcommand{\TaskGuide}{ 
  240. \FloatBarrier 
  241. \noindent 
  242. \begin{minipage}{\linewidth} 
  243. \vspace*{0.5\baselineskip} 
  244. \begin{tikzpicture} 
  245. \node[node 1](LearningTarget){\includegraphics[width=0.07\linewidth]{template/Logo/Logo-TaskGuide}}; 
  246. \node[node 2](SubsectionText){\CJKfamily{FZSSJTzh}\textbf{\quad \ziju{1}任务指导}}; 
  247. \draw[draw 1] (SubsectionText.bottom left corner)--([xshift=\linewidth]LearningTarget.south west|-SubsectionText.bottom left corner); 
  248. \draw[draw 2] ([yshift=-1pt,xshift=-1em]SubsectionText.south)--([yshift=-1pt,xshift=1em]SubsectionText.south); 
  249. \end{tikzpicture}% 
  250. \vspace*{0.5\baselineskip} 
  251. \end{minipage} 
  252. \par 
  253. } 
  254.  
  255. % (7)任务实践模块:与任务指导样式一致 
  256. \renewcommand{\TaskImplement}{ 
  257. \FloatBarrier 
  258. \noindent 
  259. \begin{minipage}{\linewidth} 
  260. \vspace*{0.5\baselineskip} 
  261. \begin{tikzpicture} 
  262. \node[node 1](LearningTarget){\includegraphics[width=0.07\linewidth]{template/Logo/Logo-TaskImplement}}; 
  263. \node[node 2](SubsectionText){\CJKfamily{FZSSJTzh}\textbf{\quad \ziju{1}任务实践}}; 
  264. \draw[draw 1] (SubsectionText.bottom left corner)--([xshift=\linewidth]LearningTarget.south west|-SubsectionText.bottom left corner); 
  265. \draw[draw 2] ([yshift=-1pt,xshift=-1em]SubsectionText.south)--([yshift=-1pt,xshift=1em]SubsectionText.south); 
  266. \end{tikzpicture}% 
  267. \vspace*{0.5\baselineskip} 
  268. \end{minipage} 
  269. \par 
  270. } 
  271.  
  272. % (8)评价标准模块:与学习目标样式一致 
  273. \renewcommand{\EvaluationCriterion}{ 
  274. \noindent 
  275. \begin{minipage}{\linewidth} 
  276. \vspace*{0.5\baselineskip} 
  277. \begin{tikzpicture} 
  278. \node[node 1](LearningTarget){\includegraphics[width=0.07\linewidth]{template/Logo/Logo-EvaluationCriterion}}; 
  279. \node[node 2](SubsectionText){\CJKfamily{FZSSJTzh}\textbf{\quad \ziju{1}评价标准}}; 
  280. \draw[draw 1] (SubsectionText.bottom left corner)--([xshift=\linewidth]LearningTarget.south west|-SubsectionText.bottom left corner); 
  281. \draw[draw 2] ([yshift=-1pt,xshift=-1em]SubsectionText.south)--([yshift=-1pt,xshift=1em]SubsectionText.south); 
  282. \end{tikzpicture}% 
  283. \vspace*{0.5\baselineskip} 
  284. \end{minipage} 
  285. \par 
  286. } 
  287.  
  288. % (9)习题模块:重置题型计数器,添加“习题X”章节(无编号,计入目录) 
  289. \renewcommand{\CourseWork}{\setcounter{tixing}{0}\section*{习题\chinese{chapter}}\addcontentsline{toc}{section}{习题\chinese{chapter}}} 
  290.  
  291. % (10)实践内容模块:带图标+蓝色文本 
  292. \renewcommand{\ShiJianNeiRong}{ 
  293. \FloatBarrier 
  294. \noindent 
  295. \hbox{\raisebox{-0.6cm+0.5\baselineskip}{\includegraphics[totalheight=1cm]{template/Logo/Logo-实践内容}}\TaskColorText{实践内容:}} 
  296. \par 
  297. } 
  298.  
  299. % (11)实践准备模块:与实践内容样式一致 
  300. \renewcommand{\ShiJianZhunBei}{ 
  301. \FloatBarrier 
  302. \noindent 
  303. \hbox{\raisebox{-0.6cm+0.5\baselineskip}{\includegraphics[totalheight=1cm]{template/Logo/Logo-实践准备}}\TaskColorText{实践准备:}} 
  304. \par 
  305. } 
  306.  
  307. % (12)实践操作模块:与实践内容样式一致 
  308. \renewcommand{\ShiJianCaoZuo}{ 
  309. \FloatBarrier 
  310. \noindent 
  311. \hbox{\raisebox{-0.6cm+0.5\baselineskip}{\includegraphics[totalheight=1cm]{template/Logo/Logo-实践操作}}\TaskColorText{实践操作:}} 
  312. \par 
  313. } 
  314.  
  315. % (13)注意事项模块:与实践内容样式一致 
  316. \renewcommand{\ZhuYiShiXiang}{ 
  317. \FloatBarrier 
  318. \noindent 
  319. \hbox{\raisebox{-0.6cm+0.5\baselineskip}{\includegraphics[totalheight=1cm]{template/Logo/Logo-注意事项}}\TaskColorText{注意事项:}} 
  320. \par 
  321. } 
  322.  
  323. % ------------------------------ 
  324. % 11. 页面底部对齐优化:允许页面底部不齐(避免拉伸段落间距) 
  325. % ------------------------------ 
  326. \raggedbottom 
  327. } %"项目任务式" 
  328. \makeatother % 结束内部命令使用 

四、使用方法

以下演示了如何使用上述内容。

1. 主文档

  1. \special{dvipdfmx:config z 0}%用于关闭压缩,加快编译速度,当生成最终版时应注释掉这句 
  2. \documentclass[openany,twoside]{WonderTextBook} 
  3. \title{教材编写模板} 
  4. \subtitle{教材子标题} 
  5. \JiaoCaiXiLie{XX教材系列} 
  6. \BiaoJi{0001}{000002} 
  7. \PublishDate{2024}{10} 
  8. \ZhuBian{张\quad 三} 
  9. \CanBian{张\quad 三}{李\quad 四}{李\quad 五}{李\quad 六}{李七七}{}{}{} 
  10. \ZhuShen{李\quad 八} 
  11. \JiaoDui{李\quad 九} 
  12. \DanWei{作者单位} 
  13. \begin{document} 
  14. \OuterCoverpage 
  15. \InnerCoverpage 
  16. \input{doc/前言} 
  17.  
  18. \frontmatter 
  19. \tableofcontents 
  20. \mainmatter 
  21. \ZhangJieShi 
  22. \input{doc/操作系统环境准备} 
  23. \XiangMuRenWuShi 
  24. \input{doc/项目任务式} 
  25. \addcontentsline{toc}{chapter}{参考文献} 
  26. \bibliographystyle{gbt7714-numerical} 
  27. \bibliography{Wonder.bib} 
  28. \end{document} 

2. doc/前言.tex

  1. \Preface{ 
  2. 前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言。 
  3.  
  4.  
  5. 前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言。 
  6.  
  7. 前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言前言。 
  8. }{编者} 

3. doc/操作系统环境准备.tex

  1. \chapter{操作系统环境准备} 
  2. \section{规划准备} 
  3. \subsection{系统规划} 
  4. 使用两节点,一个叫做控制节点,一个叫做计算节点。两节点的配置信息见表\ref{tab:基础环境准备-节点规划}。 
  5. \begin{longtable}{M{\centering}{0.2\linewidth}|M{\centering}{0.4\linewidth}|M{\centering}{0.4\linewidth}} 
  6. \caption{节点规划}\label{tab:基础环境准备-节点规划}\\ 
  7. \toprule 
  8. \textbf{选项} & \Centering\textbf{控制节点} & \Centering\textbf{计算节点}\\ 
  9. \toprule 
  10. \endfirsthead 
  11. \multicolumn{3}{r}{表\ref{tab:基础环境准备-节点规划}(续)}\\ 
  12. \toprule 
  13. \textbf{选项} & \Centering\textbf{控制节点} & \Centering\textbf{计算节点}\\ 
  14. \toprule 
  15. \endhead 
  16. \multicolumn{3}{r}{接下页}\\ 
  17. \endfoot 
  18. \endlastfoot 
  19. 硬盘 & 至少50G,一块 & 两块硬盘,一块50G用于装系统,一块20G用于做存储(可等到安装Cinder服务时再添加)\\ 
  20. \midrule 
  21. 内存 & 至少4G & 至少4G\\ 
  22. \midrule 
  23. CPU核心数 & 不少于2 & 不少于2\\ 
  24. \midrule 
  25. CPU特性 & 勾选\yinyong{虚拟化Intel VT-x/EPT或AMD-V/RVI(V)}功能 & 勾选\yinyong{虚拟化Intel VT-x/EPT或AMD-V/RVI(V)}功能\\ 
  26. \midrule 
  27. 网络模式 & NAT & NAT\\ 
  28. \midrule 
  29. IP & 192.168.1.100 & 192.168.1.200\\ 
  30. \midrule 
  31. 系统内的主机名 & kongzhi & jisuan\\ 
  32. \midrule 
  33. 根用户信息 & 用户名:root;密码:123456 & 用户名:root;密码:123456\\ 
  34. \midrule 
  35. 普通用户信息 & 用户名:user01;密码:111111 & 用户名:user01;密码:111111\\ 
  36. \bottomrule 
  37. \end{longtable} 
  38.  
  39. 每个节点所需要配置的组件见表\ref{tab:基础环境准备-各节点所部署的组件}。 
  40.  
  41. \begin{longtable}{M{\centering}{0.3\linewidth}|M{\centering}{0.7\linewidth}} 
  42. \caption{各节点所部署的组件}\label{tab:基础环境准备-各节点所部署的组件}\\ 
  43. \toprule 
  44. \textbf{节点} & \Centering\textbf{组件}\\ 
  45. \toprule 
  46. \endfirsthead 
  47. \multicolumn{2}{r}{表\ref{tab:基础环境准备-各节点所部署的组件}(续)}\\ 
  48. \toprule 
  49. \textbf{节点} & \Centering\textbf{组件}\\ 
  50. \toprule 
  51. \endhead 
  52. \multicolumn{2}{r}{接下页}\\ 
  53. \endfoot 
  54. \endlastfoot 
  55. 控制节点 & keystone、Glance、Nova、Neutron、Cinder、Dashboard\\ 
  56. \midrule 
  57. 计算节点 & Nova、Neutron、Cinder\\ 
  58. \bottomrule 
  59. \end{longtable} 
  60.  
  61. 为方便起见,除了操作系统本身之外,OpenStak所有需要的密码都设置为000000。 
  62. \subsection{软件} 
  63. \subsubsection{工具} 
  64. \begin{itemize} 
  65. \item VMware用于创建虚拟机。 
  66. \item 使用winscp从Windows主机向CentOS虚拟机传送文件。 
  67. \item 使用xshell连接虚拟机,便于复制粘贴等操作。 
  68. \item 内网通用于文件共享分发。 
  69. \end{itemize} 
  70. \subsubsection{镜像} 
  71. \begin{itemize} 
  72. \item \yinyong{CentOS-7-x86\_64-Minimal-2009.iso}:用于创建虚拟机,以及在OpenStack中创建镜像。 
  73. \item \yinyong{cirros.img}:一个测试用镜像,测试OpenStack功能。 
  74. \end{itemize} 
  75. \subsubsection{安装包} 
  76. \begin{itemize} 
  77. \item \yinyong{OpenStackKongZhiRPMS-Train.tar.gz}:控制节点的离线软件包。这个包跟CentOS系统的版本有较高的绑定关系,如果安装虚拟机系统时所使用的不是上面提到的镜像,那么有可能存在匹配问题导致安装失败。 
  78. \item \yinyong{OpenStackJiSuanRPMS-Train.tar.gz}:控制节点的离线软件包。这个包跟CentOS系统的版本有较高的绑定关系,如果安装虚拟机系统时所使用的不是上面提到的镜像,那么有可能存在匹配问题导致安装失败。 
  79. \end{itemize} 
  80.  
  81. \section{虚拟机实现远程登录} 
  82. \subsection{创建虚拟机前的准备} 
  83. 创建虚拟机之前,要保证VMware软件的各个虚拟网卡正常工作,尤其是NAT网络正常工作。建议采取的方法是:在VMware的\yinyong{虚拟网络编辑器}界面,点击\yinyong{还原默认设置},对已有的网络进行初始化。初始化完成之后,给NAT网络设置子网为192.168.1.0网段,具体来说就是在\yinyong{子网IP(I)}后面的框中输入\yinyong{192.168.1.0},然后依次点击\yinyong{应用}、\yinyong{确定}完成设置。 
  84.  
  85. 另外,还需要保证硬盘有足够的空间存放两个50G以上的虚拟机,所以要清理准备一个有100G以上空间的分区。注意,一定不要使用C盘。 
  86.  
  87. \subsection{安装虚拟机} 
  88. 按照表\ref{tab:基础环境准备-节点规划}中的规划,使用 \yinyong{CentOS-7-x86\_64-Minimal-2009.iso}镜像安装两个虚拟机,一个命名为\yinyong{控制节点},一个命名为\yinyong{计算节点}。 
  89.  
  90. \subsection{控制节点实现ssh远程登录} 
  91. \subsubsection{编辑网卡配置文件} 
  92. 虚拟机启动后,使用\yinyong{root}用户登录系统,然后使用如下命令打开网卡的配置文件,进行编辑。网卡的名字是\yinyong{ens33},不同的机器可能不同,应当以实际文件名为准。 
  93. \begin{lstlisting} 
  94. vi /etc/sysconfig/network-scripts/ifcfg-ens33 
  95. \end{lstlisting} 
  96.  
  97. 编辑的内容包括: 
  98. \begin{itemize} 
  99. \item\lstinline|BOOTPROTO=dhcp|修改为\lstinline|BOOTPROTO=static|。 
  100. \item\lstinline|ONBOOT=no|修改为\lstinline|ONBOOT=yes|。 
  101. \item 在文件的最后添加如下2行: 
  102. \begin{lstlisting} 
  103. IPADDR=192.168.1.100 
  104. PREFIX=24 
  105. \end{lstlisting} 
  106. \end{itemize} 
  107. \subsubsection{重启网络服务并测试} 
  108. 使用\lstinline|systemctl restart network|命令,重启网络服务,使用\lstinline|ip address show|命令查看IP地址。可以看到,网卡ens33的IP地址为192.168.1.100。 
  109.  
  110. 在Windows中,可以ping通192.168.1.100,使用xshell和winscp也都能正常连接到192.168.1.100。表明配置成功。 
  111.  
  112. 测试成功后,关闭虚拟机,保存一个快照。 
  113.  
  114.  
  115. \subsection{计算节点实现ssh远程登录} 
  116. \subsubsection{编辑网卡配置文件} 
  117. 虚拟机启动后,使用\yinyong{root}用户登录系统,然后使用如下命令打开网卡的配置文件,进行编辑。网卡的名字是\yinyong{ens33},不同的机器可能不同,应当以实际文件名为准。 
  118. \begin{lstlisting} 
  119. vi /etc/sysconfig/network-scripts/ifcfg-ens33 
  120. \end{lstlisting} 
  121.  
  122. 编辑的内容包括: 
  123. \begin{itemize} 
  124. \item\lstinline|BOOTPROTO=dhcp|修改为\lstinline|BOOTPROTO=static|。 
  125. \item\lstinline|ONBOOT=no|修改为\lstinline|ONBOOT=yes|。 
  126. \item 在文件的最后添加如下2行: 
  127. \begin{lstlisting} 
  128. IPADDR=192.168.1.200 
  129. PREFIX=24 
  130. \end{lstlisting} 
  131. \end{itemize} 
  132. \subsubsection{重启网络服务并测试} 
  133. 使用\lstinline|systemctl restart network|命令,重启网络服务,使用\lstinline|ip address show|命令查看IP地址。可以看到,网卡ens33的IP地址为192.168.1.200。 
  134.  
  135. 在Windows中,可以ping通192.168.1.200,使用xshell和winscp也都能正常连接到192.168.1.200。表明配置成功。 
  136.  
  137. 测试成功后,关闭虚拟机,保存一个快照。 
  138.  
  139.  
  140. 以下省略部分内容 

4. doc/项目任务式.tex

  1. \chapter{文文文文文文文文文文} 
  2. %\setcounter{page}{99999} 
  3. \ProjectYiJi{文文文文} 
  4. 文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文。 
  5.  
  6. 文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文。文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文。文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文。 
  7. \ProjectYiJi{文文文文} 
  8. \ProjectErJi{文文文文} 
  9.  
  10. \begin{enumerate} 
  11. \item 文文文文文文文文文文文文文文文文文文文文。 
  12. \item 文文文文文文文文文文文文文文文文文文文文。 
  13. \end{enumerate} 
  14.  
  15. \ProjectErJi{文文文文} 
  16.  
  17. \begin{enumerate} 
  18. \item 文文文文文文文文文文文文文文文文文文文文。 
  19. \item 文文文文文文文文文文文文文文文文文文文文。 
  20. \item 文文文文文文文文文文文文文文文文文文文文。 
  21. \end{enumerate} 
  22.  
  23. \section{文文文文文文文文} 
  24. \LearningTarget 
  25. \TaskColorText{文文文文:} 
  26.  
  27. \begin{enumerate} 
  28. \item 文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文; 
  29. \item 文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文; 
  30. \item 文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文。 
  31. \end{enumerate} 
  32.  
  33. \TaskColorText{文文文文:} 
  34.  
  35. \begin{enumerate} 
  36. \item 文文文文文文文文 
  37. \item 文文文文文文文文 
  38. \item 文文文文文文文文、文文文文文文文文。 
  39. \end{enumerate} 
  40.  
  41.  
  42. \TaskDescription 
  43. 文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文文 
  44.  
  45. \TaskGuide 
  46. \subsection{文文文文文文文文} 
  47. 文文文文文文文文文文\ref{fig:文文文文}文文。 
  48.  
  49. \begin{figure}[h] 
  50. \centering 
  51. \includegraphics{fig/文文文文} 
  52. \caption{文文文文} 
  53. \label{fig:文文文文} 
  54. \end{figure} 
  55.  
  56.  
  57. \subsubsection{文文文文文文文文} 
  58. 文文文文文文文文: 
  59.  
  60. \begin{enumerate} 
  61. \item 文文文,文文文文文文文文文文,文文文文文文文文文文。 
  62. \item 文文文,文文文文文文文文文文文文。 
  63. \item 文文文文文文文文,文文文文文文文文文。 
  64. \item 文文文文文文文文、、、,文文文文文文文文文。 
  65. \item 文文文文文文文文、、、,文文文文文文文,文文文文文文文文文。 
  66. \end{enumerate} 
  67.  
  68. \subsubsection{文文文文文文文文} 
  69. 文文文文文文文文文文文文文文文文文文文文文,文文文文文文文文文文文文文文。文文文文: 
  70.  
  71. \begin{enumerate} 
  72. \item 文文文,文文文文文文文文文文。 
  73.  
  74. \item 文文文文文文文 
  75.  
  76. 文文文文文文文文文文文文,文文文文文文文文,文文文文文文文文文文。文文文文文文,文文文文文文文文文文文;文文文文文文文文,文文文文文文文文。文文文文文文文文文,文文文文文文文文文;文文文文文文文文文,文文文文文文文文文文;文文文文文文文文文文,文文文文文文文文文文。 
  77.  
  78. 文文文文文文文文文文文,文文文文文文文文文文文文文文文文文文,文文文文文文文文文文文文文文。 
  79.  
  80. \item 文文文 
  81.  
  82. 文文文文文文。文文文文文文文文文文文文文,文文文,文文文文文文文,文文文文。 
  83.  
  84. 文文文文文文,文文文文文文文文文文,文文文文文文文文文文文文文。文文文文文文,文文文文文文,文文文文文文文文文文文文文文文文文文文文,文文文文文文文文文文。 
  85. \end{enumerate} 
  86.  
  87. \TaskImplement 
  88. \ShiJianNeiRong 
  89. 文文文文文文,文文文文文文文文文文文文文文文文,文文文文文文文文文文文,文文文文文文文文文文文文文文文文文文文文文文文。 
  90. \ShiJianZhunBei 
  91.  
  92. \begin{enumerate} 
  93. \item 文文文文文文文文文; 
  94. \item 文文Windows 文文文文文文文文文文; 
  95. \item 文文文文文文文文; 
  96. \item 文文文文文文文文文文文文; 
  97. \item 文文文文文文文; 
  98. \item 文文文文文文。 
  99. \end{enumerate} 
  100.  
  101. \ShiJianCaoZuo 
  102.  
  103. \begin{enumerate} 
  104. \item 文文文文文; 
  105. \item 文文文文文; 
  106. \item 文文文文文文文文文文文; 
  107. \item 文文文文文文文文文文; 
  108. \item 文文文文文文文文文。 
  109. \end{enumerate} 
  110.  
  111. \EvaluationCriterion 
  112.  
  113. \begin{table}[h] 
  114. \centering 
  115. \caption{文文文文文文文文文文文文文文文文文} 
  116. \label{tab:文文文文文文文文文文文文-文文文文文文文文文文文文文文文文文} 
  117. \begin{tabularx}{\linewidth}{C|C|X|X} 
  118. \hline 
  119. 文文文文 & 文文 & \Centering 文文文文 & \Centering 文文文文\\ 
  120. \hline 
  121. 文文文文 & 50 & 文文文文文文文\newline 文文文文文\newline 文文文文文文文文文文文\newline 文文文文文文文文文文\newline 文文文文文文文文文 & 文文文、文文文文、文文文文文文文文文文文文,文文文文\newline 文文文文文文,文文\newline 文文文文文文文文文文,文文\newline 文文文文文文文文文文文文,文文\newline 文文文文文文文文文文文文,文文\\ 
  122. \hline 
  123. 文文文文 & 30 & 文文文文文文文文\newline 文文文文文文文文\newline 文文文文文文文文\newline 文文文文文文文文 & 文文文文文文文文文,文文文文\newline 文文文文文文文文文,文文\newline 文文文文文文文文文,文文文文\newline 文文文文文文文,文文\\ 
  124. \hline 
  125. 文文文文 & 10 & 文文文文文文文文\newline 文文文文文文\newline 文文文文文文文文文文文文 & 文文文文文文文文,文文文文\newline 文文文文文,文文文文文文,文文,文文文文文文文文文文文文\newline 文文文文文文文文,文文文文\\ 
  126. \hline 
  127. 文文文文 & 10 & 文文文文文文文文 & 文文文文文文文,文文文文\\ 
  128. \hline 
  129. \end{tabularx} 
  130. \end{table} 
  131.  
  132.  
  133. \CourseWork 
  134. \TiXing{文文文} 
  135.  
  136. \begin{enumerate} 
  137. \item 文文文文文文文文文文文文文文文文文文文文( )。 
  138. \item 文文文文文文文文文文文文文\tk{( )}、( )、\tk{( )}、\tk{( )}文文文文文文文文文文文文文文。 
  139. \item 文文文\tk{( )}文文文文文文文文文文文文文,文文文文文文文文文文文文文文文文文文文,文文文文文文文文文文文文文文文文。 
  140. \item \tk{( )}文文文文文文文文文文文文文文文文文文文,文文文文文文文文文文文 文文文文,文文文文,文文文文文文文文文文文文文文文文文文文文。 
  141. \item 文文文文文文\tk{( )}文\tk{( )}文文,文文文文文文文文文文文文文,文文文文文文文文文文文文文文文文。 
  142. \item 文文文文文文文文文,文文文文文文文文文文文文文文文文文文,文文文\tk{( )}文文,文文文文文文文文文文文文 文文文文 
  143. \end{enumerate} 
  144.  
  145. \TiXing{文文文} 
  146.  
  147. \begin{enumerate} 
  148. \item 文文文文文文文文文文文文文文文文文\tk{( )}\xz{文文 }{文文}{文文文}{文文文文文} 
  149. \item 文文文文文文文文文文文文文文文文文\tk{( )}\xz{文文 }{文文}{文文文}{文文文文文} 
  150. \item 文文文文文文,文文文文文文文文\tk{( )}\xz{文文文文}{文文文}{文文文文}{文文文文文文} 
  151. \item 文文文文文文文\tk{( )}文文文文文文文文文\xz{文文文文}{文文文文}{文文}{文文} 
  152. \item 文文文文文文文文文文文文文文文文文文文文\tk{( )}\xz{192.168.1.254 192.168.1.1}{192.168.1.254 192.168.1.200}{192.168.1.1 192.168.1.100}{192.168.1.254 192.168.1.200} 
  153. \end{enumerate} 
  154.  
  155. \TiXing{文文文} 
  156.  
  157. \begin{enumerate} 
  158. \item 文文文文文文文文文文文? 
  159. \end{enumerate} 

五、效果

部分页面效果如下:
enter description here

 

enter description here
enter description here

enter description here

 

 

enter description here
enter description here

 

 

enter description here
enter description here

 

 

enter description here
enter description here

 

 

enter description here
enter description here

 

 

enter description here
enter description here

 

 

enter description here
enter description here

 

 

enter description here
enter description here

enter description here

 

 

enter description here
enter description here

 

 

enter description here
enter description here

 

posted @ 2025-12-17 12:25  南宫二狗  阅读(13)  评论(0)    收藏  举报