如何用OpenWrite书写技术博客并在多平台分发

最近发现一个用于编辑和多平台发布博客文章的工具OpenWrite,决定尝试一下使用这个工具书写技术博客。下面分享一下使用的心得。

首先OpenWrite目前只支持Markdown语言,Markdown用于书写文章非常方便,现在已经被广泛使用,但是Markdown的能力毕竟有限,对于写技术文章来说,可能有一些限制。技术文章除了常见的格式和排版要求之外,还有至少如下的需求:

  • 代码显示
  • 数学公式
  • 参考引用

OpenWrite能否对以上功能给予支持呢?

标准语法

markdown的标准语法可以参考如下链接 markdown-guide

代码显示功能

标准语法提供了代码显示功能,只是不知道在OpenWrite里面的显示效果如何,尝试如下:

C++

include <iostream>
#include <opencv2/opencv.hpp>
#include <opencv2/highgui.hpp>

using namespace std;
using namespace cv;

int main(int argc, const char * argv[]) {
    // insert code here...
    int sz[] = { 3, 4, 6};  //倒着存放,对应三维立体图像的高、宽、长
    Mat Img = Mat(3,sz, CV_16SC4, Scalar::all(0));
    cout<<"三维图像的维度:"<<Img.dims<<endl;
    cout<<"三维图像的通道数:"<<Img.channels()<<endl;

    cout<<"三维图像的长:"<<6<<endl;
    cout<<"三维图像的宽:"<<Img.size().width<<endl;
    cout<<"三维图像的高:"<<Img.size().height<<endl;

    cout<<"存放一个数字的大小 = sizeof(short) = 16/8 = "<<Img.elemSize1()<<endl;
    cout<<"存放一个像素点的大小:"<<Img.elemSize()<<endl;

    cout<<"平面的大小 -> Img.step[0] = "<<Img.step[0]<<endl;  //长 ✖️ 宽 ✖️ elemSize() = 6 * 4 * 8 = 192
    cout<<"行的大小   -> Img.step[1] = "<<Img.step[1]<<endl;  //长 ✖️ elemSize() = 48
    cout<<"元素的大小 -> Img.step[2] = "<<Img.step[2]<<endl;  //元素的大小

    /*寻址方法*/
    unsigned char * addrM012 = NULL;
    addrM012 = Img.data + Img.step[0] * 0 + Img.step[1] * 1 + Img.step[2] * 2;
    cout<<"数据开始地址:"<<(void*)Img.data<<endl;
    cout<<"Img[0,1,2] 的地址是:"<<(void*)addrM012<<endl;
    return 1;
}

python

#coding:utf-8
import numpy as np

np.zeros([10,10])
a = (0,1,3,8)
for i in a:
    print(i)

Java

import java.util.Map;    
import java.util.HashMap;    
import java.util.Set;    
import java.util.HashSet;    
import java.util.Iterator;    
import java.util.Hashtable;    
import java.util.TreeMap;    
class  HashMaps    
{    
       public static void main(String[] args)     
      {    
            Map map=new HashMap();                
            map.put("a", "aaa");    
            map.put("b", "bbb");    
            map.put("c", "ccc");    
            map.put("d", "ddd");    

            Iterator iterator = map.keySet().iterator();                
            while (iterator.hasNext()) {    
             Object key = iterator.next();    
             System.out.println("map.get(key) is :"+map.get(key));    
            }           
            Hashtable tab=new Hashtable();                
            tab.put("a", "aaa");    
            tab.put("b", "bbb");    
            tab.put("c", "ccc");    
            tab.put("d", "ddd");    
            Iterator iterator_1 = tab.keySet().iterator();    
            while (iterator_1.hasNext()) {    
             Object key = iterator_1.next();    
             System.out.println("tab.get(key) is :"+tab.get(key));    
            }             
            TreeMap tmp=new TreeMap();                
            tmp.put("a", "aaa");    
            tmp.put("b", "bbb");    
            tmp.put("c", "ccc");    
            tmp.put("d", "ddd");    
            Iterator iterator_2 = tmp.keySet().iterator();    
            while (iterator_2.hasNext()) {    
             Object key = iterator_2.next();    
             System.out.println("tmp.get(key) is :"+tmp.get(key));    
            }             
       }    
}    

显示代码没有问题。

数学公式

OpenWrite 目前只支持标准的markdown语法,无法显示数学公式(markdown-enhanced 语法支持latex格式的数学公式),强烈建议以后支持该功能。

替代办法

用图片代替公式是一个不错的选择,在这里不得不推荐一个超级好用的工具,Mathpix,可直接将截图识别为latex公式,提供png格式、不同latex格式和MathML格式的拷贝,使用中可直接将图片复制到文中即可。
从文献书籍上的截图:

![file](https://segmentfault.com/img/bVbF7f7 "file")

利用Mathpix一键生成的新公式图片:

![file](https://segmentfault.com/img/bVbF7f8 "file")

可见图片质量有明显提升。此外还可以很方便地对公式进行加工修改,修改之后直接生成新的图片,以下是将函数名简单修改后的结果:

![file](https://segmentfault.com/img/bVbF7f9 "file")

参考引用

标准markdown语法里也不支持对参考文献和图片的引用,这个目前没有找到合适的替代方法,不过这个需求并不强,也可以手动添加引用进去。

功能亮点

  • 多平台同时发布,这个功能五星好评。
  • 目前虽然不支持微信公众号,但是可以在预览界面将文章复制到微信后台,直接粘贴,非常方便,五星好评。

总结

总之,用OpenWrite来写技术文章基本满足要求,最主要的是它支持在多个平台同时发布,值得尝试一下。

> 本文由博客群发一文多发等运营工具平台 OpenWrite 发布

声明:该文章系转载,转载该文章的目的在于更广泛的传递信息,并不代表本网站赞同其观点,文章内容仅供参考。

本站是一个个人学习和交流平台,网站上部分文章为网站管理员和网友从相关媒体转载而来,并不用于任何商业目的,内容为作者个人观点, 并不代表本网站赞同其观点和对其真实性负责。

我们已经尽可能的对作者和来源进行了通告,但是可能由于能力有限或疏忽,导致作者和来源有误,亦可能您并不期望您的作品在我们的网站上发布。我们为这些问题向您致歉,如果您在我站上发现此类问题,请及时联系我们,我们将根据您的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。