欢迎关注天下博客:http://blog.genesino.com/2016/11/bookdown-usage/
Jump to…
基本使用
安装必须软件
Demo示例
编译成书
Customize our bookdown
准备Rmd文件
基本规则
插入并引用图片(外部图片)
插入并引用表格(外部表格)
插入并引用表格(内部表格)
插入脚注
插入引文
准备YML配置文件
_bookdown.yml
_output.yml
其它定制
预览生成的WEB文件
References
bookdown是著名R包作者谢益辉开发的,支持采用Rmarkdown (R代码可以运行)或普通markdown编写文档,然后编译成HTML, WORD, PDF, Epub等格式。样式清新,使用简单,值得拥有。

在Bookdown的官网,有很多免费的用bookdown写的R书籍,如Hadley Wickham等撰写的《R for Data Science》,Roger D. Peng撰写的《R Programming for Data Science》, 陈总的《液体活检口袋书》,益辉的《R语言忍者秘笈》,《单细胞数据整体分析流程》https://hemberg-lab.github.io/scRNA.seq.course/index.html (初学单细胞分析可以完全照着这个,在学习过程中改进)。

还有很多基于Bookdown的教程,一时也想不起来,欢迎大家补充。我们前面转录组和R培训的教案也是用bookdown写作的,后续再调整下格式,出一批电子书和纸质书,有意向和需求的欢迎联系。

下面分2步讲述,自己如何构建一个Bookdown书籍,第一部分是通过bookdown示例了解其基本功能和使用,第二部分是个人在使用过程中碰到的问题和解决方式。

基本使用
安装必须软件

Rstudio或Pandoc二选一, bookdown必须安装。

Install Rstudio (version>1.0.0) (安装和使用见Rstudio)

Install Pandoc (version>1.17.0.2)或者参照here。如果系统新,可以直接使用系统自带的yum或apt-get;如果没有权限或系统比较老,Pandoc的安装可以使用conda,具体配置见Conda配置,配置好运行conda install -c conda-forge pandoc即可安装。

In R install.packages(“bookdown”)

Demo示例

克隆或下载https://github.com/rstudio/bookdown-demo示例文件,编译成功后,依葫芦画葫芦修改.

编译成书

运行下载的示例中的bash _build.sh,_book目录下就是成书.

The content of _build.sh is:

!/bin/sh

Rscript -e “bookdown::render_book(‘index.Rmd’, ‘bookdown::gitbook’)”

生成pdf需要安装好latex,如果不需要可以注释掉

Rscript -e “bookdown::render_book(‘index.Rmd’, ‘bookdown::pdf_book’)”
在前面的内容运转起来后,再看后面的内容。

Customize our bookdown
准备Rmd文件

基本规则

一个典型的bookdown文档包含多个章节,每个章节在一个R Markdown文件里面 (文件的语法可以是pandoc支持的markdown语法,但后缀必须为Rmd)。
每一个章节都必须以# Chapter title开头。后面可以跟一段概括性语句,概述本章的内容,方便理解,同时也防止二级标题出现在这一页。默认系统会按照文件名的顺序合并Rmd文件。
另外章节的顺序也可在_bookdown.yml文件中通过rmd_files:[“file1.Rmd”, “file2.Rmd”, ..]指定。
如果有index.Rmd,index.Rmd总是出现在第一个位置。通常index.Rmd里面也需要有一章节,如果不需要对这一章节编号的话,可以写作# Preface {-}, 关键是{-}。
在第一个出现的Rmd文件中 (通常是index.Rmd),可以定义Pandoc相关的YAML metadata, 比如标题、作者、日期等 (去掉#及其后的内容)。

title: "My book"
author: #可以写多行信息,都会被当做Author处理
- "CT"
- "CY"
- "chentong_biology@163.com"
date: "`r Sys.Date()`"
documentclass: article #可以为book或article
# 如果需要引用参考文献,则添加下面三行内容
bibliography: [database.bib]  #指定存储参考文献的bib文件,endote或zotero都可以导出这种引文格式
biblio-style: apalike  #设定参考文献显示类型
link-citations: yes
knitr::opts_chunk$set(echo = FALSE, fig.align="center", out.width="95%", fig.pos='H')
knitr::opts_chunk$set(cache = FALSE, autodep=TRUE)
set.seed(0304)

插入并引用图片(外部图片)

插入图片最好使用knitr::include_graphics,可以同时适配HTML和PDF输出。另外当目录下同时存在name1.png和name1.pdf文件时,会自动选择在HTML展示name1.png文件,在PDF输出中引入name1.pdf格式的文件。

图的标签为fig-name(不能有下划线),在引用时需使用如下格式\@ref(fig:fig-name),且fig.cap也要设置内容。

多张图可以同时展示,图的名字以vector形式传给include_graphics,需要设置out.width=1/number-pics 和 fig.show=”hold”。

Insert a single pic and refer as Figure \@ref(fig:fig-name). echo=FALSE will hide the code block and display the output of r command only. These options can be set globally as indicated below.

T8_2 37,106,941 5,566,034,285 138-150 47 Sanger / Illumina 1.9

插入并引用表格(内部表格)

插入表格推荐使用knitr::kable,只要提供数据矩阵,用r读取就可以了。

Check Table \@ref(tab:table-id) for detail.

a <- as.data.frame(matrix(rnorm(20), nrow=4))
knitr::kable(a, caption="Test table",  booktabs=TRUE)

插入脚注

text^[footnote] is used to get the footnote.

where type may be article, book, manual, and so on.^[The type name is case-insensitive, so it does not matter if it is manual, Manual, or MANUAL.]
插入引文

假如我们的bib文件中内容如下,如果我们要引用这个文章,只要写 [@chen_m6a_2015]就可以了。

@article{chen_m6a_2015,
title = {m6A {RNA} {Methylation} {Is} {Regulated} by {MicroRNAs} and {Promotes} {Reprogramming} to {Pluripotency}},
volume = {16},
issn = {1934-5909, 1875-9777},
url = {http://www.cell.com/cell-stem-cell/abstract/S1934-5909(15)00017-X},
doi = {10.1016/j.stem.2015.01.016},
language = {English},
number = {3},
urldate = {2016-12-08},
journal = {Cell Stem Cell},
author = {Chen, Tong and Hao, Ya-Juan and Zhang, Ying and Li, Miao-Miao and Wang, Meng and Han, Weifang and Wu, Yongsheng and Lv, Ying and Hao, Jie and Wang, Libin and Li, Ang and Yang, Ying and Jin, Kang-Xuan and Zhao, Xu and Li, Yuhuan and Ping, Xiao-Li and Lai, Wei-Yi and Wu, Li-Gang and Jiang, Guibin and Wang, Hai-Lin and Sang, Lisi and Wang, Xiu-Jie and Yang, Yun-Gui and Zhou, Qi},
month = mar,
year = {2015},
pmid = {25683224},
pages = {289–301},
}
准备YML配置文件

_bookdown.yml

配置输入和输出文件参数。

book_filename: “输出文件的名字”
output_dir: “输出目录的名字,默认_book”
language:
ui:
chapter_name: “”
_output.yml

配置产生输出文件的命令行参数。

bookdown::pdf_book:
template: ehbio.tex #使用自己定制的pandoc latex模板
includes: # or only customize part latex module
in_header: preamble.tex
before_body: latex/before_body.tex
after_body: latex/after_body.tex
latex_engine: xelatex
citation_package: natbib
keep_tex: yes
pandoc_args: –chapters
toc_depth: 3
toc_unnumbered: no
toc_appendix: yes
quote_footer: [“\VA{“, “}{}”]
bookdown::epub_book:
stylesheet: css/style.css
bookdown::gitbook:
css: style.css
split_by: section
config:
toc:
collapse: none
before: | #设置toc开头和结尾的链接

  • after: |
  • ct@ehbio.com
  • download: [pdf, epub, mobi]
    edit: https://github.com/rstudio/bookdown/edit/master/inst/examples/%s
    sharing:
    twitter: no
    github: no
    facebook: no
    其它定制

    不同的文件分别用于html和pdf输出

    in _bookdown.yml

    rmd_files:
    html: [“index.Rmd”, “file2.Rmd”]
    latex: [“index_pdf.Rmd”, “file3.Rmd”]

    Different render way

    !/bin/sh

    Rscript -e “bookdown::render_book(‘index.Rmd’, ‘bookdown::gitbook’)”
    Rscript -e “bookdown::render_book(‘index_pdf.Rmd’, ‘bookdown::pdf_book’)”
    配置全局变量自适应HTML和PDF输出

    library(knitr)
    output <- opts_knit$get("rmarkdown.pandoc.to")
    html = FALSE
    latex = FALSE
    opts_chunk$set(echo = FALSE, fig.align="center", fig.show="hold")
    if (output=="html") {html = TRUE
    }
    if (output=="latex") {opts_chunk$set(out.width="95%", out.height='0.7\\textheight', out.extra='keepaspectratio', fig.pos='H')latex = TRUE
    }
    #knitr::opts_chunk$set(cache = FALSE,  autodep=TRUE)
    set.seed(0304)

    Below text will only appear in HTML output.

    
    # EHBIO Gene Technology {-}
    

    Below command will only be executed and displayed in HTML output.

    add below lines to last Rmd file

    file.rename(from="bookdown_file_name.md",  to="bookdown_file_name.saved.md")

    包含子文件 (subfile.txt)

    ```
    cahce external file ref```{r mtime-func}
    mtime <- function(files){lapply(Sys.glob(files), function(x) file.info(x)$mtime)
    }<div class="se-preview-section-delimiter"></div>
    

Bookdown平台分享了哪些书籍,如何使用Bookdown分享书籍相关推荐

  1. 二手书籍交易网站毕业设计,二手书籍买卖平台毕设,二手书籍交易市场平台设计与实现毕业设计论文分析

    项目背景和意义 目的:本课题主要目标是设计并能够实现一个基于web网页的校园二手书籍交易系统,整个网站项目使用了B/S架构,基于python的Django框架下开发:用户通过登录网站,查询二手交易商品 ...

  2. 软文发布平台有哪些?优质软文发布渠道分享

    软文发布平台是指用户可以自助注册,注册之后可以自助发布的平台.简单说就是注册之后直接用,方便,简单,快捷.那软文发布平台有哪些?软文发布平台分为哪几类呢?今天就来分享一下. 随着互联网的发展,推广也逐 ...

  3. 公益是书籍是什么,公益书籍变现模式有哪些

    最近,我看到很多人在朋友圈里做公益书籍. 什么是公益书籍,公益书籍又是怎么进行变现的呢? 公益书籍主要是借助公益的逻辑,分发给各种家长.家长每次根据书单给孩子选择相应的书,15元左右就能拿到一套. 公 ...

  4. android视频分享功能吗,Unity 调用 Android 分享功能(基于ShareRec SDK视频分享)

    需求 Mob 平台是一个强大的提供分享功能的平台,为移动开发者提供 ShareSDK 社交分享.ShareREC 手游录像分享.短信验证码 SDK 及 BigApp 等免费服务. Unity 使用 S ...

  5. android开发分享到微信,Android开发之微信分享到好友,朋友圈(示例代码)

    3. 快速集成 第二步:配置AndroidManifest.xml 下面清单文件的配置是全部的,没有的平台就是不需要配置 1.添加权限 2.添加activity信息 (注意: tencent后面的ap ...

  6. php 微信分享链接怎么弄,PHP实现 微信--分享朋友链接

    不是些高深知识,但是第一次做,确实费了很多的时间.终于一点一点的扣了出来. 目前已经使用中. 解决这个问题,总共碰到了几次BUG,1是生成的签名不对,自己打印出来,在去微信的签名算法页面一一核对.这时 ...

  7. 书籍折页是什么效果_问题:WPS里页面设置中的拼页,书籍折页,反向书籍折页分别是什么意思?打印出来的效果是什么样的? 要双面打印...

    问题:WPS里页面设置中的拼页,书籍折页,反向书籍折页分别是什么意思?打印出来的效果是什么样的? 要双面打印 发表日期:2016-03-29 23:10:02 浏览:1121 分享给朋友: 导语专业顾 ...

  8. java微信分享朋友圈_java怎么实现微信分享到朋友圈功能

    展开全部 申请应用 AppKey 申请方法:访问友推网站后台,登录后进入应用列表,添加需要集成友推组件的 App,如下636f7079323131333532363134313032313635333 ...

  9. 微信中分享html5网页sdk,微信SDK网页分享

    步骤一:绑定域名 先登录微信公众平台进入"公众号设置"的"功能设置"里填写"JS接口安全域名". image.png 步骤二:引入JS文件 ...

最新文章

  1. 【引用】整理Sed与Awk学习笔记(一)
  2. 物联网改变生活——飞思卡尔技术论坛中国站侧记
  3. WebForm 【上传图片--添加水印】
  4. Design verification经验总结
  5. Golang 计算MD5值示例
  6. Python教程:threading中join与setDaemon的用法及区别讲解
  7. sql查询between and_SQL(二)——SQL简单查询
  8. 默认标准错误文件linux,Linux中标准输出和标准错误的重导向
  9. 24小时临时邮箱_实用网站 | 临时邮箱,悄悄来悄悄去~
  10. 如何用Pygame写游戏(九)
  11. xxs漏洞危害_PHP开发中经常遇到的Web安全漏洞防御详解
  12. 前阿里财务人告诉你:抛弃Excel,原来报表竟然还能这么快
  13. python之虚拟聊天室服务器详解
  14. Apache Roller 5.0 安装部署
  15. 历时三月,致远互联从“鸟巢”飞到哪了?
  16. BUUCTF MISC入门
  17. JS获取浏览器类型和版本信息
  18. Android 自定义跑马灯文字
  19. OpenCV技巧 | 常用格式图片保存为透明背景图片(附Python源码)-教你轻松制作Logo
  20. 数据结构算法题:回文数的实现

热门文章

  1. 【数据结构与算法】AVL树核心算法的Java实现
  2. Ubuntu 完全卸载 Apache2
  3. 苹果手机提醒事项怎么设置农历生日提醒?
  4. HTML script 标签
  5. 无线 iphone客户端测试白皮书(二)
  6. 《计算机科学与工程导论:基于IoT和机器人的可视化编程实践方法第2版》一1.1 计算机科学和工程的课程体系及职业发展...
  7. Essential Studio for Windows Forms发布2017 v2,持office 2016和主题定制
  8. Ubuntu 14.04 AM335x TI-RTOS 编译
  9. 往年程序员是怎样过“1024程序员节”的!程序员,今年又准备怎么过?
  10. 帆软与中国环境科学院合作,共同推进数字化管理建设