如何将电子书功能epub_book和kindlegen()用于现有的书籍记录文档?

时间:2017-05-19 15:48:23

标签: r r-markdown bookdown

我在github(即Hadley的R for Data ScienceEfficient R)上找到了几个记录文件,我想从源代码构建电子书。 Bookdown,其中写的文件,有几个功能,即epub_book()kindlegen()来构建一个电子书(而不是github书籍网站),我想用它,所以我可以阅读我的Kindle上的书。

我查看了bookdown documentation for those functions,但我不明白如何/在哪里使用这些函数来构建电子书文件和/或是否已经在代码中编写了我需要的输出选项编辑。

2 个答案:

答案 0 :(得分:1)

他们是结构。你应该做这样的事情

render_book("file.Rmd", epub_book())

建立电子书。一些变量可以传递给epub_book()。

您可以查看https://bookdown.org/yihui/bookdown/。这是一本关于减记书的书。

答案 1 :(得分:0)

您可以通过以下方式手动使用kindlegen()函数:

  1. 安装Kindlegen(这是Amazon提供的免费命令行工具,用于将.epub转换为.mobi)。
  2. 将Kindlegen的路径添加到PATH环境变量中。
  3. 运行R studio,构建.epub版本(“构建”面板(默认为右上部分)> Build book> bookdown::epub_book(取决于您的_output.yml配置)。
  4. 拥有epub版本后,在“控制台”面板中(默认情况下为左下角),运行bookdown::kindlegen()

Kindlegen将找出在哪里找到.epub版本,并将其转换为.mobi。


要将其添加到构建过程,您的_build.sh可能类似于以下内容(请注意最后一行):

#!/bin/sh

set -ev

Rscript -e "bookdown::render_book('index.Rmd', 'bookdown::html_book')"
Rscript -e "bookdown::render_book('index.Rmd', 'bookdown::pdf_book')"
Rscript -e "bookdown::render_book('index.Rmd', 'bookdown::epub_book')"
Rscript -e "bookdown::kindlegen()"

您的_output.yml需要为html_bookpdf_bookepub_book定义配置,如下所示:

bookdown::html_book:
  toc: yes
  css: style.css
  split_by: chapter
bookdown::pdf_book:
  includes:
    in_header: preamble.tex
  latex_engine: xelatex
  citation_package: natbib
  keep_tex: yes
  template: null
bookdown::epub_book: default

此后,Build book> All formats应该生成所有HTML,PDF,EPUB和MOBI格式。