直击现场

我一直在思索用什么格式存储文档比较好。之前一直在用google docs,但是它的格式不公开,上传/下载的时候需要转换格式,转换的时候必然会丢失一些信息。于是后来想,那还是纯本文或者markdown吧。

但是Markdown方言很多,选哪个好?我考察了以下三个。

  1. pandoc . John MacFarlane写的,万能的转换器。对我来说一个缺点是它的是Haskell语言。

  2. commonmark . 这是John MacFarlane搞的对markdown进行标准化的一场伟大尝试。他给出了C语言和js的实现,其中C语言的很容易在windows下编译过去,代码简单易懂。可惜,没人买账。

  3. GitHub Flavored Markdown . 这个大概是现在事实性的标准了。因为代码都托管在github上,所以写文档的时候自然也就顺着 github 的要求来。我没有找到它的开源实现。但是,atom.io是github公司的,而这个编辑器的markdown实现用的是 marked . 我试了下还不错。

于是我就照着例子拿marked写了一个简单的脚本来把markdown文件转换成html

var marked = require('marked');
var fs = require('fs');
var inputFileName=process.argv[2];
var outputFileName=inputFileName.replace('.md','.html');
console.log("processing "+inputFileName);
var markdownString=fs.readFileSync(inputFileName,"utf8");
marked.setOptions({
highlight: function (code) {
return require('highlight.js').highlightAuto(code).value;
}
});
htmlbody=marked(markdownString);
html="<!DOCTYPE html><html><head><meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\" >\n"+
"<link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/highlight.js/8.5/styles/default.min.css\">\n"+
"</head><body>"+htmlbody+"</body></html>";
fs.writeFileSync(outputFileName,html,{encoding:"utf8"});

html header中再加上一行mathjax的js链接,就可以在markdown中支持数学公式了。

最新文章

  1. iOS之触摸及手势
  2. About_php_封装函数
  3. xheditor编辑器的使用
  4. .net软件自动化测试笔记(API-2)
  5. putty登录远程数据库Oracle
  6. C#中Abstract和Virtual 【转】
  7. Android 简介:Android SDK 和开发框架简介
  8. IM-iOS退出后台接受消息,app退出后台能接收到推送
  9. shell 变量、参数、数组章节笔记
  10. Ubuntu软件安装与卸载
  11. bookmarks
  12. 为Druid监控配置访问权限(配置访问监控信息的用户与密码)
  13. awt
  14. 面试神体验之:get和post的区别
  15. 【python】变量的赋值、深浅拷贝
  16. jmeter正则表达式提取器多模块相互调用
  17. Android开发(十二)——头部、中部、底部布局
  18. 在ubuntu系统中,python依赖存放的路径
  19. Yii 开发过程 tips
  20. SSH进行登录远程主机,实验室网站,项目

热门文章

  1. wpf SnapsToDevicePixels
  2. 手动安装MySQL8.0
  3. WPF中 PropertyPath XAML 语法
  4. Android4.0图库Gallery2代码分析(一) 程序整体结构
  5. c语言学习笔记(9)——指针
  6. Java设计模式透析之 —— 单例(Singleton)
  7. 《DELPHI赋》
  8. Matlab Tricks(十九)—— 序列左右移的实现
  9. VC实现程序重启的做法
  10. Android备注26.Android异步任务(AsyncTask)