Skip to content

Repository files navigation

ThesisFormatter

用于将 Word 论文快速整理为山东中医药大学论文格式的 VBA 宏项目。

⚠️ 先看这里

运行宏前,请先备份文档。

原因:

  • 宏会直接修改 Word 文档内容和格式
  • 运行后通常不能可靠地通过 Ctrl + Z 完整撤回
  • 尤其是目录、分页、分节、页码、参考文献这类操作,建议一定在副本上先测试

建议做法:

  1. 先复制一份论文文档副本。
  2. 在副本上运行宏。
  3. 检查结果无误后,再决定是否覆盖原文档。

🚀 最简单的使用方法

大多数情况下,你只需要运行一个宏:

FormatThesisToSDUTCM

它会自动处理:

  • 页面设置
  • 标题格式
  • 正文格式
  • 摘要和关键词
  • 目录
  • 参考文献
  • 表格内单倍行距(保留已有表格样式)
  • 图片与图题
  • 页码 目录前为罗马数字,目录后为阿拉伯数字

🛠️ 安装步骤

推荐安装为独立的全局 Word 加载项。先关闭 Word,然后在仓库目录运行:

& ./install.ps1

安装器会询问 Word 自己的 STARTUP 路径,生成并加载 ThesisFormatter.dotm。安装一次后,所有普通 .docx 文档都能使用宏,不需要另存为 .docm,也不需要修改 Normal.dotm

以后更新仓库代码后,重新运行同一条命令即可升级;旧加载项会自动备份到 %LOCALAPPDATA%\ThesisFormatter\backups

卸载命令:

& ./install.ps1 -Uninstall

如果系统阻止程序访问 VBA 工程,请在 Word 的“信任中心 -> 宏设置”中启用“信任对 VBA 工程对象模型的访问”,然后重新运行安装命令。

手动复制 format_macro.bas 到 VBA 编辑器仍可作为临时使用方式,但不再是推荐安装方法。

▶️ 如何运行

  1. 回到 Word。
  2. Alt + F8 打开宏列表。
  3. 选择 FormatThesisToSDUTCM
  4. 点击“运行”。

📋 默认会发生什么

运行 FormatThesisToSDUTCM 后,程序会按顺序完成以下工作:

  1. 设置 A4 页面和行距。
  2. 统一题目、一级标题、二级标题、三级标题格式。
  3. 统一正文格式。
  4. 处理摘要和关键词。
  5. 处理目录。 如果已有目录域,会更新目录并统一目录标题。 如果没有目录域,但有“目录”标题或文字,会在“目录”位置插入目录。
  6. 处理参考文献。
  7. 将表格内段落恢复为单倍行距。 不改动已有表格的字体、对齐、缩进、边框、列宽或 AutoFit 设置。
  8. 处理图片和图题。
  9. 设置页码。 目录前为罗马数字,目录后为阿拉伯数字。

#️⃣ 页码说明

默认主入口宏(FormatThesisToSDUTCM)使用的是混合页码:

  • 目录前:罗马数字
  • 目录后:阿拉伯数字,从 1 开始

如果你不想使用混合页码,而是希望全文都用阿拉伯数字,可以在运行 FormatThesisToSDUTCM 结束后,再单独运行:

ApplyArabicPageNumbersOnly

如果你只想单独重设混合页码,也可以单独运行:

ApplyMixedPageNumbersByTOC

📄 文档需要满足什么条件

为了让宏识别得更稳定,建议文档尽量满足下面几点:

  1. 题目使用 标题 样式。
  2. 正文章节标题尽量使用: 标题 1 / 标题 2 / 标题 3Heading 1 / Heading 2 / Heading 3
  3. 正文尽量使用: 正文文本正文NormalFirst Paragraph
  4. 目录部分最好满足下面两种情况之一:
    • 已经有 Word 目录域
    • 文中有单独一行“目录”
  5. 参考文献部分最好以“参考文献”或 References 开头。

✅ 适合的使用顺序

建议这样使用:

  1. 先把论文内容基本写完。
  2. 确认标题样式尽量正确。
  3. 如果需要目录,保证文中已有目录域,或者保留单独一行“目录”。
  4. 先备份文档。
  5. 运行 FormatThesisToSDUTCM
  6. 检查目录、页码和参考文献是否符合你的具体要求。

❓ 常见问题

1. 为什么运行后目录没有生成?

通常是因为文档中既没有已有目录域,也没有单独一行“目录”。

解决方法:

  • 先在文中放一行单独的“目录”,再运行 FormatThesisToSDUTCM
  • 或者先手动插入一次 Word 目录,再运行 FormatThesisToSDUTCM

2. 为什么有些标题没有变化?

通常是因为这些段落没有使用正确的标题样式。

建议先检查它们是否使用了:

  • 标题
  • 标题 1 / 标题 2 / 标题 3
  • Heading 1 / Heading 2 / Heading 3

3. 为什么我还要单独运行页码相关宏?

一般不需要。

默认运行 FormatThesisToSDUTCM 时,就已经会自动应用混合页码。

只有当你想改成“全文阿拉伯数字页码”时,才需要再运行:

ApplyArabicPageNumbersOnly

4. 这个宏可以反复运行吗?

可以,但仍建议先备份文档再运行。

目前已经尽量按可重复运行的方式处理,正常情况下再次运行不会不断重复插入目录或页码结构;但由于 Word 文档结构差异较大,复杂文档仍建议先在副本上测试。

5. 为什么运行后不能完整撤回?

这是 Word 宏的常见限制之一。

宏会批量修改格式、目录、分节、分页和页码,运行后通常不能像普通手动编辑那样可靠地使用 Ctrl + Z 完整撤销。

因此请务必在运行前备份文档。

6. 运行后格式不完全符合学校要求?

欢迎将不符合要求的情况提交 issue 说明,我们会根据反馈调整规则。

当前规则是“基础规范”,仍建议人工微调。

⚡ 性能与测试

性能测试应在文档副本上进行,不能覆盖原论文。可通过环境变量指定代表性文档并运行完整流程:

$benchmark = $env:THESIS_FORMATTER_BENCHMARK_DOC
& ./tests/full-performance-profile.ps1 -DocumentPath $benchmark -MaxSeconds 120

2026-06-21 使用一份包含 815 个段落和 11 个表格的实际文档测试:

  • 完整格式化流程由约 132.5 秒降至 49.2 秒。
  • 混合页码阶段由约 98.9 秒降至 3.6 秒。
  • 主要优化是将目录后分节符清理限制在目录与正文之间的局部范围,避免通过 ActiveDocument.Paragraphs(i) 按索引扫描全文。

这些数字用于观察同一环境下的性能回归,不是固定耗时承诺。Word 的后台分页、缓存、文档是否打开以及 Office 当前状态都可能造成明显波动;调整主流程后应比较多次运行结果,并检查生成文档的目录、页码、表格和标题格式。

📁 文件说明

📦 未来计划

  • 增强参考文献识别能力
  • 支持更多心理学期刊模板

🐛 反馈 & 贡献

如果你发现:

  • 格式不符合学校要求
  • 某些文档处理异常

欢迎:

About

用于将 Word 论文快速整理为山东中医药大学论文格式的 VBA 宏项目。

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages