阅读视图

发现新文章,点击刷新页面。

如何通过两款工具实现最佳效果

textlint 在转换 md 文件时只会处理正文的部分,而 pangu 在转换时对内容的判断不太友好,使得转换后的格式不尽人意。今天杜老师说一下如何通过两款工具实现最佳效果。

分别转换

将需要转换的文件保存至 DIR1 目录「DIR1 为目录名称,可自定义,下同」另外新建 DIR2 目录用于存放 pangu 转换的文件,执行以下脚本:

1
2
3
4
5
#!/bin/bash
for i in DIR1/*
do
pangu -f $i >> DIR2/$i
done

然后使用 textlint 转换 DIR1 目录中的文件,命令如下:

1
textlint --fix *

整合文件

接下来我们将两个工具转换后的文件合并,我们使用 pangu 转换文件的头部,textlint 转换文件的正文部门。首先新建保存整合文件的目录 DIR3,然后执行下面脚本,其中 N 为头部行数:

1
2
3
4
5
#!/bin/bash
for i in DIR2/*
do
head -N DIR2/$i >> DIR3/$i
done

将下面脚本中 N 的值设置与上面相同,执行即可整合正文部分「补上一句:两个脚本可以合成一个,感兴趣的可以尝试一下,非常简单」

1
2
3
4
5
6
7
#!/bin/bash
for i in DIR1/*
do
j=`cat $i | wc -l`
k=$[$j+1]
sed -n "N,$[k]p" $i >> DIR3/$i
done

如何通过脚本实现 pangu 批量格式化

相比较 textlint,pangu 可实现全文格式转换,不过其仅可以针对单个文件进行转换,杜老师说一下如何通过脚本实现 pangu 批量格式化。

脚本

1
2
3
4
5
#!/bin/bash
for i in OLD/*
do
pangu -f $i >> NEW/$i
done

注意:将上述脚本保存为执行文件,将需要转换的文件保存至 OLG 目录「OLG 为目录名称,可自定义,下同」转换后的文件会存入 NEW 目录。

思路

脚本中使用 for 循环遍历目录中的所有文件,并将文件名称赋值给变量 i。

pangu 通过变量 i 确定需转换的文件,并以原文件名保存至 NEW 目录。

pangu 自动格式化工具

上文中提到的自动格式化工具仅能针对正文的内容进行处理,如需处理全篇内容,可以尝试 pangu 自动格式化工具!

安装

pangu 有多种执行语言,包括 Go/Java/JavaScript/Python 等,本篇以 Python 为例,演示如何安装:

1
pip install -U pangu

使用 pip 工具 pangu ,需要安装依赖,以Ubuntu为例:

1
sudo apt -y install python3-pip

使用

1
pangu -f OLD.txt >> NEW.txt

注意:pangu仅可以针对单个文件进行转换,可通过 pangu -f OLD.txt 查看转换结果,然后再通过上面命令写入到文件。

textlint 自动格式化工具

textlint 这款开源工具由一位日本的开发者制作,其灵感源于代码自动格式化工具。textlint 使用 JavaScript 实现,我们可以通过编写一系列脚本来实现对文本内容和格式检查的各类个性化需求。

安装

正式使用 textlint 之前我们需要先执行安装步骤。textlint 基于 JavaScript 语言实现,其安装通过 npm 包管理工具来安装:

1
npm install textlint --global

前提是环境已安装了 Node.js和 npm 依赖,如未安装可以参考如下命令,以Ubuntu为例:

1
sudo apt -y install npm

用法

安装自动添加中英文空格的规则:

1
npm install textlint-rule-ja-space-between-half-and-full-width --global

通过终端切换到需要执行格式化目录下方,textlint 支持多层级目录和多文件批量处理,所以一般切换至项目根目录下方即可。然后执行下面命令初始化 textlint 针对该目录的配置文件,执行后会自动生成一个名为.textlintrc 的配置文件:

1
textlint --init

接下来向配置文件中添加相应的规则:

1
2
3
4
5
6
7
8
{
"filters": {},
"rules": {
"ja-space-between-half-and-full-width": {
"space": "always"
}
}
}

最后通过 textlint 实现对指定文件自动添加空格,执行:

1
textlint --fix *.md

中文文案排版指北

古人云打字的时候不喜欢在中文和英文之间加空格的人,感情路走得很辛苦,有七成的比例会在34岁的时候跟自己不爱的人结婚,而其余三成的人最后只能把遗产留给自己的猫。毕竟爱情跟书写都需要适时留白。统一中文文案排版,不仅可以提高访客访问体验,还可增强网站气质。今天分享一下杜老师的排版经验!

空格

中文与英文数字之间需增加空格:

正确错误
去不图床数据存放在阿里云的 OSS 上面去不图床数据存放在阿里云的OSS上面
去不图床已经托管 40000 多张图去不图床已经托管40000多张图

数字与单位间无需增加空格:

正确错误
去不图床数据已达到 15GB 以上去不图床数据已达到 15 GB 以上

温度、百分比与数字之间不需增加空格:

正确错误
今天是 40° 高温今天是 40 ° 高温
去不图床有高达 95% 的缓存命中率去不图床有高达 95 % 的缓存命中率

全角标点与其他字符之间不需加空格:

正确错误
去不图床网址是 7bu.top,很好记吧!去不图床网址是 7bu.top ,很好记吧!

标点

不重复用标点符号:

正确错误
我们的网站好快呀!我们的网站好快呀!!!
您感觉去不图床好用吗?您感觉去不图床好用吗???

使用全角中文标点:

正确错误
我们的网站好快呀!我们的网站好快呀!

数字使用半角字符:

正确错误
去不图床已经托管 40000 多张图去不图床已经托管 40000 多张图

英文整句、特殊名词,其內容用半角标点:

正确错误
Good good study, Day day up.Good good study,day day up。

名词

专有名词使用正确的大小写:

正确错误
杜老师说评论可使用 GitHub 登录杜老师说评论可使用 github 登录

不要使用不地道的缩写:

正确错误
压缩 JavaScript 可能会造成页面错误压缩 js 可能会造成页面错误

特色

链接之间增加空格:

正确错误
上传图片点击 这里上传图片点击 这里

简体中文使用直角引号:

正确错误
去不图床支持「鉴黄」功能去不图床支持“鉴黄”功能

写作排版习惯变迁

自我开始写文字起,就会遵循某一种特定的规则。这个规则时有变化,最开始的版本和现今版本已经不尽相同。

不算读书时期学校安排的作业,只算出于兴趣而写的文字里,我的工具是一只笔和一个小本子。我总会空出本子的第一页(两面),从第二页的第二行开始写起。没有特殊动机,仅仅是觉得这么开始写更加有仪式感。除此之外,我的字还会越写越小,起初的文字还能占满一行高度,写到一页的后半段,方块字只剩下一行的不到一半高。这是一个坏习惯,好在后面改掉了。在小学和初中时期,我写了两本(未完结的)小说,一本游戏制作日志和一本小品排练剧本集,以及杂七杂八的改编歌词和碎碎念等等。

到了高中,我开始不再遵循任何规则,也不再照本宣科一行行写下来,而是完全凭心情写在任意位置,用任意大小任意语言写下任意句子。这些句子大多暴戾,充满对社会的不满,以及大量消极的态度和思想。好在我的高中语文老师寓教于乐,她给我的留言至今仍放在博客的关于页里。我十分感谢她。

在本子上写字的习惯一直延续到大学。成年后我开始认认真真写字,买了几本硬皮 A5 笔记本,写日记和阅读圣经感想。就这么写了两本,字迹从仔仔细细到不拘一格,也就花了三年时间。字体本身并不是最重要的,而是这些文字记录了青春懵懂时期的友情爱情、愤青思想和家国情怀。

以上是物理上的写字,更多的文字我习惯通过键盘记录。各种平台博客、从年幼到如今分为两个泾渭分明的时期。

起初喜欢打繁体字,因为当时认为这属于【正统】,以至于写在日记本上的也大多是繁体。纸上花里胡哨的繁体字现在读起来真是辛苦啊。另外我还喜欢打半角,所有的逗号、句号、感叹号等标点符号都用半角,这样看起来可以更节省空间。因此,我对于省略号(中二时期用省略号特别频繁)的使用有一种特殊癖好:打6个以上的半角句号,偶尔还会在最后加上两个斜杠【//】。现在看当时的文字就像一堆毛线团上爬着稀稀拉拉的毛毛虫。

随着年纪增长,我对于写字这件事越来越有【敬畏之心】,对于排版有了一套比较系统的认识。博客和公众号成为我生活中不可或缺的养分,其中优秀的作者和其排版潜移默化影响我。因此我的写字逐渐有了以下主要规则:

  • 正式文章严格遵守中英文标点符号的正确使用(部分情况例外);
  • 英文句子结尾的标点符号后空一格再起新句子;
  • 句子开头和结尾以外的中英文之间用空格区分;
  • 中文句子用全角符号,拉丁语系句子用半角符号;
  • 段落之间空一行(这个习惯来自对 Markdown 语法的认识);
  • 引号使用【】或者 “” (我排斥直角引号);
  • 严格遵循品牌或者固定词汇的写法(iPhone/iCloud/OneDrive/WordPress etc.)

以上这些规则大多数和中文文案排版指北相契合,这篇文章的灵感来源也是这篇文章。因为习惯了这套排版,加上自身有轻微强迫症,我在网上如果阅读到格式不符合的文章会相当难受,特别是用中文半角标点符号的、没有遵循固定写法为甚。但是自我的主管感受不能强加于别人,我只会专注于别人写的文字内容,毕竟那才是核心,排版不过是表面功夫,只是让人读起来更加舒适而已。

❌