cht電腦資訊文書排版TeXTeX Tips
adm Find login register

有關 關於標點符號的「對齊」

yih
joined: 2008-12-03
posted: 12
promoted: 3
bookmarked: 3
1subject: 有關 關於標點符號的「對齊」Promote 0 Bookmark 12008-12-15quote  

LGJ 在 2008-11-02 發表的 "關於標點符號的「對齊」" 提到:

> 目前的中文標點符號可概分兩種系統,一種是置於字框中間,另一種是置於底線左方

>(和英文的標點符號類同)。
> 在英文的話,如果大家有接觸過 Micro-typography 的話,就會知道,文章右邊界

> 如果有標點符號的話,讓他幾何式的對齊,並不符合人> 類視覺上的流利感。外,會多出空白,

....................................... 

 

     我用一個另類的方法可 使句號(full period) 在一行右邊界有不凹進去的結果,

     方法是 "。" 用  

         "\hspace*{-.5ex}。\unskip\hspace*{-1.90ex}\hphantom{a} "

     取代 (雙引號去掉. 注意 \hphantom{a}後面須有一空白 )

    當然上面的 \hspace* 的負空白之大小與所用中文字型有關與大小無關, 下面的例子是用

    Windows 的 mingliu.ttc 字型

  看下面的例子:

將下列一段:

\noindent
本數學文本件顯示,利用 ChiTeX 可以輕鬆地編寫%
中文。數學文件。除了 ChiTeX 特有的幾個%
特殊指令,使用 ChiTeX 就像使用英文的 TeX 一樣的方便。

換為:

本數學文本件顯示,利用 ChiTeX 可以輕鬆地編寫%
中文\hspace*{-.5ex}。\unskip\hspace*{-1.90ex}\hphantom{a} 數學%
文件\hspace*{-.5ex}。\unskip\hspace*{-1.90ex}\hphantom{a} 除了 ChiTeX 特有的幾個%
特殊指令,使用 ChiTeX 就像使用英文的 TeX 一樣的方便。

就可得到所希望的近似結果  (行尾的 % 不一定需要, 像 chitex 就不需要)

請見附檔. 就實用而言可用 prepocessor 或寫進讀取中文的 macros

 

Hung-Yih Chen

 

本人已不在此站活動

joined: 2007-09-19
posted: 4946
promoted: 325
bookmarked: 206
歸隱山林
2subject: Promote 0 Bookmark 02008-12-15quote  

陳老師,這樣的話等於是沒有邊界的標點符號也會進行調整了?雖然字框大小可能是一樣的,但那個標點符號在這個字框的位置會偏左(以橫排而言)。

而我在〈關於標點符號的「對齊」〉一文中想表達的是:

  1. 是由排版引擎本身完成的(primitive 指令)。
  2. 他只針對邊界處的標點符號有作用,其他的地方的標點符號和原先的完全一樣。

中文標點,目前的話,xetex 可以部份做得到。要真正能做到的話,據 Werner 的說法,是要等 luatex 成熟的時候。所以,microtype pacakge 的作者就沒有更進一步的動作使用 macro 去控制了。

 


yih
joined: 2008-12-03
posted: 12
promoted: 3
bookmarked: 3
3subject: Promote 0 Bookmark 02008-12-15quote  
LGJ

陳老師,這樣的話等於是沒有邊界的標點符號也會進行調整了?雖然字框大小可能是一樣的,但那個標點符號在這個字框的位置會偏左(以橫排而言)。

而我在〈關於標點符號的「對齊」〉一文中想表達的是:

  1. 是由排版引擎本身完成的(primitive 指令)。
  2. 他只針對邊界處的標點符號有作用,其他的地方的標點符號和原先的完全一樣。

中文標點,目前的話,xetex 可以部份做得到。要真正能做到的話,據 Werner 的說法,是要等 luatex 成熟的時候。所以,microtype pacakge 的作者就沒有更進一步的動作使用 macro 去控制了。

     在 "\hspace*{-.5ex}。\unskip\hspace*{-1.90ex}\hphantom{a} "

     的前面的 \hspace*{-.5ex} 是可以不需要的, 因 mingliu.ttc 的句號為全字型, 才用之以調整

     不用也可以, 這樣句號就不會向左移, 當然會把句號後面的字稍往前或往後拉, 但這不重要, 因為本來

     字與字之間的 skip 本來就是有彈性的

 

 

yih
joined: 2008-12-03
posted: 12
promoted: 3
bookmarked: 3
4subject: 有關標點符號的「對齊」的 macros 的改良Promote 1 Bookmark 12008-12-21quote  
yih

     在 "\hspace*{-.5ex}。\unskip\hspace*{-1.90ex}\hphantom{a} "

     的前面的 \hspace*{-.5ex} 是可以不需要的, 因 mingliu.ttc 的句號為全字型, 才用之以調整

     不用也可以, 這樣句號就不會向左移, 當然會把句號後面的字稍往前或往後拉, 但這不重要, 因為本來

     字與字之間的 skip 本來就是有彈性的

       在第一篇中有關標點符號的「對齊」的 macros 不夠精確, 下列是改良的

       macros 不會受到中文左右字距改變設定的影響 :

\usepackage{calc}  % 放在 \begin{documet} 之前

\makeatletter
\newbox\ch@nbox
\def\chsetspace{
\setbox\ch@nbox\hbox{。}
\newskip\chskipa
\newskip\chskipb
\chskipb=1em
\chskipa=\wd\ch@nbox
\setlength{\chskipa}{\chskipb*\ratio{\chskipa}{\chskipb}}
\multiply\chskipa by 10\divide \chskipa by 23}
\chsetspace

% 然後將 "。"  換為 "。\unskip\hspace*{-1.90ex}\hphantom{a}\hskip\chskipa"

例如:

本數學文本件顯示,利用 ChiTeX 可以輕鬆地編寫%
中文中文。\unskip\hspace*{-1.90ex}\hphantom{a}\hskip\chskipa 數學%
文件。\unskip\hspace*{-1.90ex}\hphantom{a}\hskip\chskipa 除了 ChiTeX 特有的幾個%
特殊指令,使用 ChiTeX 就像使用英文的 TeX 一樣的方便。
 

P.S. 上面的  \hspace*{-1.90ex} 中的 -1.90ex 有時須視所用字型而調整.  -1.90ex 是適合 Windows 的 \mingliu.ttc 及 kaiu.ttf

       但是如 \uming 中的 句號 。 可為  -2.25ex , 而 , 及 ; 可為  -2.62ex

P.S. 這只是提供一可行的方法 也許不是 LGJ 或其他一些人要的結果

我將其原理說明如下:

   。\unskip\hspace*{-1.90ex}\hphantom{a}\hskip\chskipa

若"虛擬"的 a (有 a 之寬的空白)在行尾, 則在行尾"對齊", 此時。與"虛擬"的 a  重疊,

原來。在a 右邊的部分被擠壓為"null"

  若 。 在行中, \hskip\chskipa 在行中會多出 \chskipa 的空白, 補足"null"部分

 

 

 

 

edited: 1

cht電腦資訊文書排版TeXTeX Tips
adm Find login register
views:13383