汉字对齐

汉字对齐

我想制作几个中间对齐的段落,这是代码:

\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

在此处输入图片描述

相关内容