尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

南京大学毕业论文 LaTeX 模板 NJUThesis:dtx 单源文件与 l3build 开发工作流完整指南

南京大学毕业论文 LaTeX 模板 NJUThesis:dtx 单源文件与 l3build 开发工作流完整指南 南京大学毕业论文 LaTeX 模板 NJUThesisdtx 单源文件与 l3build 开发工作流完整指南【免费下载链接】NJUThesis南京大学学位论文模板项目地址: https://gitcode.com/gh_mirrors/nj/NJUThesis如果你打开 NJUThesis 仓库最引人注目的事实是整个南京大学学位论文 LaTeX 模板连同它的用户手册全部写在一个约 9500 行的 dtx 单源文件里。为什么代码和文档能合体docstrip 和 l3build 在其中各扮演什么角色本文用最小代码量讲清楚这条开发工作流帮你彻底看懂 NJUThesis 的构建机制。一分钟认识 NJUThesisNJUThesis 是制作南京大学本科毕业论文、硕士/博士学位论文、博士后出站报告的 LaTeX 文档类。它基于本科生院论文撰写规范用 LaTeX3 语法实现了清晰的实现逻辑与友好的用户接口键值配置命令\njusetup。普通用户和开发者的路径完全不同角色你需要的东西入口 写论文的学生用户包 zip / 南大在线 TeX 平台template/njuthesis-sample.tex 模板维护者源码仓库 TeX Live 开发环境source/njuthesis.dtx仓库目录分工一目了然source/— 模板的 dtx 源码、用户手册源码和校徽校名 PDF 资源仅开发者使用template/— 官方空白模板与示例参考文献test/— 回归测试与编译测试scripts/— 依赖分析、打包辅助脚本。⚠️ 新手最容易踩的坑仓库里没有njuthesis.cls这个文件。它是由 dtx 生成的产物不是手写的。dtx 单源文件之谜代码与手册如何合体所谓dtx 单源Documentation/TeX eXtension是一个把程序实现和用户文档写进同一份文件的体系。打开 source/njuthesis.dtx你会看到它身兼两职对 XeLaTeX 来说它是用户手册的源文件直接编译得到 PDF 文档对 docstrip 来说它是一部带标签的零件库按 guard 标签提取出真正的类代码。dtx 文件开头的docstrip配置块位于%*install区段就是谜题的答案——它声明了哪些文件从哪些标签提取\generate{ \usedir{tex/latex/njuthesis} \file{\jobname.cls} {\from{\jobname.dtx}{class}} \file{\jobname-undergraduate.def} {\from{\jobname.dtx}{def-u}} \file{\jobname-graduate.def} {\from{\jobname.dtx}{def-g}} ... }也就是说njuthesis.cls主文档类、njuthesis-undergraduate.def本科版式、njuthesis-graduate.def研究生版式、njuthesis-postdoctoral.def博士后版式以及手册文档类njuthesis-doc.cls全部从同一个 dtx 文件的不同 guard 标签中切出来。这种设计的好处对新手很直观文档与实现永不失同步——解释某段代码的文字就贴在代码旁边改行为只需改一处——项目规范明确要求修改行为必须从 dtx 入手不得直接编辑生成文件见 llmdoc/reference/coding-conventions.md一个版本对应一套文件——类代码、三个论文类型的 def 定义文件、手册天然保持一致。代价是编辑门槛较高dtx 里的代码块被\begin{macrocode}...\end{macrocode}和环境标签包裹误删标签就会破坏提取。项目在编码约定中甚至专门总结了编辑 guard 前先定位完整范围、优先整块替换的纪律见 llmdoc/guides/common-development-tasks.md。开发工作流l3build 如何驱动 dtx单源文件的拆分和装配由l3buildLaTeX3 官方的构建工具自动完成。仓库根目录的 build.lua 是整套流程的配置中枢关键几行值得新手理解module njuthesis sourcefiles {*.dtx, table.unpack(njulogofiles)} installfiles {*.cls, *.def, table.unpack(njulogofiles)} typesetfiles {njuthesis.dtx} unpackexe xetex它告诉 l3build源码是source/njuthesis.dtx加四枚校徽校名 PDF安装产物是生成的 cls 和三个 def 文件手册用 XeLaTeX 排版。围绕这份配置开发者的日常命令只有三条命令作用什么时候用l3build install从 dtx 提取生成 cls/def安装到本地 TeX 树改完 dtx 之后测试之前必跑l3build check编译 dtx 手册 跑test/下全部回归测试本地验证改动l3build ctan打 CTAN 发布包内部还会先跑一遍 check发布阶段工作流串起来就是下面这条单向流水线编辑 source/njuthesis.dtx │ ▼ l3build install ──→ 生成 njuthesis.cls / *.def │ ▼ 编译 test/ 下最接近的变体本科 / 研究生 / LuaLaTeX │ ▼ CI 从规范源打包产出用户 zip 与 CTAN 包两个值得注意的细节回归测试用的是 lvt 对照文件。test/下的.lvt是预期输出快照编译结果有差异会立即暴露行为回归biblatex 相关行为还有独立的test/config-biblatex.lua配置和.tlg对照输出。CI 是两阶段流水线先回归测试、后编译文档任何一环失败都不会发布。失败时会自动上传构建产物便于诊断。新手上手清单从克隆到跑通测试想完整体验这套工作流只需准备一个现代 TeX 发行版TeX Live 2023 自带 l3buildgit clone https://gitcode.com/gh_mirrors/nj/NJUThesis cd NJUThesis l3build install l3build check第一条克隆仓库l3build install会触发 docstrip 解包把 dtx 里%*install标签中的生成规则执行一遍产出 cls 与 def 文件l3build check编译手册并逐项比对测试输出。全部通过后你就拥有了从单源文件到可发布的模板包的完整心智模型。关键文件速查表文件一句话说明source/njuthesis.dtx规范源文件实现代码 用户手册一切修改的起点build.lual3build 构建配置解包、安装、测试、CTAN 打包source/latexmkrc手册编译的 latexmk 配置template/njuthesis-sample.tex官方空白模板用户入口test/test-xetex-undergraduate.tex本科变体回归测试test/test-xetex-graduate.tex研究生变体回归测试llmdoc/reference/file-map.md仓库全部文件的信任层级清单llmdoc/overview/project-overview.md项目概览与技术栈总结单源文件不是炫技而是同步机制回到开头的之谜NJUThesis 选择 dtx 单源 l3build本质上是把文档同步问题转换成了工程约定——代码旁即文档生成文件永不手改l3build 一条命令完成提取、安装、测试、打包。对写论文的同学你只需用户 zip 和一条latexmk -xelatex而对维护者这套工作流保证了改一处、处处生效。理解了 docstrip 的标签提取和 l3build 的命令分工你就看懂了本项目最核心的架构决策。祝编译顺利Happy TeXing ✨【免费下载链接】NJUThesis南京大学学位论文模板项目地址: https://gitcode.com/gh_mirrors/nj/NJUThesis创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表