bookdown - 撰写和发表自己的网络书籍/文档
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进阶语法
插入数学公式
插入跳转链接
插入参考文献
参考:
bookdown - 撰写和发表自己的网络书籍/文档的更多相关文章
- 使用 VS Code 撰写 Markdown 文档
众所周知, VS Code 是微软和社区一起开发的一款很优秀的高级代码编辑器.它不仅可以写出一手好代码,还能写出一篇好文章.利用 Markdown 就可以写出一篇排版美观的技术文章了. 而 Markd ...
- Linux企业级项目实践之网络爬虫(30)——通过查阅RFC文档扩充更加复杂的功能
HTTP是一种很简单的请求.响应式协议,客户端发送一个请求.服务器返回一个响应.HTTP 1.1 版本规范由 RFC2616 定义.了解了 HTTP请求.响应消息在TCP数据流中的格式,很容易使用纯 ...
- 连接SQLServer2005失败--[Microsoft][ODBC SQL Server Driver][DBNETLIB]一般性网络错误。请检查网络文档
连接SQLServer2005失败,错误信息: 错误类型:Microsoft OLE DB Provider for ODBC Drivers (0x80004005)[Microsoft][ODBC ...
- 为什么需要提前撰写Spec文档
Joel on Software(中文名叫<Joel软件随想录>)算得上是一本旧书了,但里面的建议和讨论,真的是历久弥新.特别是,Joel是个有趣.牛逼的家伙:前微软Excel的职员.St ...
- 解决CPC撰写文档报错问题“无法获取“AxforApplication”控件的窗口句柄。不支持无窗口的 ActiveX 控件”
最近公司需要把官方CPC电子申请移植到项目中,在移植完成后,撰写文档总是出现“无法获取“AxforApplication”控件的窗口句柄.不支持无窗口的 ActiveX 控件”,另楼主头疼很久,网上寥 ...
- 撰写POPUSH需求文档
不当家不知柴米贵,撰写了正规的软件需求文档才知道软件工程的复杂性 感谢@洪宇@王需@江林楠下午的加班加点,五个人正闷在406B奋斗中,加油!
- 【Ansible 文档】【译文】网络支持
Networking Support 网络支持 Working with Networking Devices 使用网络设备 自从Ansible 2.1开始,你现在可以使用成熟模型 - 编写 play ...
- TCPIP网络协议层对应的RFC文档
原文地址:TCPIP网络协议层对应的RFC文档作者:西木 RFC - Request For Comments 请求注解 TCP/IP层 网络协议 RFC文档 Physical Layer Data ...
- 一款APP的交互文档从撰写到交付
我第一份工作的设计总监是前百度设计师,34岁,一线设计12年:今年聊天说转了产品总监,如今39岁还活跃在行业中…… 我第二份工作的部门总监是前腾讯工程师,38岁,一线开发14年:2年前在Q群里跟我们说 ...
随机推荐
- 如何选择优秀的APS系统供应商?问自己这几个问题!
高级的计划和排程和生产排程软件的好处是巨大的.然而,生产排程软件不是商品,尚不能保证您选择的任何高级的计划和排程软件能满足您的所有需求. 那么,我们来谈谈如何选择适合你的公司最好的生产排程软件.这需要 ...
- 图说jdk1.8新特性(4)--- stream
总述 jdk1.8引入了Stream相关的API,通过该API.可以实现流式编程,使你写代码的时候行云流水 Stream使得集合的转换变得更加简单,原来可能需要写多个for循环或者多个if判断的,直接 ...
- 【RMAN】TSPITR--RMAN表空间基于时间点的自动恢复
[RMAN]TSPITR--RMAN表空间基于时间点的自动恢复 一.1 BLOG文档结构图 一.2 前言部分 一.2.1 导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其 ...
- MySQL Disk--MySQL磁盘问题排查
存储问题排查 1.检测磁盘空间使用率 df -lh 注意系统目录的可用空间 2.检查磁盘inode使用 df -i 参考:https://www.cnblogs.com/gaogao67/p/1088 ...
- 查看kafka版本
kafka没有提供version命令,不确定是否有方便的方法,但你可以进入kafka/libs文件夹. 或: find / -name \*kafka_\* | head -1 | grep -o ' ...
- ubuntu18上解决Qt无法输入中文
系统:Ubuntu 18.04.3 64bit 软件: QtCreator 4.8 安装Ubuntu18.04 时已经安装fcitx框架的搜狗输入法,在此不再安装fcitx及搜狗输入法 只需要安装fc ...
- Mysql【第二课】
- scrapy框架爬取糗妹妹网站妹子图分类的所有图片
爬取所有图片,一个页面的图片建一个文件夹.难点,图片中有不少.gif图片,需要重写下载规则, 创建scrapy项目 scrapy startproject qiumeimei 创建爬虫应用 cd qi ...
- luoguU60884 【模板】动态点分治套线段树
题目连接:https://www.luogu.org/problemnew/show/U60884 题意:有N个点,标号为1∼N,用N−1条双向带权通道连接,保证任意两个点能互相到达. Q次询问,问从 ...
- Non-boring sequences(启发式分治)
题意:一个序列被称作是不无聊的,当且仅当,任意一个连续子区间,存在一个数字只出现了一次,问给定序列是否是不无聊的. 思路:每次找到一个只出现了一次的点,其位置的pos,那么继续分治[L,pos-1], ...