
Я хочу сделать несколько абзацев, выровненных по центру, вот код:
\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
Когда вы включаете перенос строк для китайского текста с помощью \setscript
команды ConTeXt, добавьте небольшой изменяемый пробел между всеми китайскими буквами. Этот пробел необходим для заполнения доступного пространства в каждой строке и для компенсации пробелов от знаков препинания и кавычек.
При попытке центрировать текст в 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