项目实现
实现思路说明
原计划是依靠一份 Markdown 依靠 Pandoc 完成论文输出,结果发现 Pandoc 对 docx 的输出有些一言难尽。标题、作者等元数据是硬编码在文档内的,这对我的处理工作产生了极大的困扰。
所以,我们会:
- 预处理:下载所需的依赖
- Pandoc 处理:通过 Pandoc 生成一份 docx 文档,依赖自定义的
filter.py
过滤器 - 后处理
- 使用 python-docx 在封面插入校徽
- 解包 docx 文档,解析 XML,删除第一个
\newSectionInNewPage
及其之前的全部内容;修改 Word 文档版式设定中的 字符间距控制 - 只压缩标点符号,这更符合中文的默认配置。
欲了解更多细节, 请移步 processer.py
。
模板文件样式说明
模板文件保存在 /assets/template
文件夹中,我们的程序会 Zip 打包该文件夹,并生成 template.docx
以供 Pandoc 使用。该节解释了 template.docx
模板文件内的各类样式,且给出了在 Markdown 中对应的写法。
本模板的样式中,中文采取黑体的地方,西文字体统一采用 Arial;中文采取宋体的地方,西文字体统一采用 Times New Roman。
以下所述“样式”,均满足了撰写规范[@ShaMenDa];当撰写规范未做出明确规定时,则采取我个人的撰写习惯与本人指导老师的习惯。
Tip
想要修改模板文件样式?
Title ZH
样式:小三号 Arial 字体加粗,居中
备注:仅需在元数据中修改对应字段,自动生成
Markdown 对应:无,适当位置插入 \abstract
,修改元数据即可自动生成中文摘要
排版规范:
- 中文论文题目
Abstract Title ZH
样式:四号黑体并加方括号
备注:仅需在元数据中修改对应字段,自动生成
Markdown 对应:无,适当位置插入 \abstract
,修改元数据即可自动生成中文摘要
排版规范:
- 中文摘要标题
- 中文关键词标题
Abstract Content ZH
样式:小四号宋体
备注:仅需在元数据中修改对应字段,自动生成
Markdown 对应:无,适当位置插入 \abstract
,修改元数据即可自动生成中文摘要
排版规范:
- 中文摘要内容
Title EN
样式:小三号 Arial 字体加粗,居中
备注:仅需在元数据中修改对应字段,自动生成
Markdown 对应:无,适当位置插入 \abstractEn
,修改元数据即可自动生成英文摘要
排版规范:
- 英文论文题目
Abstract Title EN
样式:小四号 Arial 字体,加粗并加方括号
备注:仅需在元数据中修改对应字段,自动生成
Markdown 对应:无,适当位置插入 \abstractEn
,修改元数据即可自动生成英文摘要
排版规范:
- 英文摘要标题
- 英文关键词标题
Abstract Content EN
样式:五号 Arial 字体
备注:仅需在元数据中修改对应字段,自动生成
Markdown 对应:无,适当位置插入 \abstractEn
,修改元数据即可自动生成中文摘要
排版规范:
- 英文摘要内容
标题 1
样式:小三号黑体
备注:排版规范中未要求居中,但实践中都居中处理。故模板亦设置为居中对齐
Markdown 对应:一级标题(H1)
排版规范:
- 第一级标题
标题 2
样式:四号黑体
备注:左对齐
Markdown 对应:二级标题(H2)
排版规范:
- 第二级标题
标题 3-9
样式:小四号宋体
备注:左对齐
Markdown 对应:3-6 级标题(H3-6)
排版规范:
- 第三级起标题
正文文本、First Paragraph
样式:小四号宋体,每段首行缩进 2 字符,行高固定值 20 磅
备注:无
Markdown 对应:段落
排版规范:
- 引言内容
- 正文
- 结论内容
- 致谢语内容
- 附录内容
Introduction Title Like
样式:四号黑体,居中
备注:由过滤器自动实现引言、致谢、参考文献的“另起一页,标题和内容之间空两行”之效果;附录则仅应用样式
Markdown 对应:一级标题(H1)。标题内容仅可取值为:引言、致谢、致谢语、参考文献、附录
排版规范:
- 引言
- 致谢语标题
- 参考文献标题
- 附录标题
Conclusion Title
样式:四号宋体,居中
备注:
Markdown 对应:一级标题(H1)。标题内容仅可取值为:结论、总结
排版规范:
- 结论标题
Reference Content / 书目
样式:五号宋体,左顶格,两端对齐
备注:由过滤器自动实现“五号宋体,左顶格”之效果
Markdown 对应:一级标题(H1)。
排版规范:
- 参考文献内容
Table caption、Image Caption
样式:五号宋体、Times New Roman,居中,段落间距:段前: 3 磅、段后: 3 磅
备注:该样式并未在撰写规范中详细注明。
Table
样式:五号宋体、Times New Roman,居中;段落间距:段后: 10 磅;单倍行距,单元格内左对齐;不允许跨页断行、标题行在各页顶端重复出现;具体表现为“三线表”样式
备注:该样式并未在撰写规范中详细注明。
Markdown 对应:Markdown 表格
Captioned Figure
样式:五号宋体、Times New Roman,居中;段落间距:段前: 3 磅、段后: 3 磅;行距最小值 20 磅
备注:该样式并未在撰写规范中详细注明。该样式为插入图片所用。
Markdown 对应:Markdown 图片
超链接
样式:颜色设置为“自动”
备注:该样式并未在撰写规范中详细注明。
Markdown 对应:Markdown 超链接
Verbatim Char
样式:Consolas,小四
备注:该样式并未在撰写规范中详细注明。为 Markdown 行内代码块所用。
Markdown 对应:Markdown 行内代码块