想写这篇文章很久了,也想做这件事很久了,我个人感觉自己是有强迫症的,所以一直有什么事让我看着不太舒服就想把它纠正过来。 文字,也不例外。 现在大家看各种新闻啊、文章啊,几乎每篇文章都会有点数字和英文的吧,比如就拿 Python 来说,看下面两句话:

卧槽Python真牛逼啊排名第1了。

卧槽 Python 真牛逼啊排名第 1 了。

Python 是不是第一先不说,就看看上面两句话的排版,哪个看起来更舒服?说实话我是真觉得第一句话太别扭了。因为我们大部分的文本编辑器和浏览器是没有对中文和外文的混排做排版优化的,所以如果写的时候如果二者之间不加个空格,二者就会紧紧贴在一起,然后就变成了上面第一句的样子。 当然如果你觉得第一句的排版更好看,好吧,那么本文后面的内容其实可以不必看了。OK,如果你觉得第二个好看,那不妨接着看下去哈。

出发点

首先有一点需要明确的是,中英文排版的美学是在于 Readability,易读性。而为了易读性,中英文之间是需要留有”间距”的,注意这里是间距,不是说的”空格”。”空格”会造成间距,但是间距不一定非得需要”空格”。 好,所以,其实我们只需要留有适当的间距,就会显得美观易读,这个间距大约是一个半角空格的距离。 好明确了这一点,我们只要能留有间距,不一定非得加空格。 现在很多专业的排版软件,比如 Adobe InDesign、Microsoft Word 对中英文混排支持非常好,他们会有这么一个功能:可以设置中文西文之间留适当的间距。 所以,如果如果我们使用了这些软件,本身就可以做到 Readability,这就够了。 但是,为什么还会说空格的问题呢?这是因为现在绝大多数软件,不管是文本编辑器还是网页,都没有这个机制。 几乎所有的文本编辑器和浏览器中,只要我们中文和英文连续输入,它们之间是不会出现间距的,就像文章开头所示的样例中的第一句话,显得很别扭。但比如 Adobe InDesign、Microsoft Word、IE 浏览器会有这方面的支持。 所以,怎么解决?手动加空格。 因此,总结下:

间距要有,但不一定是空格。

部分软件能自动呈现间距,那就不必加空格。

绝大多数软件不能自动呈现间距,那就需要手动加空格。

所以,作为强迫症的我,一定是会为了这个间距而去敲下一个空格的。 「有研究显示,打字的时候不喜欢在中文和英文之间加空格的人,感情路都走得很辛苦,有七成的比例会在 34 岁的时候跟自己不爱的人结婚,而其余三成的人最后只能把遗产留给自己的猫。毕竟爱情跟书写都需要适时地留白。与大家共勉之。」

所以,求求你加个空格吧(逃。

规范

好,下面就说到规范的问题了,到底什么时候应该加空格什么时候不加,这也是有讲究的。下面的内容摘自 GitHub 上的一个中英文混排规范,网址为:https://github.com/mzlogin/chinese-copywriting-guidelines,下面转述一下。

1. 中英文之间需要增加空格

中英文之间是需要添加空格的,不论是普通英文还是引用的英文,下面给个示例: 正确:

在 LeanCloud 上,数据存储是围绕 AVObject 进行的。

错误:

在LeanCloud上,数据存储是围绕AVObject进行的。

在 LeanCloud上,数据存储是围绕AVObject 进行的。

完整的正确用法:

在 LeanCloud 上,数据存储是围绕 AVObject 进行的。每个 AVObject 都包含了与 JSON 兼容的 key-value 对应的数据。数据是 schema-free 的,你不需要在每个 AVObject 上提前指定存在哪些键,只要直接设定对应的 key-value 即可。

但有例外,比如「豆瓣FM」等产品名词,按照官方所定义的格式书写。 再比如,我的公众号为「进击的Coder」,那么这里面就不要加空格,按照其本身的形式书写即可。

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

中文和数字之间也是需要的,下面给个示例: 正确:

今天出去买菜花了 5000 元。

错误:

今天出去买菜花了 5000元。

今天出去买菜花了5000元。

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

但是数字和单位之间不需要再加额外的空格了,下面给个 正确:

我家的光纤入户宽带有 10Gbps,SSD 一共有 10TB。

错误:

我家的光纤入户宽带有 10 Gbps,SSD 一共有 20 TB。

另外,度/百分比与数字之间不需要增加空格: 正确:

今天是 233° 的高温。

新 MacBook Pro 有 15% 的 CPU 性能提升。

错误:

今天是 233 ° 的高温。

新 MacBook Pro 有 15 % 的 CPU 性能提升。

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

标点是分全角和半角的,全角标点一般是在中文状态下输出来的,比如 ,、。、!,半角标点一般是在英文状态下输出来的,比如 ,、.、!,两个看起来不一样吧?所以,如果是中文标点,即全角标点,那不需要加空格。 正确:

刚刚买了一部 iPhone,好开心!

错误:

刚刚买了一部 iPhone ,好开心!

嗯,基本就是以上的几个规范,只要明白了这些规范,中英文混排就 OK 了!

网页

有人说,我就是不想打空格,在网页中,我能像 Microsoft Word 一样不打空格而直接显示间距吗? 也就是说,我能不能设置一个 CSS 样式,就能使得中英文之间自动留有间距呢? 其实,只有 IE 有这样的支持。这个 CSS 样式叫做 \-ms-text-autospace ,可以在这里了解下:https://msdn.microsoft.com/library/ms531164(v=vs.85).aspx.aspx)。 但是很遗憾的是,几乎所有其他的浏览器都不支持这个,Chrome、Firefox 统统都不支持这个特性。放弃吧。

这里提供一些手动的解决方案,比如使用 JavaScript 添加标记,然后 CSS 控制标记的间距,解决方案可以参考:http://mastermay.github.io/text-autospace.js/。

编辑器

那么有编辑器支持这个吗?有,Microsoft Word,用它我们不用加空格,会自动给我们加好间距。 有人说,我平时不想用 Word,我就想用 Markdown,有编辑器吗?有,叫做 MarkEditor,它的 2.0 Pro 版本可以在打字的时候自动给我们添加空格。注意,这里是自动添加空格,不是自动留间距,是用空格的方式实现了间距。但是这个只能在你一个个打字的时候自动添加空格,如果把一个不带空格的话粘贴进去是不行的。另外 MarkEditor 解锁这个功能需要付费,所以我个人感觉其实不太划算的。 所以,平时还是自己手动加空格吧,经济实惠方便。 其他的编辑器如有好用的欢迎大家推荐哈。

类库

好吧,看到现在,你是不是现在都想把自己的中英文笔记加上空格了?难道要手调吗?不需要。 有现成的工具了,名字叫做 pangu,它支持各种语言,另外还有浏览器插件可以用,列表如下:

浏览器插件

开发工具包

Official supports:

比如 Python 的话,就可以使用 pangu.py 这个包,GitHub 地址为:https://github.com/vinta/pangu.py,安装方式如下:

1

pip3 install -U pangu

这么用就好了:

1

2

import pangu

print(pangu.spacing_text('當你凝視著bug,bug也凝視著你'))

运行结果如下:

1

當你凝視著 bug,bug也凝視著你

嗯,它自动给我们添加好了空格,非常不错。 不过这有点费劲,有简单一点的工具吗? 有,我为此专门做了一个网页,功能很简单。 在左侧输入源文本,右侧就会显示添加空格之后的文本,页面如下:

这个是我用 Vue.js 开发的,实际上就是用了 pangu.js 这个库实现的,原理非常简单,主要目的就是为了方便空格排版。 另外这个网站我也部署了一下,叫做:http://space.cuiqingcai.com/,大家以后也可以直接访问使用,以后我有想调整的文本,直接就用它了。 如果大家想获取源码,可以在公众号「进击的Coder」回复”空格”。 希望对大家有所帮助。 最后,为了世界的美好与和平,加个空格吧!

mac的python怎么打中文空格_中英文排版空格问题解决方案相关推荐

  1. mac的python怎么输入中文_帮你解决mac上python没法输入中文问题

    我是做互联网运营的,但是想跨点界,学点代码来提高工作效率.经过咨询,做技术的同事推荐学习python.我执行力杠杠的哈,找了个网络课程,教python入门,根据老师的介绍去网站:http://www. ...

  2. python 折线图中文乱码_彻底解决 Python画图中文乱码问题--Pyplotz组件

    1 源起 自从开始学习Python,就非常喜欢用来画图.一直没有需求画要中文显示信息的图,所以没有配置Python中文的环境.由于昨天就需要画几十个形式相同,只是数据不同的图,并且需要显示中文信息.如 ...

  3. python可不可以用中文编写_震惊!!!python可以用中文来写代码

    说明: 偶尔间试了一下,python可以用中文来写代码,除了一些python内置函数,和运算符不能用中文外,其它的比如新定义的类名.函数名.变量名,甚至是函数间传的参数都可以用中文来代替.这是国人全民 ...

  4. python空格符用什么表示_如何用空格填写Python字符串?

    我想用空格填充一个字符串.我知道以下内容适用于Zero: >>> print "'%06d'"%4 '000004' 但是如果我想要这个怎么办?: 'hi     ...

  5. dataframe 删除首尾空格_你敲空格的速度很快,但女人的手不是用来敲空格的!...

    点击上方蓝字「Excel不加班」关注,看下一篇 学员的问题:用VLOOKUP函数查找得到错误值,怎么回事? 卢子看后,觉得公式没问题,看了一下,原来是敲的空格不一样.针对这种,一般都是将空格替换掉,再 ...

  6. java替换空格_字符串替换空格

    需求: 请实现一个函数,把字符串中的每个空格替换成"%20",例如,输入"We are happy!",则输出"We%20are%20happy!&q ...

  7. mac的python怎么输入中文_无法在python IDE(Mac OS X)中输入unicode

    我试图在默认的python IDE中收集一些unicode原始输入,据我所知,它应该很简单:>>> c = raw_input() 日本語 >>> print c ...

  8. mac中python怎么打开中文txt文件-mac在matplotlib中显示中文的操作方法

    Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形 . 通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直方 ...

  9. mac终端python不能显示中文_mac python绘图中文不显示的解决方案

    一.Mac需要先下载simhei.ttf字体并安装,之后按照下面步骤首先将simhei.ttf拷贝到~python安装路径/site-packages/matplotlib/mpl-data/font ...

  10. python中字符串中文乱码_[python] 中文乱码问题

    乱码产生的原因 乱码产生的根本原因是字节流转换字符前后不一致导致.只要掌握了这个核心,就能解决乱码问题.python2中使用了一些"trick"(没有区分字符和字节流),所以理解起 ...

最新文章

  1. kylin的安装和启动
  2. 一个“小白”眼中的容器
  3. 【在虚拟环境下完美解决】1698: error: (-215:Assertion failed) empty() in function cv::CascadeClassifier
  4. GIF动画解析RNN,LSTM,GRU
  5. JNDI学习总结(3)——Tomcat下使用C3P0配置JNDI数据源
  6. [译]36 Days of Web Testing(六)
  7. css中表居中,CSS DIV中表格居中显示
  8. UVA355 UVALive5249 The Bases Are Loaded【进制】
  9. python graphviz_Python中Graphviz的输出问题
  10. 用c语言编写的迷宫游戏代码,C语言编写的迷宫小游戏 源代码
  11. iOS资源汇总(长期更新)
  12. 尚学堂马士兵老师oracle笔记
  13. 印尼推出新的光伏发展激励措施
  14. 豆瓣评分8.5+,这10本好书,不读你就OUT了
  15. RPG游戏Demo学习笔记一
  16. 用光盘怎样重装电脑系统
  17. 安装phpnow服务[Apache_pn]提示失败的解决方法
  18. 群、环、域基础与例子
  19. 初探密码破译:Metropolis-Hastings算法破解密文
  20. 互联网金融的信息安全(一)新环境的安全形势

热门文章

  1. 徐静蕾2008十大青春语录
  2. linux离线日志分析工具,loganalyzer——日志分析工具
  3. AcWing 导弹防御系统 Python代码
  4. xss.haozi.me靶机
  5. 每日思考第 61 期:职场PUA与情场PUA
  6. 计算机应用基础IE浏览器设置,计算机应用基础IE浏览器设置学习笔记.docx
  7. img元素实现图片裁切放大
  8. android禁用传感器,Android 系统 强制 禁用 距离传感器 方法
  9. 举个栗子!Tableau技巧(9):Lisa教你巧妙制作混合地图
  10. 如何在51单片机实现日程提醒(生日闹钟)