From fd4b24153ff717943cfea90d4e01a2a280a5c739 Mon Sep 17 00:00:00 2001 From: yyc12345 Date: Tue, 23 Jun 2026 15:10:11 +0800 Subject: [PATCH] feat: add support for english thesis --- pandoc/README.md | 10 +- pandoc/{meta.yaml => chinese-meta.yaml} | 19 +- pandoc/english-meta.yaml | 32 ++ pandoc/english-thesis.csl | 453 ++++++++++++++++++++++++ pandoc/shared-meta.yaml | 14 + 5 files changed, 510 insertions(+), 18 deletions(-) rename pandoc/{meta.yaml => chinese-meta.yaml} (56%) create mode 100644 pandoc/english-meta.yaml create mode 100644 pandoc/english-thesis.csl create mode 100644 pandoc/shared-meta.yaml diff --git a/pandoc/README.md b/pandoc/README.md index 9b6baba..8f4fec6 100644 --- a/pandoc/README.md +++ b/pandoc/README.md @@ -22,7 +22,8 @@ uv run pandoc \ -s \ -f latex -t docx \ --citeproc \ - --metadata-file=meta.yaml \ + --metadata-file=shared-meta.yaml \ + --metadata-file=chinese-meta.yaml \ -F pandoc-tex-numbering \ --resource-path \ --reference-doc=my-thesis.docx \ @@ -36,7 +37,8 @@ uv run pandoc \ - `-s`表示Standalone模式,用于表示生成一个独立的文档,而不仅仅是文档片段。 - `-f latex -t docx`用于显式指定输入输出格式。 - `--citeproc`用于启用引用解析功能,不启用就没有引用标识。 -- `--metadata-file=meta.yaml`指定了元数据,包括:引用文献样式和`pandoc-tex-numbering`过滤器等相关配置。 +- `--metadata-file=shared-meta.yaml`指定了中英文共享的元数据,包括:开启要求将文内引用连接到文末参考列表文献等。以及`pandoc-tex-numbering`过滤器的基础共享配置等。 +- `--metadata-file=chinese-meta.yaml`指定了中文论文需要的元数据,如果你正在处理纯英文论文,请切换到`english-meta.yaml`。这部分元数据包括:参考文献样式,以及`pandoc-tex-numbering`过滤器的引用文本配置等。 - `-F pandoc-tex-numbering`显式指定使用`pandoc-tex-numbering`过滤器。 - `--resource-path `用于设置LaTeX资源文件夹。Pandoc会在你指定的``文件夹中查找文档中引用的图片和子文档等内容。一般来说,需要设置为你待转换的LaTeX文件所在的文件夹的路径。 - `--reference-doc=my-thesis.docx`设置了转换到DOCX格式时使用的模板。你也可以把`my-thesis.docx`换成你想要的模板,至于如何编辑属于你的模板,请参考后文。 @@ -122,7 +124,7 @@ git apply -R --directory pandoc/.venv/Lib/site-packages/pandoc_tex_numbering num 目前该环境存在以下缺点: -- 不能够按照原生Word编写的方式,使用交叉引用来进行文献和图表的引用。我不打算在这个环境中通过Pandoc Filter来解决这个问题,我打算直接通过编写专门的转换器来解决(详见XThesis分支)。 -- 不能够将LaTeX的`\clearpage`或`\newpage`换页指令翻译成换页符。我写了一个Lua Filter来完成这个工作,现存的也有官方的过滤器可以完成这一工作,但它必须启用`latex+raw_tex`扩展后才能正常使用。但是这个`raw_tex`扩展带来的副作用远大于启用其的好处。首先是我各种图片的大小设置全部失效了,另外,面对不认识的环境名,它也不输出环境中的内容了。 +- 不能够按照原生Word编写的方式,使用交叉引用来进行文献和图表的引用。我不打算在这个环境中通过Pandoc Filter来解决这个问题,我打算直接通过未来规划中的专门的转换器来解决。 +- 不能够将LaTeX的`\clearpage`或`\newpage`换页指令翻译成换页符。我写了一个Lua Filter来完成这个工作,现存的也有官方的过滤器可以完成这一工作,但它必须启用`latex+raw_tex`扩展后才能正常使用。然而这个`raw_tex`扩展带来的副作用远大于启用其的好处。首先是我各种图片的大小设置全部失效了,另外,面对不认识的环境名,它也不输出环境中的内容了。 - 不能够处理不认识的命令。我的LaTeX文档中用了一些自定义的命令,这些命令它不识别就算了,它连其参数都不愿意以字面量输出出来。比如`\my_style{Keywords}`,它直接什么都不输出,但我期望他能够至少把`Keywords`输出出来,即使在不认识`\my_style`的情况下。 diff --git a/pandoc/meta.yaml b/pandoc/chinese-meta.yaml similarity index 56% rename from pandoc/meta.yaml rename to pandoc/chinese-meta.yaml index 49b100c..1b3581b 100644 --- a/pandoc/meta.yaml +++ b/pandoc/chinese-meta.yaml @@ -1,40 +1,31 @@ # ===== Pandoc ===== # 引用文献设置 -csl: chinese-thesis.csl # 设置引用文献样式 -link-citations: true # 正文中引用的文献需要交叉引用到文献列表 -link-bibliography: false # 文献中的链接不要引出 +csl: chinese-thesis.csl # 设置引用文献样式。该样式基于GB/T 7714-2005。 # ===== pandoc-tex-numbering Filter ===== -# 杂项设置 -number-theorems: false -numbering-caption-delimiter: "\\ " # Do NOT delete \\. It is the escape for space. -prefix-space: true -section-max-levels: 3 -number-reset-level: 0 # 编号不需要按章节重置,因此设置为0表示在最顶层的层级的父级才重置编号(即不重置编号)。 +# 图表标题格式控制 +numbering-caption-delimiter: "\\ " # 不要删除`\\`字符,它是空白的Escape控制符。 +prefix-space: false # 章节编号设置 -number-sections: true section-numstyle: "arabic" section-src-format-1: "{num}" section-src-format-2: "{num}" section-src-format-3: "{num}" # 公式编号设置 -number-equations: true equation-numstyle: "arabic" equation-prefix: "公式" equation-src-format: "\\qquad ({this_num})" equation-cref-format: "{prefix}{this_num}" equation-ref-format: "{this_num}" # 图片编号设置 -number-figures: true figure-numstyle: "arabic" figure-prefix: "图" figure-src-format: "{prefix}{this_num}" figure-cref-format: "{prefix}{this_num}" figure-ref-format: "{this_num}" # 表格编号设置 -number-tables: true -table-prefix: "表" table-numstyle: "arabic" +table-prefix: "表" table-src-format: "{prefix}{this_num}" table-cref-format: "{prefix}{this_num}" table-ref-format: "{this_num}" diff --git a/pandoc/english-meta.yaml b/pandoc/english-meta.yaml new file mode 100644 index 0000000..0702354 --- /dev/null +++ b/pandoc/english-meta.yaml @@ -0,0 +1,32 @@ +# ===== Pandoc ===== +# 引用文献设置 +csl: english-thesis.csl # 设置引用文献样式。该样式基于IEEE Transaction。 + +# ===== pandoc-tex-numbering Filter ===== +# 图表标题格式控制 +# TODO: 等版本更新后,删除该内容,然后将下文格式中的冒号删除 +# numbering-caption-delimiter: ":" +prefix-space: true +# 章节编号设置 +section-numstyle: "arabic" +section-src-format-1: "{num}" +section-src-format-2: "{num}" +section-src-format-3: "{num}" +# 公式编号设置 +equation-numstyle: "arabic" +equation-prefix: "Equation" +equation-src-format: "\\qquad ({this_num})" +equation-cref-format: "{Prefix}{this_num}" +equation-ref-format: "{this_num}" +# 图片编号设置 +figure-numstyle: "arabic" +figure-prefix: "Figure" +figure-src-format: "{Prefix}{this_num}:" +figure-cref-format: "{Prefix}{this_num}" +figure-ref-format: "{this_num}" +# 表格编号设置 +table-numstyle: "arabic" +table-prefix: "Table" +table-src-format: "{Prefix}{this_num}:" +table-cref-format: "{Prefix}{this_num}" +table-ref-format: "{this_num}" diff --git a/pandoc/english-thesis.csl b/pandoc/english-thesis.csl new file mode 100644 index 0000000..bff5b91 --- /dev/null +++ b/pandoc/english-thesis.csl @@ -0,0 +1,453 @@ + + diff --git a/pandoc/shared-meta.yaml b/pandoc/shared-meta.yaml new file mode 100644 index 0000000..3719c03 --- /dev/null +++ b/pandoc/shared-meta.yaml @@ -0,0 +1,14 @@ +# ===== Pandoc ===== +# 引用文献设置 +link-citations: true # 正文中引用的文献需要交叉引用到文献列表 +link-bibliography: false # 文献中的链接不要引出 + +# ===== pandoc-tex-numbering Filter ===== +# 杂项设置 +section-max-levels: 3 # 标题最大三级深度 +number-reset-level: 0 # 编号不需要按章节重置,因此设置为0表示在最顶层的层级的父级才重置编号(即不重置编号)。 +number-theorems: false # 不对定理进行编码 +number-sections: true # 对章节编号 +number-equations: true # 对公式编号 +number-figures: true # 对图片编号 +number-tables: true # 对表格编号