解决方案一:Kitabu
简介
Kitabu是使用ruby生成电子书的方案,它本身支持markdown转换为epub和html格式,不过通过调用其他指定的依赖
来转换为mobi、pdf、txt等其他格式。
依赖prince进行html向pdf的转换。
依赖html2text进行html向txt的转换。
依赖KindleGen进行epub向mobi的转换。
Kitabu支持代码高亮,默认使用codeRay,也可以安装 pygments.rb进行代替 。
Github地址:https://github.com/fnando/kitabu
安装方法
第一步 安装 Kitabu
$ gem install kitabu
安装完毕后就可以使用kitabu系列命令了。
第二步 检查需要的依赖是否安装
$ kitabu check
命令行中会给出哪些已经安装,哪些未安装。例如:
Prince XML: Converts HTML files into PDF files.
Installed.
KindleGen: Converts ePub e-books into .mobi files.
Installed.
html2text: Converts HTML documents into plain text.
Not installed.
pygments.rb: A generic syntax highlight. If installed, replaces CodeRay.
Not installed.
第三步 生成电子书制作目录
$ kitabu new mybook
在当前文件夹下生成一个名为mybook的文件夹,进入文件夹后可以看到如下文件结构:
mybook
├── code
├── config
│ ├── helper.rb
│ └── kitabu.yml
├── images
├── output
├── templates
│ ├── epub
│ │ ├── cover.erb
│ │ ├── cover.png
│ │ ├── page.erb
│ │ └── user.css
│ └── html
│ ├── layout.css
│ ├── layout.erb
│ ├── syntax.css
│ └── user.css
└── text
└── 01_Welcome.md
第四步 生成各种格式的电子书
$ kitabu export
生成的文件会放在output文件夹中。
使用中遇到的问题
转换PDF时中文无法解析
解决方法:
1.需要在本地安装中文字体。
2.在模板中添加中文字体。
PDF中的代码出现没有对齐的情况。
Prince XML: Converts HTML files into PDF files.
Installed.
KindleGen: Converts ePub e-books into .mobi files.
Installed.
html2text: Converts HTML documents into plain text.
Not installed.
pygments.rb: A generic syntax highlight. If installed, replaces CodeRay.
Not installed.
目前最常用的解决方案:pandoc
pandoc简介
如果你需要文件格式的转换,pandoc 可以成为你的瑞士军刀,它可以将下列格式: markdown, reStructuredText, textile, HTML
, DocBook, LaTeX, MediaWiki markup, OPML, Haddock 转换为:
HTML formats: XHTML, HTML5, and HTML slide shows using Slidy, reveal.js, Slideous, S5, or DZSlides.
Word processor formats: Microsoft Word docx, OpenOffice/LibreOffice ODT, OpenDocument XML
Ebooks: EPUB version 2 or 3, FictionBook2
Documentation formats: DocBook, GNU TexInfo, Groff man pages, Haddock markup
Outline formats: OPML
TeX formats: LaTeX, ConTeXt, LaTeX Beamer slides
PDF via LaTeX
Lightweight markup formats: Markdown, reStructuredText, AsciiDoc, MediaWiki markup, Emacs Org-Mode, Textile
Custom formats: custom writers can be written in lua.
pandoc支持多种格式的转换,可以直接用命令行由markdown转换为pdf。
$ pandoc demo.md -o demo.pdf
虽然这个命令表面上是直接转换,但实际还是通过先转换为LaTeX格式,再转为pdf的。
这个命令对我们没有实际意义。因为无法加载样式,也无法解析中文。实用情况下还是
需要将文档转换为html或者LaTeX文件格式,通过html模板或者LaTeX的tex模板进行样式定制。
LaTeX(Donald E. Knuth(高德纳)发明的)是一个科技出版界常用的格式。
pandoc安装
第一步,安装pandoc
$ sudo apt-get install pandoc
第二步,安装texlive
$ sudo apt-get install texlive-xetex texlive-latex-recommended texlive-latex-extra
TexLive是LaTeX的工具集,由于转换pdf必须先转换成LaTeX。
第三步,安装中文字体
$ sudo apt-get install ttf-arphic-gbsn00lp ttf-arphic-ukai ttf-wqy-microhei ttf-wqy-zenhei
本机必须安装有中文字体,否则无法正确的转换中文。
git clone git://github.com/fletcher/peg-multimarkdown.git
下载后是一个文件夹,cd进去后执行make命令即可。
用于将多个md文件一起进行转化为一个pdf文件。
怎么使用?
示例
官方网站
pandoc -N --template=mytemplate.tex --variable version=1.9 SLIDES.md --latex-engine=xelatex --toc -o example14.pdf
示例页里还有很多别的例子,其中将markdown文件转换成网页的sldes非常吸引人
pandoc -s –mathml -i -t dzslides SLIDES -o example14a.html
pandoc -s –webtex -i -t slidy SLIDES -o example14b.html
pandoc -s –webtex -t -t s5 SLIDES -o example14c.html