BOOKDOWN官网 - bookdown上有不少人发布了自己的电子书

bookdown-demo (一个demo,github源码)- Rstudio出品,Yihui Xie开发,著名单细胞课程在用,y叔也在用 【强力推荐】

bookdown的优势

  • 完全开源,向收费说不
  • 完全自定义,想干啥就干啥
  • 有Rstudio背书,可以大胆的长期使用
  • 静态网站,很容易部署到Internet
  • 支持LaTeX,可以直接导出tex文档
  • 导出排版好的PDF文档和kindle文档
  • 使用十分方便,安装后可以专心使用RMarkdown写作
  • 写完后直接排序组合,一键build成书

R Markdown的优势(值得系统学习)

  • 代码与文本共存,程序员的最爱
  • 轻量级,再大的文件也有着极快的读取速度
  • 文末可以列出参考文献,科研狗的最爱

目前生信领域有两个用bookdown写得比较好的文档:

Analysis of single cell RNA-seq data- Hemberg / github

Data Integration, Manipulation and Visualization of Phylogenetic Trees - ggtree

快速开始(里面有详细教程)

  • 完全开源,直接fork到自己的github(参考),然后git pull,写完直接push。
  • 不想开源,那就下载bookdown-demo,可以用Dropbox来进行跨平台的编辑。

安装bookdown的R包

install.packages("bookdown")  

用RStudio打开bookdown-demo.Rproj

打开R Markdown文件:index.Rmd,点击右侧的Build,生成初始的网页html文件,以及其他文件(PDF、epub,tex等)

撰写文档的基本逻辑

编写一个一个的Rmd文档,注意里面的标题要规范,最终书的标题就是从每一个Rmd文档中提取出来的。

修改 _bookdown.yml 文件,里面的 rmd_files: ["index.Rmd", "intro.Rmd"] 就是书籍的章节顺序,它会完全按顺序组合,一级标题就是一个章,二级标题就是章下面的一个小结,如此展开,Rmd的文件数量不限,最终只归总标题。

_bookdown.yml 文件里的 book_filename 是 PDF 文件的名字,index.Rmd 文件里的title才是真正的书名。

掌握了这些基本就可以开始写书了。

内容与形式彻底分离了,内容在Rmd里,以后不管bookdown这个包如何更新,都可以迅速完成网站的迁移。

使用细节

使用以下功能能让你的book更加专业,甚至能让你直接使用本工具来写毕业论文。

去掉一些不必要的花哨功能

去掉右侧的Facebook等链接,得改包。

优化搜索功能,搜索是确实烂,得改进包。

插入数学公式

插入代码

文内跳转

随时跳转到文档的任意一处,在标题后面添加 {#label} 来标记一个地方,然后用 \@ref(intro) 来构建跳转链接。

图像和表格也可以跳转,只不过在其表头要添加标记,跳转格式一样。

参考文献

参考文献稍微复杂些,需要在 book.bib 文件里手动输入参考文献。

我看有人用 betterbib,可以生成更为标准的参考文献。

注意:就算把文献添加到bib文件了,如果文中没有引用,那也还是不会出现在文中的。

建议使用 zotero-better-bibtex 插件,浏览文献官网,用插件导入文献zotero,然后到处LaTeX的参考格式,加到bib文件里即可。


可以接着谢益辉做的事:

搭建一个平台,构建合适的接口,让每个人都能开发自己的book;

主题,主题要能满足每个人的需求;

封面,自定义封面;

自定义功能;

优化搜索;

创建一个网站,能够自动读取github的Rmd文件,来生成一个html和pdf的书籍。


RMarkdown的基本语法

基本的markdown语法

标题,一级二级三级等

有序无序列表

粗体斜体

专有引用

段落引用

分割线

插入链接

插入图片

插入表格

插入视频

插入代码

RMarkdown进阶语法

插入数学公式

插入跳转链接

插入参考文献

参考:

Markdown基本语法

bookdown - 撰写和发表自己的网络书籍/文档的更多相关文章

  1. 使用 VS Code 撰写 Markdown 文档

    众所周知, VS Code 是微软和社区一起开发的一款很优秀的高级代码编辑器.它不仅可以写出一手好代码,还能写出一篇好文章.利用 Markdown 就可以写出一篇排版美观的技术文章了. 而 Markd ...

  2. Linux企业级项目实践之网络爬虫(30)——通过查阅RFC文档扩充更加复杂的功能

    HTTP是一种很简单的请求.响应式协议,客户端发送一个请求.服务器返回一个响应.HTTP 1.1 版本规范由 RFC2616 定义.了解了 HTTP请求.响应消息在TCP数据流中的格式,很容易使用纯 ...

  3. 连接SQLServer2005失败--[Microsoft][ODBC SQL Server Driver][DBNETLIB]一般性网络错误。请检查网络文档

    连接SQLServer2005失败,错误信息: 错误类型:Microsoft OLE DB Provider for ODBC Drivers (0x80004005)[Microsoft][ODBC ...

  4. 为什么需要提前撰写Spec文档

    Joel on Software(中文名叫<Joel软件随想录>)算得上是一本旧书了,但里面的建议和讨论,真的是历久弥新.特别是,Joel是个有趣.牛逼的家伙:前微软Excel的职员.St ...

  5. 解决CPC撰写文档报错问题“无法获取“AxforApplication”控件的窗口句柄。不支持无窗口的 ActiveX 控件”

    最近公司需要把官方CPC电子申请移植到项目中,在移植完成后,撰写文档总是出现“无法获取“AxforApplication”控件的窗口句柄.不支持无窗口的 ActiveX 控件”,另楼主头疼很久,网上寥 ...

  6. 撰写POPUSH需求文档

    不当家不知柴米贵,撰写了正规的软件需求文档才知道软件工程的复杂性 感谢@洪宇@王需@江林楠下午的加班加点,五个人正闷在406B奋斗中,加油!

  7. 【Ansible 文档】【译文】网络支持

    Networking Support 网络支持 Working with Networking Devices 使用网络设备 自从Ansible 2.1开始,你现在可以使用成熟模型 - 编写 play ...

  8. TCPIP网络协议层对应的RFC文档

    原文地址:TCPIP网络协议层对应的RFC文档作者:西木 RFC - Request For Comments 请求注解 TCP/IP层 网络协议 RFC文档 Physical Layer Data ...

  9. 一款APP的交互文档从撰写到交付

    我第一份工作的设计总监是前百度设计师,34岁,一线设计12年:今年聊天说转了产品总监,如今39岁还活跃在行业中…… 我第二份工作的部门总监是前腾讯工程师,38岁,一线开发14年:2年前在Q群里跟我们说 ...

随机推荐

  1. 10分钟学会js处理json常用方法

    一.json定义 JSON ( JavaScript Object Notation) ,它是一串字符串 只不过元素会使用特定的符号标注. {} 双括号表示对象 [] 中括号表示数组 "&q ...

  2. 大数据系列文章-Hadoop基础介绍(一)

    Hadoop项目背景简介 2003-2004年,Google公开了部分GFS个Mapreduce思想的细节,以此为基础Doug Cutting等人用了2年的业余时间,实现了DFS和Mapreduce机 ...

  3. 数据库与数据仓库的区别实际讲的是OLTP与OLAP的区别

    什么是数据仓库 数据仓库,英文名称为Data Warehouse,可简写为DW或DWH.数据仓库,是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合.它出于分析性报告和决策支持目的而创建. ...

  4. Cypress自动化环境搭建

    1.Cypress 下载: 官网下载,下载后直接解压即可,解压后便可单机exe文件打开 Ps:直接打开exe是会报错找不到json文件的,所以还要安装依赖环境 运行cypress项目前,必须vue-c ...

  5. CSS的一个小bug,Gradient has outdated direction syntax. New syntax is like `to left` instead of `right`.

    在vue重新渲染页面的时候,报了一个错误: 翻译了报错信息后,Gradient has outdated direction syntax. New syntax is like to left in ...

  6. 【Mybatis异常】Caused by: java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).

    一.错误原因分析 从错误提示可以看出:实际传入的参数大于sql中待设置的参数,也就是sql中的?少于参数或?根本没有产生原因:  ?号被单引号包围 如: sql += " and artic ...

  7. 【RocketMQ】同一个项目中,同一个topic,可以存在多个消费者么?

    一.问题答案 是不可以的 而且后注册的会替换前注册的,MqConsumer2会替换MqConsumer,并且只结束tag-2的消息 /** * @date 2019/05/28 */ @Compone ...

  8. Node.js 入门到干活,10 个优质项目就够了!

    Node.js 在很多大公司都有不错的实践,比如:淘宝.天猫 Web 版,很多页面都是在 Node 服务器上渲染的.还有各种脚手架.前端打包发布工具.构建生态的小工具,也基本都是 Node.js 编写 ...

  9. C++(五十) — 容器中元素满足的条件

    容器中的内容必须满足三个条件: (1)无参构造函数 (2)拷贝构造函数 (3)重载 = 运算符 #define _CRT_SECURE_NO_WARNINGS #include <iostrea ...

  10. 1220 Vue与Django前后端的结合

    目录 vue的安装 Vue前端的设置 页面的分布 后台数据的替换 css样式 Django的配置 国际化配置 axios插件安装 CORS跨域问题(同源策略) 处理跨域问题: cors插件 axios ...