[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-81021":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":14,"stars7d":15,"stars30d":15,"stars90d":14,"forks30d":14,"starsTrendScore":14,"compositeScore":16,"rankGlobal":9,"rankLanguage":9,"license":17,"archived":18,"fork":18,"defaultBranch":19,"hasWiki":20,"hasPages":18,"topics":21,"createdAt":9,"pushedAt":9,"updatedAt":22,"readmeContent":23,"aiSummary":24,"trendingCount":14,"starSnapshotCount":14,"syncStatus":12,"lastSyncTime":25,"discoverSource":26},81021,"thesis-builder","Modulus010\u002Fthesis-builder","Modulus010","用 Markdown 写论文，自动生成格式合规的 Word 文档。NEU thesis compiler: Markdown DSL → AST → .docx",null,"Python",30,2,29,0,1,1.43,"MIT License",false,"main",true,[],"2026-06-12 02:04:09","# thesis-builder\n\n为 **东北大学软件学院** 本科毕业设计（论文）定制的论文编译器。用 Markdown 写论文，自动生成格式合规的 Word 文档。\n\n写毕业论文时，大部分时间花在调 Word 格式上——字体字号、页边距、行间距、图表编号、参考文献格式……稍微改一点就要逐页检查。thesis-builder 让你用纯文本 Markdown 编写论文内容，一条命令编译出符合东北大学书写印制规范的 .docx，把时间留给内容本身。\n\n**核心能力：**\n\n- 扩展 Markdown DSL，支持图片、三线表、代码块、PlantUML 图等学术元素\n- 自动按章编号图表（图1.1、表2.3），自动编号章节标题\n- 参考文献[1][2-3]引用自动渲染为上标超链接，点击跳转\n- 内置内容检查器：摘要字数、关键词数量、章节比例、引文完整性等十余项校验\n- 格式参数全部外置为 YAML 配置，改配置不改代码即可适配不同要求\n\n## 效果\n\n编译后生成的 Word 文档——封面、摘要、目录、正文、参考文献、致谢，一气呵成：\n\n![生成效果](examples\u002Foutput-preview.png)\n\n完整编译效果见 [examples\u002Fthesis.pdf](examples\u002Fthesis.pdf)，[格式检测报告](examples\u002F格式检测报告.pdf)。该 word 由 [examples\u002Fcompiler-thesis.md](examples\u002Fcompiler-thesis.md) 编译生成——它本身是一篇完整的论文，同时也是 DSL 语法的最佳参考。\n\n## 快速开始\n\n**环境：** Python 3.12+\n\n```bash\npip install python-docx pyyaml\n```\n\n```bash\npython main.py your-thesis.md -o thesis.docx       # 编译论文\npython main.py your-thesis.md --check-only          # 仅检查，不生成文件\npython main.py your-thesis.md -v -o thesis.docx     # 详细输出\n```\n\n可选依赖：\n```bash\npip install pillow       # 图片按 DPI 计算尺寸\nsudo apt install plantuml  # PlantUML 渲染（否则 @plantuml 指令跳过）\n```\n\n## DSL 语法\n\n### 元数据 & 结构\n\n```yaml\n---\ntitle: 论文题目\nenglish_title: Thesis Title\nstudent_id: 2025XXXXXX\nstudent_name: 姓名\nadvisor: 导师 教授\ncollege: 软件学院\nmajor: 软件工程\nyear: 2025\nmonth: 6\n---\n```\n\nYAML frontmatter 声明元数据，自动填入封面和英文封面。\n\n```markdown\n# 绪论              → 章标题（自动另起新页）\n## 研究背景          → 节标题（X.1）\n### 具体问题          → 小节标题（X.1.1）\n\n正文段落直接写。参考文献[1][2-3]自动渲染为上标超链接。\n```\n\n### 图片\n\n```markdown\n@figure{arch.png, caption=系统架构图, scale=0.8}\n```\n\n从源文件同级的 `figures\u002F` 目录读取，自动按章编号。\n\n### 三线表\n\n```markdown\n@table{caption=测试结果}\n| 模块 | 用例数 | 通过率 |\n| --- | --- | --- |\n| 解析器 | 25 | 100% |\n| 生成器 | 18 | 100% |\n@end\n```\n\n自动应用学术三线表格式（顶线、表头分隔线、底线）。\n\n### 代码块\n\n```markdown\n@code{python, main.py}\nif __name__ == \"__main__\":\n    main()\n@end\n```\n\n### PlantUML\n\n````markdown\n```plantuml caption=系统类图, scale=0.75\n@startuml\nclass Thesis {\n  +metadata\n  +sections\n}\n@enduml\n```\n````\n\n编译时调用 `plantuml` 命令渲染为 PNG，自动按章编号。\n\n### 摘要 \u002F 关键词 \u002F 参考文献 \u002F 致谢\n\n```markdown\n# 摘要\n摘要正文...\n\n关键词：关键词1；关键词2；关键词3\n\n# ABSTRACT\nAbstract text...\n\nKey words: keyword1; keyword2; keyword3\n\n# 参考文献\n[1] Author. Title[J]. Journal, 2024.\n\n# 致谢\n感谢...\n```\n\n这些特殊段落会被自动识别，放置到文档的正确位置。\n\n## 内容检查\n\n编译时自动运行检查器，生成文档前报告问题：\n\n```\n$ python main.py thesis.md --check-only\nParsing thesis.md ...\n  done (7 chapters, 42 references)\nChecking content ...\n  ok [摘要] 摘要字数符合要求（536字）\n  ok [关键词] 关键词5个\n  error [章节比例] 系统实现篇幅占比偏低（14.7%，要求≥20%）\n  error [参考文献] 参考文献数量不足（25条，要求≥40条）\n  ok [参考文献引用] 所有参考文献均在正文中被引用\n  2 errors, 0 warnings\n```\n\n| 检查类别 | 检查内容 |\n|----------|----------|\n| 元数据 | 标题字数、必填字段 |\n| 摘要 | 字数范围、关键词数量 |\n| 章节结构 | 必需章节是否存在 |\n| 章节比例 | 各章篇幅占比 |\n| 参考文献 | 数量、正文引用完整性、引用顺序 |\n| 图表 | 资源文件是否存在 |\n| 代码块 | 单个代码块长度 |\n| 图表密度 | 连续图表是否过多 |\n\n## 配置\n\n所有格式参数集中在 `config\u002Fformat.yaml`，修改即可适配不同要求：\n\n```yaml\nfonts:\n  body:\n    name: 宋体\n    size: 12       # 小四号\n\npage:\n  width: 21.0      # A4\n  margin_left: 3.0\n  margin_right: 2.5\n```\n\n当前配置针对**东北大学本科毕业设计**规范。其他学校需自行调整。\n\n## 架构\n\n```\nMarkdown 源文件 → AST → .docx\n```\n\n```\nthesis-builder\u002F\n├── main.py               # CLI 入口\n├── ast_nodes.py           # AST 数据模型\n├── parser\u002F\n│   └── markdown.py        # Markdown → AST 单遍解析器\n├── checker\u002F\n│   └── content.py         # 内容规范检查器\n├── builder\u002F\n│   ├── document.py        # AST → .docx 生成器\n│   ├── styles.py          # 样式配置加载\n│   ├── numbering.py       # 章节\u002F图表自动编号\n│   └── xml_helpers.py     # OOXML 辅助函数\n├── config\u002Fformat.yaml     # 格式参数配置\n├── figures\u002F               # 封面图片\n└── tools\u002Fmigrate_thesis.py  # Word → Markdown 迁移工具\n```\n\n## 命令行\n\n```\npython main.py \u003Cinput.md> [-o output.docx] [options]\n```\n\n| 参数 | 说明 |\n|------|------|\n| `-o, --output` | 输出路径，默认 thesis.docx |\n| `--check-only` | 仅检查，不生成文档 |\n| `-q, --quiet` | 仅显示错误 |\n| `-v, --verbose` | 详细输出 |\n| `-y, --yes` | 有 error 时跳过确认 |\n\n## 注意事项\n\n- **封面图片：** 需在 `figures\u002F` 目录放置 `cover_image1.jpeg` 和 `cover_image2.jpeg`，否则封面为空白\n- **PlantUML：** 需系统安装 `plantuml` 命令，否则 `@plantuml` 指令显示错误占位文本\n- **字体：** 生成的 .docx 引用宋体、黑体等字体，未安装时可能显示异常\n\n## 局限性\n\n本项目帮助你快速生成格式接近规范的初稿，**不保证 100% 满足所有格式要求**。\n\n- **目录需手动刷新：** 生成 .docx 后，需在 Word 中右键目录选择\"更新域\"\n- **续表问题:** 无法检测到表格被分割并自动加表题\n- **部分格式需微调：** 封面布局、特殊段落间距等细节可能需要手动调整\n- **内容责任自负：** 本工具只负责格式排版，论文内容的真实性、原创性和学术规范由作者本人负责\n\n**本项目不能：**\n\n- 替代 Word 精细排版——分栏、文本框、艺术字等需手动处理\n- 渲染数学公式——不支持 LaTeX，公式需在 Word 中用公式编辑器插入\n- 双向同步——生成的是一次性输出，不支持从 .docx 反向同步回 Markdown\n- 保证通过格式检测——不同学院要求可能不同，最终以指导教师要求为准\n\n## 联系方式\n\nQQ: 3176733724\n\n如果这个项目帮到了你，欢迎请我喝杯可乐 ☕ 觉得好用的话，给个 star ⭐，让更多被论文格式折磨的同学看到！也欢迎分享给你的同学。\n\n## License\n\nMIT\n","thesis-builder 是一个专为东北大学软件学院本科毕业设计（论文）定制的论文编译器，能够将用 Markdown 编写的论文自动生成格式合规的 Word 文档。该项目的核心功能包括扩展的 Markdown DSL 语法支持多种学术元素如图片、三线表和代码块等；自动编号章节标题与图表；参考文献引用自动渲染为上标超链接；内置内容检查器确保摘要字数、关键词数量及引文完整性等多项要求达标。此外，所有格式参数通过 YAML 配置文件管理，方便用户根据需要调整。适合于希望专注于内容创作而非格式调整的学生或研究人员使用，在撰写需严格遵循特定格式要求的学术文档时尤为有用。","2026-06-11 04:03:13","CREATED_QUERY"]