我想制作几个中间对齐的段落,这是代码:
\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
。)
当将字符放入时hbox
,两个段落就会左对齐!
如何修改\start ... \stopalignment
环境来达到命令产生的效果\midaligned
?
答案1
当您使用命令 ConTeXt 启用中文文本的换行功能时,\setscript
会在所有中文字母之间添加一个小的可变量空格。此空格用于填充每行的可用空间并补偿标点符号和引号的间隙。
当尝试将文本居中时,alignment
文本左侧和右侧的填充材料不够强,无法抵消每个字母之间的可拉伸文本。您可以使用关键字broad
进行对齐,以获得更强的填充材料,从而防止字母之间的空间用于填充行。
避免字母之间出现空格的另一种方法是将它们放在一起,\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