利用pandoc将markdown转换为word文档

您所在的位置:网站首页 如何将文件转换为word 利用pandoc将markdown转换为word文档

利用pandoc将markdown转换为word文档

2023-10-17 16:40| 来源: 网络整理| 查看: 265

目录基本使用修改word文档格式合并多个markdown文件,自动生成目录markdown预处理操作指南:汇总软工实践课程博客总结

pandoc可以完成多种文件类型的相互转换,支持的文件格式参见官方网站:https://pandoc.org/index.html。本博客参考了官方文档以及社区讨论,将介绍如何利用pandoc将markdown转换为word文档。

基本使用

在Installing页面选择合适的版本下载

命令行运行基本参数

使用参数-f FORMAT和-t FORMAT指定源和目标文件格式;pandoc支持识别文档后缀,一般可以省略 使用参数-o FILE指定输出文件

一个例子

省略文件格式,使用命令pandoc 课程回顾与总结.md -o 课程回顾与总结.docx,得到的结果如下:

课程回顾与总结.md 课程回顾与总结.docx 修改word文档格式

使用参数--reference-doc=FILE可以指定docx输出文件的格式参考对象,从而修改word文档的格式。

获取模板

首先使用命令pandoc -o custom-reference.docx --print-default-data-file reference.docx拷贝一份默认的参考文件模板,取名为custom-reference.docx

修改模板样式

用word打开custom-reference.docx,修改各部分对应样式。例如,将光标移动到Heading 2,找到对应的样式,右键进行修改:

下图修改了Heading 1和Heading 2,将字体修改为黑体,颜色修改为黑色:

custom-reference.docx修改前 custom-reference.docx修改后

如果要修改输出文件中的表格样式,直接给模板中的表格更换样式,不能达成效果。根据Github上的讨论得知,必须修改名为Table的表格样式,才能控制输出文件的表格样式。

再次转换文件

使用命令pandoc 课程回顾与总结.md -o 课程回顾与总结.docx --reference-doc=custom-reference.docx,此次运行结果和之前对比如下,注意到一级标题和二级标题变成黑色:

默认格式 修改格式后 合并多个markdown文件,自动生成目录

pandoc可以接受多个文件为输入,例如pandoc file1.md file2.md file3.md -o result.docx;另外有一些参数可以用于自动生成目录。

生成目录

使用参数--toc自动生成目录

同时可以修改格式参考文件中,TOC标题/TOCHeader的样式,选中段前分页,这样之后手动插入文档封面会比较方便。

使用参数--toc-depth=NUMBER指定目录包含的标题深度

如果每一篇markdown的文章标题都是一级标题,使用--toc-depth=1可以生成最简单的目录。

使用参数--reference-doc=FILE指定格式参考文件,并给格式参考文件添加页码

如此生成的文件也会有页码。

文件分页

pandoc读入了多个文件,输出时各个文件的内容是连续的;希望每个文件能从新的一页开始,检索互联网得到两种解决方式:

格式选择段前分页

一级标题往往是文章标题。如果修改一级标题的格式,选中段前分页,每一个markdown文件的一级标题就会出现在新的一页。

参考链接:How to add a page break in word document generated by RStudio & markdown

pandoc使用filter

Pandoc provides an interface for users to write programs (known as filters) which act on pandoc’s AST.

什么是filter,参考官网:Pandoc filters

如何使用filter达到分页目的,参考这个回答:Pandoc markdown page break

markdown预处理

提前处理markdown源文件,或者根据结果修改markdown文件,以得到排版较好的word文件。

合理使用标题层次

合并多篇markdown时,注意统一标题层次。

合理使用markdown语法

例如,避免仅仅为了排版美观而使用引用语法;markdown引用在word文件中显示效果不同,错误使用可能会产生奇怪的效果。

注意缩进和空行

使用缩进和空行以体现段落关系。观察下面两个结果:

markdwon word

避免手动换行排版

markdown中不要为了让每行文字数量相同而手动使用回车换行。

替换html标签(暂时没有找到支持的方式)

如果使用了html表格/图片等,需要替换成相应的markdown语法。

操作指南:汇总软工实践课程博客

下载群文件:文档封面和提前处理好的格式参考文件custom-reference.docx

后者参考了福大毕业论文撰写规范,提前调整了部分格式 后者仅修改了前四级标题格式;如果有需求,需要自行修改其他部分的格式

整理好历次作业的markdown文件

参考markdown预处理中的内容修改源文件 用作业的名字给每篇博客添加一级标题,用于生成目录,同时产生分页效果

在命令行运行pandoc hw1.md hw2.md hw3.md -o result.docx --reference-doc=custom-reference.docx --toc --toc-depth=1

命令中markdown文件的名字、数量和顺序,以及输出文件的名字,根据自己的情况填充

核查所有内容是否正确显示;如果不是,调整markdown源文件,再次生成结果

根据实际情况,调整有问题的文字格式/图片/表格/代码段/列表缩进

修改目录标题Table of Contents为目录

手动插入封面并填写相关信息

有必要时,调整页码(例如去除封面和目录部分的页码)

总结

个人感觉pandoc对于docx的格式控制是有限的。如果对word操作很熟练,使用pandoc的基本转换功能就可以,后续的格式/目录/页码都能够在word文档中完成。如果不熟悉word,或者希望pandoc提供一些便利,这篇博客的其他部分可以提供一些帮助。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3