分享

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

 新用户5228KeDY 2021-10-10

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

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

把目录放前面:

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

Markdown并非一无是处,pandocMarkdown神通广大

2.1 关于mddoc&docx

2.2 关于mdepub&mobi&azw&6pdf

借助pandoc转化LaTeXdoc&docx

把结论也放前面:

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

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

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

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

关于MarkdownRMarkdownpandocLaTeXTyporaML标记语言和epubmobi等电子书格式,不赘述。

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

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

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

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

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

但是,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可以在诸多文档格式之间转换:WordpdfhtmlrtfLaTeXepubOPML以及图像(png&jpg)及相关格式。

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

markdownword格式的转换,即mddoc&docx

pdfepubmobiazw3等电子书的制作,即mdepub

2.1 关于md→doc&docx

先说向Word的格式转换。

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

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

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

有两个事情值得一提。

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

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

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

再说电子书文档。

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

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

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

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

三借助pandoc转化LaTeX为doc&docx

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

现在Markdown标记语言排版经由pandoc的转化,提示我们,可以通过pandoc转化texWord格式去。尝试之后,发现效果可以接受,只需注意到⑴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格式图像,只能转jpgpng

# 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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多