
我想做幾個中間對齊的段落,這是程式碼:
\usemodule[zhfonts] % zhfonts is a third-party module which created by Liyanrui, for selecting Chinese fonts,font size, etc.
% https://github.com/liyanrui/zhfonts
\starttext
\startalignment[middle]
天地玄黄
宇宙洪荒
\stopalignment
\midaligned{天地玄黄}
\midaligned{宇宙洪荒}
\startalignment[middle]
\hbox{天地玄黄}
\hbox{宇宙洪荒}
\stopalignment
\stoptext
上面的程式碼沒有產生預期的效果,因為它沒有處理字元之間的距離。 (與命令進行比較\midaligned
。)
當字元放入 a 時hbox
,兩個段落變為左對齊!
如何修改\start ... \stopalignment
環境才能達到指令產生的效果\midaligned
?
答案1
當您使用指令 ConTeXt 為中文文字啟用換行時,\setscript
請在所有中文字母之間新增一個小的可驗證空格。需要此空間來填充每行上的可用空間並補償標點符號和引號的間隙。
當嘗試將文字在alignment
環境中居中時,文字左側和右側的填充材料不夠堅固,無法抵消每個字母之間的可拉伸文字。您可以使用broad
關鍵字進行對齊以獲得更強的填充材料,從而防止字母之間的空格用於填充行。
防止字母之間出現空格的另一種方法是將它們放在 a 中\hbox
,但在這種情況下,您必須\dontleavehmode
在每個框前面添加以確保它位於行的中心。
\definefontfamily [mincho] [rm] [MS Mincho]
\definefontfamily [mincho] [ss] [MS Gothic]
\definefontfamily [mincho] [mm] [Latin Modern Math]
\setupbodyfont [mincho]
\setscript [hanzi]
\starttext
\startalignment[middle]
天地玄黄\par
宇宙洪荒
\stopalignment
\blank
\startalignment[middle,broad]
天地玄黄\par
宇宙洪荒
\stopalignment
\blank
\startalignment[middle]
\dontleavehmode\hbox{天地玄黄}\par
\dontleavehmode\hbox{宇宙洪荒}
\stopalignment
\stoptext