作者简介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 的论文工作流程(一)相关推荐

  1. 实施:GitHub + MarkDown 文档系统的工作环境部署及工作流程说明 | 技术传播

    前段时间有幸参与了开源社区的活动,并且借由 Apache Pulsar 项目实践了 GitHub + MarkDown 的文档开发.在与开源社区的童鞋进行交流的过程中了解到,对于非技术专业的TCer, ...

  2. 基于模型的嵌入式开发流程_如何使用基于模型的测试来改善工作流程

    基于模型的嵌入式开发流程 Unit testing is not enough – so let's start using model-based testing to improve our wo ...

  3. 设计自己的基于Selenium 的自动化测试框架-Java版(2) - 定义自己的工作流程

    设计自己的基于Selenium的自动化测试框架-Java版(2) -定义自己的工作流程 Work flow chart 上图是整个工作流程,红色虚线上面的需要手动来完成,红色虚线下面的实现自动化. 我 ...

  4. 基于区块链的去中心化存储(区块链存储)的工作流程

    引入 个人电脑上存储有限,而且如果硬盘损坏数据丢失的话,也不容易恢复.因此很多人愿意把数据上传到云盘里,也就是云存储.但是云存储是服务提供商控制的,比如阿里云,百度云等,我们称为中心化的存储 ,人们对 ...

  5. 《社会调查数据管理——基于Stata 14管理CGSS数据》一第2章 数据管理的流程及内容2.1 数据管理的工作流程...

    本节书摘来自异步社区<社会调查数据管理--基于Stata 14管理CGSS数据>一书中的第2章,第2.1节,作者 唐丽娜,更多章节内容可以访问云栖社区"异步社区"公众号 ...

  6. 基于Intel 集成显卡的 FFmpeg 调用 VAAPI 硬件解码零数据拷贝链接推理引擎工作流程的实现

    概述 在视频处理流程中,视频的解码通常在 CPU 中进行,若用户需要使用集成显卡进行深度学习推理,解码数据需要从 CPU的缓存中拷贝至集成显卡中进行推理.本文旨在通过集成显卡进行硬件解码,使用FFmp ...

  7. 基于SSH开发HR(人力资源管理系统)简单工作流程系统 课程设计 大作业 毕业设计

    基于S2SH开发HR(人力资源管理系统)简单工作流程系统(大作业/毕业设计) 开发环境: Windows操作系统 开发工具:Myeclipse+Jdk+Tomcat+MYSQL数据库 运行效果图: 基 ...

  8. 基于git的工作流程

    本文针对的是追求极致.快速的产品响应团队的.以下的观点和内容都是围绕这个主题,暂时不涉及个人学习和团队学习. 在说工作流程之间,想说一下我们平常工作中遇到的一些困惑或者说现象 在一个团队里,同时有好多 ...

  9. 使用Typora+PicGo+Gitee打造全新Markdown博客创作环境

    使用Typora+PicGo+Gitee打造全新Markdown博客创作环境 文章目录 第一部分:概述 1.1 问题来源 1.2 软件简介 第二部分:实现 2.1 软件下载 2.2 GiTee账户令牌 ...

  10. 你的生产型ML复现不了,可能是工作流程出了问题

    2020-10-19 14:33:28 选自maiot blog 作者:Benedikt Koller 机器之心编译 编辑:Panda.张倩 在机器学习社区,越来越多的人开始讨论研究的可复现性,但这些 ...

最新文章

  1. Asp.Net Core 第02局:Program
  2. 一个可供中小团队参考的微服务架构技术栈
  3. 【STM32】FreeRTOS下载和介绍
  4. API设计原则 - Qt官网的设计实践总结
  5. silverlight中数据绑定讲解
  6. jaxb注解使用_使用JAXB时
  7. 弹弹堂sf发布网_私服冒险岛,新开私服冒险岛,心动sf冒险岛发布网,最新开的私服冒险岛应该如何快速的获取魅力呢?...
  8. html + css + js 实现简易计算器
  9. linux中的TC(TrafficControl)详细说明
  10. pytest测试框架(六)---使用skip和skipif跳过测试用例
  11. c语言处理机调度实验报告,操作系统实验处理机调度C语言实现.docx
  12. Java语言程序设计(基础篇)课后答案
  13. python word 表格最大列数_Excel表格中的行数和列数的最大是多少?
  14. geotiff.js的初步使用
  15. 泰国大师赛国羽两银收官 林丹决赛不敌骆建佑
  16. js中的symbol详解
  17. 生活娱乐 360安全卫士和QQ大战
  18. C++实现复杂链表的复制
  19. 阵列信号处理仿真二——波束方向图的绘制
  20. Macwk 挂了?替代的Mac软件下载网站来了

热门文章

  1. GET 和 POST请求的本质区别是什么?看完觉得自己太无知了...
  2. 为什么要进行URL编码!!!
  3. Java17,有史以来最快 JDK!
  4. 厉害,刚刚官方宣布 IntelliJ IDEA 2020.2 EAP4发布了!
  5. Linux Shell 流程控制语句实例
  6. GPU 编程 CPU 异同点_专业软件与CPU的性能相关性详细对比
  7. shell应用之下载rpm包
  8. a标签中执行js函数
  9. Spark环境搭建(下)——Spark安装
  10. Spring day03笔记