0 голосов
168 просмотров

Рассмотрим вот эту довольно ужасную строку в полностью выровненном тексте:

Можно увидеть, что она была усечена, или, по крайней мере, справа есть лишнее пространство. Это потому, что для этого примера я отключил межбуквенный интервал. Лучшего переноса строки (в рамках данного обсуждения) нет, и, следовательно, нет места для вставки дополнительного пространства, в результате чего мы получаем недополненную строку. Но кто вообще так делает? Наверняка они бы включили межбуквенный интервал. Так что давайте включим совсем немного: 0,5%:

Фу. Это гораздо больше, чем максимальное растяжение в 0,5%. Что происходит? Ну, XeTeX должен решить, что делать с интервалами при таком плохом переносе. На самом деле у него есть специальный проход, который по сути говорит алгоритму переноса: у вас есть дополнительный 1 дюйм на строку (по умолчанию задается через \emergencystretch=1in), так что если вы можете выровнять текст на основе этого, то делайте это. И 0,5% добавляет ровно столько межбуквенного пространства, чтобы нам не потребовалось более 1 дюйма дополнительного пространства. Теперь строка растянута, и все это аварийное растяжение распределяется среди всех этих промежутков, независимо от любого максимального значения, которое мы могли бы задать для растяжения, и межбуквенное пространство выглядит сверхшироким и размазанным.

Это лучшее, что мы можем сделать? Считайте себя счастливыми все, кто работает с более короткими «словами» и не должен иметь дело с отсутствием межсловесных переносов. К счастью, этот текст помечен знаками переноса слов, которые превращаются в ZWSP. ZWSP определяется как принимающий межбуквенный интервал, поэтому мы можем хитрить и отключить межбуквенный интервал, сохранив при этом межбуквенное пространство для ZWSP. Мы делаем это, добавляя строку:

```

\def\intercharspace{\leavevmode\nobreak\hskip\intercharskip}

```

в наш ptxprint-mods.tex (поскольку отключение межбуквенных интервалов закомментирует его в файле задания .tex). Что мы получим, если снова отключим межбуквенный интервал?

Хм, не намного лучше, но хотя бы текст переносится по словам, а не по графемным кластерам. Это может быть предпочтительнее, а может и нет. Но красивого решения нет. Это вопрос о том, как сделать лучшее из плохой ситуации.

Комментарии приветствуются, только не говорите: «Тогда не переносите там!» (Что, конечно, правильное решение, но может не всегда быть доступно с учетом имеющегося у нас времени)

Переведено машиной с языка English
PTXprint от (656 очков) | 168 просмотров

2 Ответов

0 голосов

Если я правильно понимаю...
1. Обычно ZWSP имеет столько же пространства, сколько межбуквенный интервал, чтобы слова, соединенные им, не оказывались ближе, чем расстояние между буквами.
2. В настоящее время отключение межбуквенного интервала также пропускает определение \intercharspace, поэтому ZWSP на самом деле имеет нулевую ширину.
3. Для вышеописанного вы предлагаете, что наличие у ZWSP некоторого пространства — это худший из плохих вариантов.
4. И для этого вы устанавливаете макрос \intercharspace в непустое значение (поскольку этот макрос всегда используется в определении ZWSP), но поскольку межбуквенный интервал отключен, он на самом деле не используется в позиции межбуквенного интервала.
Хорошо, я думаю, теперь я понимаю!
 

Переведено машиной с языка English
от (1,1тыс. очков)
0 голосов

И в подлинном стиле мыльной оперы, чтобы закончить на ноте облегчения для всех, кого мучает вид такой безобразности. Уменьшив ширину текста до 95% ширины символа, мы получаем следующее слово:

Фух! Но в другой раз слово могло бы быть длиннее, и требуемое сжатие начинает становиться абсурдным. Так что вы не всегда можете отделаться этим.

Кроме того, обсуждение аварийного растяжения не было строго правильным. Да, аварийное растяжение добавляется к строке, чтобы снизить ее «плохость». Но причина, по которой нам потребовалось, чтобы межбуквенный интервал был не менее 0,5%, заключается в том, что в ptxprint есть ошибка, из-за которой любое значение ниже этого становится 0. Эта ошибка БЫЛА ИСПРАВЛЕНА! гхрр.

Переведено машиной с языка English
от (656 очков)
изменено от

Похожие вопросы

0 голосов
3 ответов 271 просмотров
В последнее время PTXprint делает для нас много замечательных вещей, набирая красивые библейские книги большими и быстрыми ... Я создал архив и отправляю его на адрес поддержки.
jeffh 1,4тыс. задал вопрос мар 28, 2023
0 голосов
2 ответов 243 просмотров
The project we are working on is failing the Quotation rule basic check because, it would seem, of where the period is ... . How do we configure Paratext to allow quoted words .
MSEAIT_LT 478 задал вопрос дек 12, 2018
0 голосов
1 ответ 314 просмотров
A project I'm working with has extensive footnotes including Greek, Hebrew, Arabic and English words inside of them ... it possible to exclude footnotes from these sorts of checks?
mnjames 1,9тыс. задал вопрос июл 20, 2018
0 голосов
1 ответ 52 просмотров
Mailto: <*Emails are not allowed*> PTXprint [2.7.17] - Error! Failed to create: MSB_BookofMark_XXC_ptxp.pdf ! File ... various settings on the Advanced tab. PTXprint Version 2.7.17
MnKN 134 задал вопрос сен 13, 2025
Welcome to Support Bible, where you can ask questions and receive answers from other members of the community.
Every day they continued to meet together in the temple courts. They broke bread in their homes and ate together with glad and sincere hearts, praising God and enjoying the favor of all the people. And the Lord added to their number daily those who were being saved.
Acts 2:46-47
3,048 вопросов
6,007 ответов
5,672 комментариев
2,028 пользователей