« OCaml 的 Hello world | Main | 更新為 PDFTeX 1.40.0 »
中文是表意文字(嚴格而言是表音意文字),英文是表音文字,而且中文是方塊字,英文是拼音字體系,這兩種文字混合排版時,一般的習慣是會留個中英文字間空白。其實你可以自行試看看,排版出來,留不留空白,對眼睛閱讀的順暢感覺就應該可以知道需不需要留空白了。
那到底中英文字間要留多大的空白才恰當呢?這個就頗有不同的主張了。由於一般的文書排版軟體本身的能力問題,通常是會留個一個英文空白的大小,因為,其他大小的空白,你所使用的軟體可能沒有這個能力。
雖然 Unicode 有編入一些不同大小的空白,但我查看了一下目前的字型,不管是商業字型還是自由字型,不是沒有製作這些空白,就是製作的大小並不正確。所以,要依賴 Unicode 碼來當成空白的話,目前可能會讓你失望。
在日文的話,他們留的是 shibuaki(四分あき),是英文半形空白的一半大小,也就是一個中文字的的四分之一大小的空白。這在 LaTeX CJK 的定義是:
\newcommand{\CJKtilde}{
\CJK@global\def~{\hspace{0.25em plus 0.125em minus 0.08em}\ignorespaces}}
在
cwTeX
則是定義成:
\ifx\Z\undefined\def\Z{\hskip 1.2pt plus0.4pt minus0.2pt} \fi
cwTeX 會自動將中英文字間空白換成這個 \Z, 如果不留空白的,也會自動插入這個 \Z,他比 shibuaki 還要窄。我們就來看看有沒有留空白及留各種不同大小空白的實際排版情形:
當然,cwTeX 的部份,標點符號系統並沒有採用 cwTeX 本身的,而是一般全形的標點符號,所以,相對比較起來,中英文字間空白好像小了點,但如果是採用 cwTeX 本身的標點符號系統的話,倒是相配得宜。
這樣看可能看不是很清楚,得有個長篇一點的文章來編排,整體來看的時候就會比較客觀判斷。如果是使用一般的中文全形標點符號的話,那麼 shibuaki 可能較為適當。但是寫文件的時候可能會比較麻煩,因為他是使用波紋號來當做空白的,像上面圖例的實際排版是:
\CJKtilde 不復出焉;遂與外人閒隔。問今~English~是何世;乃不知有漢。(shibuaki)文章很長的話,要這樣一個一個的波紋號當成英文空白,那是有點累的,而且,往後文件的處理會比較麻煩,最好是由程式去自動處理比較理想。
謝謝。不過我查了一下我手頭上的版本
/* $Id: cctspace.c,v 1.6 2005/08/30 14:15:51 zlb Exp $ */
目前似乎是只針對 GKB 編碼?
是的。因为张林波老师写这个程序的时候只是针对 GBK 的考虑,不过因为 GBK 是双字节编码,要修改让它支持Big5 或者 UCS2 应该不难,但 UTF-8/UTF-16 可能就要非一点点思量了。
不过我看过这份代码,写得还是比较清晰的,改改应该不难。
多謝 jjgod。其實我心裡是想對 UTF-8 文件做這樣子的處理,還在想怎麼做比較好?畢竟,寫程式不是我的專長呀!:)
我写了个小程序cjkspace,自动在中英文之间插入间隔符,见:http://gosman.blogbus.com/logs/7932840.html
有几个问题请教:在中文标点和英文之间是否应该加空白?在中文和英文标点或括号等之类的符号之间是否加空白?
这里的英文是否定义为ASCII码比较好?
谢谢!!
感謝。本來想用 ruby 來寫的,後來發現 ruby 並沒有像 python/perl 那樣的內建的 lib 可以用,要自行寫又太麻煩(其實是功力不夠 :),所以就沒去理他了。
中文標點由於使用全型(全角),所以,前後加入空白的話會顯得空白太大,因為字型設計上就把空白考慮進去了,所以一般我個人是不加的。
中英標點符號相連的情形,我也都是不加空白,因為兩種體系的標點容易區分,似無需使用空白。
有一種例外是,有些系統使用半型(半角)的中文標點符號(像日本有些字符也是半型),這種情形下可能就要加空白了。
yindian同学的zhspacing,使用XeTeX的0.997的新原语,可以做到很好的字型切换,禁则调整。请参见http://code.google.com/p/zhspacing/
目前我有一个针对LuaTeX的很粗糙的lua设置脚本,等LuaTeX调用字型的API freeze了以后放出。
哇,原來不少朋友默默的寫了不少工具。Thanks.
我對 XeTeX 的使用還不是很深入,我比較擔心的是他在中文避頭點及斷行的問題上。另外就是他中英文字型無法分別設定的問題(是有一些解法,不過,顯得不是很流利)。
LuaTeX 我個人則相當期待。
>我比較擔心的是他在中文避頭點及斷行的問題上。另外就是他中英文字型無法分別設定的問題
这些问题在0.997-dev这个版本中,可以使用XeTeX提供的premitive解决。可以说这些问题在yindian的zhspacing中解决得相当好。请李老师升级您的TeXLive 2007中的XeTeX.
目前zhspacing唯一不能解决的问题是对于LaTeX的NFSS的字体encoding切换。这个需要相关macropackage的配合,比如fontspec.
| « | 九月 2010 | » | ||||
|---|---|---|---|---|---|---|
| 一 | 二 | 三 | 四 | 五 | 六 | 日 |
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 | |||