我个人是pandoc.
Pandoc 是格式转换的“瑞士军”刀工具:
- 它支持的核心源输入格式是
Markdown(包括任何主要的 MD “方言”,例如 GitHub 和 PHP 的风格以及几个特殊扩展)。其他输入格式有:HTML, rST, Textile, DocBook XML, MediaWiki. 
- 作为输出格式,它支持:
ConTeXt、、和(尽管需要在后台使用 LaTeX)、、、、、、、、、、(Emacs 组织模式)、(HTML幻灯片)、(HTML 幻灯片)、(HTML 幻灯片)、(HTML 幻灯片), (HTML 幻灯片), , , , 
...and: (GROFF manpage) 和(OpenDocument Text)。LaTeXPDFBeamer PDFMediaWikiDOCXDocBookrSTTextileASCIIDoctexinfoorgS5SlidySlideousImpressJSDZSlidesHTMLHTML5EPUBEPUB3
manpageODT 
你还在听我说吗?好的。
你注意到最后两个manpage吗ODT?
好吧,这是我个人“滥用”作为中间格式的两种输出格式,以便在我不想涉及 LaTeX 时为最终文档生成 PDF。
在Makefile的帮助下,我已经自动化了我的工作流程和流程链。所以我只需要输入make mydoc.latexpdf, or make mydoc.odtpdf, or make mydoc.manpdf。Makefile 设置为查找 的输入mydoc.mmd,然后设置适当的命令运行:pandoc直接创建 PDF(在后台首先转换为 LaTeX,然后pdflatex自行运行)、ODT 或联机帮助页。然后下一个命令是创建最终格式:
对于我的.odtpdf目标,它以无头模式运行LibreOffice。以下是我使用的基本命令行(我在 OS X 上,因此对于 Linux 或 Windows,您必须相应地调整路径)。注意,命令是 Makefile 语法——未经事先改编不能直接在 Shell 中使用:
(cd /Applications/LibreOffice.app/Contents/MacOS; \
./soffice "-env:UserInstallation=file:///tmp/LibO_Conversion__$(USER)" \
        --headless \
        --convert-to pdf:writer_pdf_Export \
        --outdir $(CURRDIR)/$(FINAL)  $(CURRDIR)/$(BUILD)/$(subst .odtpdf,.odt,$@) ; \
cd - ; )
 
对于我的.manpdf目标,它用于man -t从 Pandoc 的联机帮助页输出文件创建 PostScript,然后使用 Ghostscript 创建 PDF。因此它运行:
man -t <pandoc's manpage output file> \
 | gs -o ${HOME}/<pandoc-sourcedoc-name>.pdf -sDEVICE=pdfwrite -
 
自定义ODT 输出的外观
通过 ODT 到 PDF 的非 LaTeX 路径对我来说是最“性感”的......
- ...因为 Pandoc 知道如何将一些不错的个性化样式应用到目标 ODT,只要这些样式在
myreference.odt! (这些样式当然也会转移到 PDF 中。) 
然后我可以运行 Pandoc 命令(通过 Makefile 或在 Shell 中)根据我的喜好创建一个 ODT,包括我喜欢的字体、大小和颜色,以及我定义的页面大小和页眉、页脚或背景(再次: Makefile 语法!):
     pandoc \
            --toc \
            --toc-depth=4 \
            --to=odt \
            --chapters \
            --filter=pandoc-citeproc \
            --standalone \
            --reference-odt=$(RESOURCES)/myreference.odt \
            --from=markdown+mmd_title_block+pipe_tables+grid_tables+tex_math_dollars+raw_tex+footnotes+inline_notes+citations+link_attributes \
            --bibliography=$(RESOURCES)/my.bib \
            --csl=$(RESOURCES)/kp.csl \
            --number-sections \
            --output=./$(BUILD)/$@ \
            $<
该--from=markdown+...+...+参数告诉 Pandoc 接受几个我喜欢在我的 MD 源文件中使用的Markdown 语法扩展。
在 ODT 文档中获取样式的秘密在于--reference-odt=/path/to/myreference.odt命令行参数。
ODT 输出甚至可以与参考文献和参考书目一起使用(如果您的 Markdown 输入为此正确编写)!
使用视窗?
原则上,这个工作流程也应该在 Windows 上运行,因为 Pandoc 也可以在 Windows 上运行。我之前在 Windows 上运行过 Pandoc,但我自己并没有设置一个完全自动化的工作流程,首先是“ Pandoc:Markdown -> ODT ”,然后是“ .\soffice:ODT-> PDF ”,这里基于 Makefile,虽然...
但您可能想在 Windows 上探索另一条路径:
- 首先从 Pandoc 创建 DOCX 输出;
 
- 然后将 DOCX 转换为 PDF(自动或通过 WinWord 交互)。
 
是的,您还可以使用--reference-docx=my-reference.docx开关自定义 DOCX 输出文件的样式。只需首先创建一个my-reference.docx文件,它使用您想要的样式。Pandoc 然后将从参考文档中提取这些并将它们应用于它生成的输出 DOCX!
从那里,您可以了解如何将中间 DOCX 文件转换为 PDF。这也可以自动完成:您可能还需要考虑OfficeToPDF.exe。它托管在 CodePlex 上,获得 Apache 2.0 许可,并以二进制和源代码形式提供。
最后:一定要使用最新最好的 Pandoc 版本(目前是 v1.17.0.3 或更高版本)——最近几个月添加了很多功能,尤其是。当谈到 DOCX 输出时!