Skip to content

排版自动纠正及lint md校验

Fivezh edited this page Sep 9, 2019 · 13 revisions

本文主要目的:

  • 排版自动纠正:中英文间加空格、自动修正术语名词大小写
  • 本地执行lint-md校验markdown格式化

排版自动纠正

PS:也可以使用lint-md的自动纠正功能,详见后文

一、安装autocorrect autocorrect地址:autocorrect 安装过程:

// 下载autocorrect
> go get -v https://github.com/studygolang/autocorrect.git
// 安装autocorrect的cli命令
> cd $(GOPATH)/src/github.com/studygolang/autocorrect/cmd/autocorrect
> go build && go install

至此,autocorrect命令会安装在$(GOPATH)/bin/目录,确保此路径已加入$PATH,就可以全局执行autocorrect命令。

二、使用autocorrect自动纠正排版格式 先看下命令主要参数:

autocorrect
NAME:
   autocorrect - 自动给中英文之间加入合理的空格并纠正专用名词大小写。支持处理某个目录下所有文件。

USAGE:
   autocorrect [global options] command [command options] [arguments...]

VERSION:
   1.0.0 (100)

AUTHOR:
   Xu Xinhua <[email protected]>

COMMANDS:
     space, s    给中英文之间加入合理的空格
     correct, c  纠正专用名词大小写
     convert, a  同时做 space 和 correct 的事情
     help, h     Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --help, -h     show help
   --version, -v  print the version

COPYRIGHT:
   (c) 2018 studygolang.com

主要功能:

中英文间加空格

命令:autocorrect s -w hello.md 命令解析:

  • s:相当于space参数,【给中英文之间加入合理的空格】
  • -w:此参数在命令说明中未给出,作用是【修改直接覆盖源文件】

示例:

> autocorrect s -w hello.md
> git diff hello.md
diff --git a/hello.md b/hello.md
index 68c9959..4e513b3 100644
--- a/hello.md
+++ b/hello.md
@@ -1,3 +1,3 @@
 #hell world
-这是一个test测试
-这里有数字1又有单词hello world,还有[链接](http://www.google.com/)会如何
+这是一个 test 测试
+这里有数字 1 又有单词 hello world,还有[Link](http://www.google.com/)会如何

纠正专用名词大小写

目前此功能有一定误处理,建议书写时形成大小写规范,不直接此自动纠正功能。

diff --git a/hello.md b/hello.md
index ef1885d..29616c0 100644
--- a/hello.md
+++ b/hello.md
@@ -2,8 +2,8 @@
 这是一个 test 测试
 这里有数字 1 又有单次 hello world,还有[Link](http://www.google.com/)会如何

-这是 go 语言的翻译规范,请注意专有名词大小写规范
+这是 Go 语言的翻译规范,请注意专有名词大小写规范
 这是代码:
-> go build
+> Go build

注意:上述示例中,go build命令也会被误替换为Go build存在误伤

lint-md校验

依赖:lint-md

命令:

Usage: lint-md <lint-md> <files...> [options]

lint your markdown files

Options:
  -v, --version                  output the version number
  -c, --config [configure-file]  use the configure file, default .lintmdrc
  -f, --fix                      fix the errors automatically
  -h, --help                     output usage information

由于lint-md官方docker镜像最近存在问题,目前先使用 fivezh/lint-md:cli 封装的镜像

lint-md 进行markdown格式校验

本地运行lint-md进行markdown格式校验:(这里通过docker方式,注意将命令中hello.md替换为你的文件名)

命令:docker run --rm -it -v$(pwd)/hello.md:/docs fivezh/lint-md:cli /docs/

作用:通过lint-md校验当前目录下的hello.md

示例:

> docker run --rm -it -v$(pwd)/hello.md:/docs fivezh/lint-md:cli /docs/
//docs
   1:17-1:18             space-round-alphabet          No space between Chinese and alphabet. 'ld
这是一个test测'
   1:21-1:22             space-round-alphabet          No space between Chinese and alphabet. '是一个test测试
这里'
   1:29-1:30             space-round-number            No space between Chinese and number. '试
这里有数字1又有单次'
   1:30-1:31             space-round-number            No space between Chinese and number. '
这里有数字1又有单次 '
   5:3-5:4               space-round-alphabet          No space between Chinese and alphabet. '这是Go语言的翻译规范,'
   5:5-5:6               space-round-alphabet          No space between Chinese and alphabet. '这是Go语言的翻译规范,'

Lint total 1 files, 0 warnings 6 errors

利用lint-md进行排版纠正

命令:lint-md -f hello.md

示例:

diff --git a/hello.md b/hello.md
index 308e86f..b841743 100644
--- a/hello.md
+++ b/hello.md
@@ -1,7 +1,7 @@
-#标题1
+#标题 1
 这是有问题的原文
-内容中包含英文单词hello,数字1等
+内容中包含英文单词 hello,数字 1 等
 包含代码片段:
-```
+```plain
 > go build

排版完整操作流程

> autocorrect s -w hello.md // 中英文间添加空格
> autocorrect c -w hello.md // 英文术语大小写纠错,选用,有误处理case
> docker run --rm -it -v$(pwd)/hello.md:/docs fivezh/lint-md:cli /docs/   // 本地lint-md校验