我个人是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)。LaTeX
PDF
Beamer PDF
MediaWiki
DOCX
DocBook
rST
Textile
ASCIIDoc
texinfo
org
S5
Slidy
Slideous
ImpressJS
DZSlides
HTML
HTML5
EPUB
EPUB3
manpage
ODT
你还在听我说吗?好的。
你注意到最后两个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 输出时!