中英混排的一个要点是,英文单词/数字/表达式与汉字相邻时,应引入空格分开。
比如:
$S^\prime$对FIFO存在Belady现象
应修改为:
$S^\prime$ 对 FIFO 存在 Belady 现象
微软的 Word 可以自动完成,而且如果原来已有空格,不会造成影响。
在其他的编辑器上,我们可以使用正则表达式实现这样的效果
(?<![\x00-\x7F])([\x00-\x09\x0B-\x1F\x21-\x7F]+)(?![\x00-\x7F])
可以选中所有这样的单词/数字/表达式,并将单词捕获,使用
\1
替换即可完成。
注意是一个空格,接着一个\1
,再加上一个空格。
这里主要利用的是,英文使用ascii
编码,这里假设ascii
范围外的均为应用空格隔开的字符。
([\x00-\x09\x0B-\x1F\x21-\x7F]+)
描述了一个或多个ascii
码组成的序列。但其中不存在换行(\n
,\x0A
)以及空格(,
\x20
)
。
我们希望选中的序列两侧都是非ascii
字符,因此使用逆序环视和正序环视,表达两侧均非ascii
编码。
至此,我们已能选中两侧均非英文字符的序列。删去其中一个环视,可以选择单侧,替换时也做相应修改即可。
将来也许将三者结合到一起,不过目前已足够使用。
网友评论