Markdown、Pandoc转换tex文件为doc&docx与其它

早就想把使用Markdown&pandoc的事情归纳、总结和梳理一下,但一直没有时间。放假一天多,边做事情边喘气儿的空隙,整理了一下。

Markdown是个好东西,LaTeX也是个好东西。以下的一些说法只是属于个人观点,还不一定正确,可视为吐槽,亦可视为一个人的电脑操作习惯。

把目录放前面:

一如果熟悉LaTeX,没必要入Markdown的坑

二 Markdown并非一无是处,pandoc让Markdown神通广大

2.1 关于md→doc&docx

2.2 关于md→epub&mobi&azw&6寸pdf

三借助pandoc转化LaTeX为doc&docx

把结论也放前面:

1 Markdown非常适合随写随用的小文档,特别是有数学、物理背景的小文档

2 不必担心用Markdown平日里积累的小素材,日后难于整合,LaTeX+pandoc可以把散碎的Md文件串联到一起,并输出成任何你想要的格式

3 如果内心早已有大型规划与设计,建议还是直接上LaTeX,毕竟专业

4 Markdown和LaTeX借助pandoc的支持力量,使得制作专业电子书文档更现实

关于Markdown、RMarkdown、pandoc、LaTeX、Typora、ML标记语言和epub、mobi等电子书格式,不赘述。

一 如果熟悉LaTeX,没必要入Markdown的坑

最近听信了一些介绍,走向了Markdown的坑,使用的是Typora和RMarkdown。Markdown有它的优势,比如凭空起一篇文稿,不用再去记忆一些文档模板命令了,比如\documentclass和一堆堆的\begin、\end、\section、\subsection、\emph{}、\textbf{}等等,要么被彻底省略了,要么被#和##、*和**所取代。

相对LaTeX,Markdown简化之处甚多。当然Markdown的出现,绝对不是为简化LaTeX,原来的时候它们没什么联系的,只是因为二者天生都是用标记语言来排版文档。

Markdown的好处,便是语法太简单,而且部分语法与html语法兼容,比LaTeX的学习与熟练的台阶,不知道要降低了多少。如果恰好在RStudio里面使用R语言,那RMarkdown应该是使用者唯一的文档编辑器的选择,因为R代码能够把执行结果放在文档里,这种功能再没有第二个编辑器能做到了。

Markdown似乎只是适合写些小文档的场合,比如读书笔记,并不太适合写长篇。估计Markdown主打的就是短小精悍。Typora和pandoc加在一起才100M多点儿,与动耽1G的Office相比,简直是瑞士军刀,相当犀利。

但是,Markdown也有诸多不便:

⑴插图尺寸的调整。比如我习惯把图像分辨率按600dpi来输出,这样一旦打印,会相当清晰。但是如果这样的图像直接插入到markdown,图像就会非常大,解决的办法是写成

<img src="C:\3.jpg"style="zoom:40" div />

或者

<img src="C:\3.jpg"style=“width:200px height:200px” />

要特别注意上面那个zoom,实际是缩小60%的意思。下面的写法里height可以省略。

此外,在RMarkdown里,以![](.\97.png)插入的图像,默认是以Base64序列化字符串内嵌入到输出的html文件里面的,即使未来原始图像丢失,我们仍然可以通过输出后的html文件还原一个图像出来——这使RMarkdown生成的文档比较大,这可能是为了保存R语言的执行结果的原因;当使用html语法插入图像时,图像文件并不总是包含在输出的html文件里。但无论以哪种方式插入图像,Typora总不会把文件包含在html文件里。这比较怪。

⑵单行公式、图像等的居中显示。Markdown里,图像不设置位置,是左对齐,写成

<divalign="center">![caption](.\97.png)</div>

在RMarkdown里输出后才能居中显示,在typora直接显示为居中。

在插入单行公式时,typora使用$$eqn$$并不显示为居中,在RMarkdown里则显示为居中;输出后,二者均显示居中。

⑶字体大小。通篇设置字体大小

<fontsize=3><!--设置字体大小为3倍,置文档最前-->

内容</font><!—chrunk,置文档最后-->

一些稍麻烦的设置,不得不借助html语法和css样式。若对文档细节有要求,反倒不如LaTeX方便了,因为LaTeX有浩如烟海的极丰富的宏包加持。

二 Markdown并非一无是处,pandoc让Markdown神通广大

安装了Typora,或者在RStudio里面安装了RMarkdown之后,md文档通过pandoc可以在诸多文档格式之间转换:Word、pdf、html、rtf、LaTeX、epub、OPML以及图像(png&jpg)及相关格式。

我们关心的,是两件有趣的事:

⑴markdown向word格式的转换,即md→doc&docx。

⑵pdf、epub、mobi、azw3等电子书的制作,即md→epub。

2.1 关于md→doc&docx

先说向Word的格式转换。

因为在中学里使用Markdown或LaTeX的人太少了,基本没有可能用md或tex格式与他人文稿沟通,但是你不可能不面对每天要写不少文稿,所以,Word(doc&docx)格式是不得不考虑的转换。

事实上,Word的doc&docx格式是相当糟糕的文档格式,坏文件和不明原因的文件损坏经常发生,然而这种事情在md或tex文档格式上是绝无可能发生的。

无论是Typora,还是RMarkdown,直接输出Word格式就可以了。

有两个事情值得一提。

一个是,如果在md文件里以$$或$$$$输入了公式,在导出为docx时,会被自动转化成word的ML公式,就是在word 2007以上版本的ALT+=输入的公式。如果输出的是doc格式,这些公式根本就不会被转化,甚至Typora编辑器彻底就不让你随便玩doc格式——没有这个选项。

另一个与doc&docx无关的话题,是Typora默认就支持输出pdf,而RMarkdown则需要一通复杂的设置,但总还都能实现我们需要的功能。特别是有人提出在RMarkdown里如何输出中文Beamer的问题,事实上,借助rticles宏包提供的CTex Documents模板,输出为Article再简单修改一下即可转换为Beamer幻灯片,绝对比在RMarkdown里灵活得多。Markdown的出现,并不能替代LaTeX,Markdown控制功能太弱了。

2.2 关于md→epub&mobi&azw&6寸pdf

再说电子书文档。

现在全社会都在搞花式阅读,手机以及移动的阅读器、电子书和电纸书等已经很普及了。我们用Markdown借助pandoc就可以方便的生成epub格式,再借助Calibre转成mobi&azw&6寸pdf格式。

为什么不是直接md格式转换到pdf呢?页面尺寸和适于手机阅读的行距等,Calibre做得比其他工具出色得多。只此一点足够作为理由。

导出电子文档在手机阅读器里的表现:

总之,Markdown让我们把文档转换成其它格式提供了太多太多的方便。

三借助pandoc转化LaTeX为doc&docx

之所以要把LaTeX转换成Word格式,就是因为至少在中学阶段里,使用LaTeX的人太过稀少。若干年前,LaTeX转Word,一般是使用Tex2Word软件,但是它收费;另一个办法是使用TTH(http://hutchinson.belmont.ma.us/tth/),经由html转到word,其中的LaTeX公式会转化成图片格式而不能被再次编辑。

现在Markdown标记语言排版经由pandoc的转化,提示我们,可以通过pandoc转化tex到Word格式去。尝试之后,发现效果可以接受,只需注意到⑴pdf图像问题、⑵beamer的\only<presentation>{}和⑶UTF8编码问题。

Pandoc转化word是以cmd命令进行的,以下为CTRL+R运行在cmd窗口中的情况形,注释为后期添加,以#领起。

Microsoft Windows [版本 10.0.17134.523]

(c) 2018 MicrosoftCorporation。保留所有权利。

C:\Users\Administrator>pandocC:\Example\da.tex -o C:\elec.doc

Unknown writer: doc

# pandoc命令只在正常安装了pandoc才能正常执行,否则会提示错误命令

# 失败,不能直接输出为doc格式

C:\Users\Administrator>cdc:\example

c:\Example>pandocda.tex -o d:\e.docx

pandoc: Cannot decodebyte '\xb1': Data.Text.Internal.Encoding.decodeUtf8: Invalid UTF-8 stream

# 错误提示的意思是tex文件不是UTF8格式的

# 使用记事本打开,然后保存成UTF8格式

c:\Example>pandocda.tex -o d:\e.docx

# 正常执行,得到e.docx文件

c:\Example>cd c:\22

# 进入另一目录,实验其他功能

c:\22>pandoc 22.tex-o 22.docx

# 正常执行

c:\22>pandoc 22.tex-o 22.doc

Unknown writer: doc

# 不能直接转doc

c:\22>pandoc 22.tex-o 22.rtf

[WARNING] Could notfetch resource '0.pdf': image is not a jpeg or png

[WARNING] Could notfetch resource 'pgf1.pdf': image is not a jpeg or png

[WARNING] Could notfetch resource 'pgf3.pdf': image is not a jpeg or png

[WARNING] Could notfetch resource '1.pdf': image is not a jpeg or png

[WARNING] Could notfetch resource '2.pdf': image is not a jpeg or png

[WARNING] Could notfetch resource '3.pdf': image is not a jpeg or png

[WARNING] Could notfetch resource '6.pdf': image is not a jpeg or png

[WARNING] Could notfetch resource '7.pdf': image is not a jpeg or png

[WARNING] Could notconvert TeX math '\sqrt{\frac{13}{17}}', rendering as TeX

# 转rtf格式时会提示pandoc不能转pdf格式图像,只能转jpg和png

# 转rtf时不能转LaTeX数学公式

# 实际测试,对使用的外来宏包,都能正常转换

c:\22>pandoc 22.tex-o 22.html

[WARNING] Could notconvert TeX math '\sqrt{\frac{13}{17}}', rendering as TeX

# 转html也不能转换LaTeX公式,但保留的原始标记语言信息并不丢失

c:\22>rem “OK!OVER!”

c:\22>

(0)

相关推荐