如何打造基于 markdown 的论文工作流程(一)
作者简介Introduction
数据匠(baidao.net):http://www.baidao.net/
往期回顾
谈谈R中的乱码(一)
谈谈R中的乱码(二)
谈谈R中的乱码(三)
R 包 `ezdf`的讲解
这两年来 markdown
越发流行于各类网络客户端系统,各大博客系统、wiki系统、团队协作系统都纷纷支持 markdown
语法,支持 markdown
的编辑器也越来越多。但真正将 markdown
用于学术论文或出版物写作的实践却并不多。在此介绍一下本人自2012年来就开始打造的一套工作流程。
先介绍流程的两大基石:
knitr 背后的功臣——pandoc
markdown
起源于email写作中的简单格式,其语法非常简单,可能对 markdown
略有耳闻的人会觉得它不过是个玩具。其实不然,markdown
本身并非一个统一的语法,事实上有很多版本的实现。比较有经验的R
用户可能经常用 knitr
来做一些数据报告,甚至用 knitr book
来写数据类长篇大作,或许你们还不知道,knitr
背后有个默默无名的英雄—— pandoc。这是一款由一名伯克利大学哲学系教授领衔开发的 markdown
超级语法及文档格式转换工具。与普通网页版的简易 markdown
语法不同,pandoc
可以说是学术 markdown
,除了常规的 markdown
元素以外,它还支持学术论文中常见的公式、表格、参考文献、脚注、尾注的格式化输出。 不仅如此,它还是一款超级格式机,能与大量的文档格式进行转换,它支持的格式是如此之多我就不贴大图了,仅手绘一张 pandoc
流程图做一示意:
所以,有了 pandoc
这个超级工具,社科量化小白用户再也无需羡慕理工科学生手里能输出漂亮公式的 latex
了,用 markdown
同样能输出漂亮公式,beamer
幻灯片也不在话下,再也不用啃三个月 latex 手册了。而且,印刷论文的时候可以用漂亮的pdf输出,要求论文电子版存档就交个 word 交差,何其方便!
思维脑图写作——mindmanager
前面说了简单数据报告可以采用 knitr
,但完整的社科类论文写作还是很难完全依赖它的。除了社科类论文中,数据分析在文章中占比不大以外,更重要的是思维差异。写作思维与编程思维是完全不同的!数据分析过程,强调数据结构和处理逻辑的一致性,强调代码的重用性,尽量避免重复代码,而对计算结果进行分析和写作则是基于分类和演绎的逻辑来进行,很多时候,我们需要用多种口径检查计算结果,但并不会将其都放在论文中。个人经验,最有效的方式还是把这二者分开,各行其是才好。
脑图类软件无疑是整理构思、研究素材、论文结构的极好工具。脑图类软件也有很多,收费的、开源的、在线的,那么是不是随便搞个看着顺眼的就可以了?当然不是了。整理构思、管理素材固然是用脑图软件的一大目的,但是还得将它与 makrdown
文字相结合起来。该软件比如符合两个要求:
能够添加笔记:这条就杀掉了大多数在线脑图;
提供二次开发 API:添加笔记的目的是用来书写内容,而 API 则是为这些笔记的输出提供各种可能性。
所以我选择了 mindmanager
:丰富的 OLE 接口,可以用来任意自定义脑图结构和笔记的输出方式。例如如何划分章、节和小节,第四级以下的脑图节点是否还作为小小节;不同输出版本的生成,例如下图中,标记有 advanced
的单独输出为一个版本。
有 API 的好处是,还可以对笔记内容在变成 markdown
正文前进行处理。例如可以将笔记中的图片直接转为 [img](path_to_image)
这样的语法,充分利用笔记本身所见即所得的功能。例如分枝标题上的 -
表示不显示该小节标题:
更进一步,在笔记内部进行再分页、分章节也完全不是问题。同一个脑图,即可以输出为文章,也可以输出为幻灯片,一切取决于你的相像!最后,mindmanager
的 OLE 接口语法是如此简单,只需要简单的 visual basic
知识就足以搞定。
流程整合:Paper Composer
有了上面两大基石的加持,只需小小地在 mindmanager
OLE 接口上下点功夫,论文编译器就出台了!
主界面来了,嗒哒!
功能也不多,随想随加:
输出的
markdown
文件存放路径;导出脑图范围:全部 vs. 分枝;
章节层级;
是否作为
Rmd
输出,以供knitr
运算;参考文献格式化;
根据 tag 标识选择不同分枝输出;
最终格式选择:Word, HTML, pdf;
还剩了一些问题,例如:
参考文献格式化;
R 的输出如何整合;
导出到 Word 时的问题:模板设置、表格图片自动编号;表格边框设置;
请持续关注。
大家都在看
2017年R语言发展报告(国内)
精心整理 | R语言中文社区历史文章合集(作者篇)
公众号后台回复关键字即可学习
回复 爬虫 爬虫三大案例实战
回复 Python 1小时破冰入门回复 数据挖掘 R语言入门及数据挖掘
回复 人工智能 三个月入门人工智能
回复 数据分析师 数据分析师成长之路
回复 机器学习 机器学习的商业应用
回复 数据科学 数据科学实战
回复 常用算法 常用数据挖掘算法
如何打造基于 markdown 的论文工作流程(一)相关推荐
- 实施:GitHub + MarkDown 文档系统的工作环境部署及工作流程说明 | 技术传播
前段时间有幸参与了开源社区的活动,并且借由 Apache Pulsar 项目实践了 GitHub + MarkDown 的文档开发.在与开源社区的童鞋进行交流的过程中了解到,对于非技术专业的TCer, ...
- 基于模型的嵌入式开发流程_如何使用基于模型的测试来改善工作流程
基于模型的嵌入式开发流程 Unit testing is not enough – so let's start using model-based testing to improve our wo ...
- 设计自己的基于Selenium 的自动化测试框架-Java版(2) - 定义自己的工作流程
设计自己的基于Selenium的自动化测试框架-Java版(2) -定义自己的工作流程 Work flow chart 上图是整个工作流程,红色虚线上面的需要手动来完成,红色虚线下面的实现自动化. 我 ...
- 基于区块链的去中心化存储(区块链存储)的工作流程
引入 个人电脑上存储有限,而且如果硬盘损坏数据丢失的话,也不容易恢复.因此很多人愿意把数据上传到云盘里,也就是云存储.但是云存储是服务提供商控制的,比如阿里云,百度云等,我们称为中心化的存储 ,人们对 ...
- 《社会调查数据管理——基于Stata 14管理CGSS数据》一第2章 数据管理的流程及内容2.1 数据管理的工作流程...
本节书摘来自异步社区<社会调查数据管理--基于Stata 14管理CGSS数据>一书中的第2章,第2.1节,作者 唐丽娜,更多章节内容可以访问云栖社区"异步社区"公众号 ...
- 基于Intel 集成显卡的 FFmpeg 调用 VAAPI 硬件解码零数据拷贝链接推理引擎工作流程的实现
概述 在视频处理流程中,视频的解码通常在 CPU 中进行,若用户需要使用集成显卡进行深度学习推理,解码数据需要从 CPU的缓存中拷贝至集成显卡中进行推理.本文旨在通过集成显卡进行硬件解码,使用FFmp ...
- 基于SSH开发HR(人力资源管理系统)简单工作流程系统 课程设计 大作业 毕业设计
基于S2SH开发HR(人力资源管理系统)简单工作流程系统(大作业/毕业设计) 开发环境: Windows操作系统 开发工具:Myeclipse+Jdk+Tomcat+MYSQL数据库 运行效果图: 基 ...
- 基于git的工作流程
本文针对的是追求极致.快速的产品响应团队的.以下的观点和内容都是围绕这个主题,暂时不涉及个人学习和团队学习. 在说工作流程之间,想说一下我们平常工作中遇到的一些困惑或者说现象 在一个团队里,同时有好多 ...
- 使用Typora+PicGo+Gitee打造全新Markdown博客创作环境
使用Typora+PicGo+Gitee打造全新Markdown博客创作环境 文章目录 第一部分:概述 1.1 问题来源 1.2 软件简介 第二部分:实现 2.1 软件下载 2.2 GiTee账户令牌 ...
- 你的生产型ML复现不了,可能是工作流程出了问题
2020-10-19 14:33:28 选自maiot blog 作者:Benedikt Koller 机器之心编译 编辑:Panda.张倩 在机器学习社区,越来越多的人开始讨论研究的可复现性,但这些 ...
最新文章
- Asp.Net Core 第02局:Program
- 一个可供中小团队参考的微服务架构技术栈
- 【STM32】FreeRTOS下载和介绍
- API设计原则 - Qt官网的设计实践总结
- silverlight中数据绑定讲解
- jaxb注解使用_使用JAXB时
- 弹弹堂sf发布网_私服冒险岛,新开私服冒险岛,心动sf冒险岛发布网,最新开的私服冒险岛应该如何快速的获取魅力呢?...
- html + css + js 实现简易计算器
- linux中的TC(TrafficControl)详细说明
- pytest测试框架(六)---使用skip和skipif跳过测试用例
- c语言处理机调度实验报告,操作系统实验处理机调度C语言实现.docx
- Java语言程序设计(基础篇)课后答案
- python word 表格最大列数_Excel表格中的行数和列数的最大是多少?
- geotiff.js的初步使用
- 泰国大师赛国羽两银收官 林丹决赛不敌骆建佑
- js中的symbol详解
- 生活娱乐 360安全卫士和QQ大战
- C++实现复杂链表的复制
- 阵列信号处理仿真二——波束方向图的绘制
- Macwk 挂了?替代的Mac软件下载网站来了