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

Я создаю макет для большого количества материалов из учебной Библии. В этом макете все примечания представляют собой абзацы, выровненные по левому краю, с отступом первой строки (hanging indent).

Меня смущает вопрос о том, как сообщить PTXPrint / TeX, что я не хочу, чтобы происходило какое-то выравнивание строк (balancing of lines). Вы можете увидеть, что я имею в виду, на скриншоте ниже для 1.8 и 1.22. На некоторых строках есть достаточно места для дополнительного текста.

Если я установлю для этих абзацев стиль Justified (Выровнено по ширине), эта проблема исчезает (на строку помещается как можно больше текста).

image

Я пробовал подстраивать параметр Maximum Ragged Space (Максимальное неровное пространство) для стиля этих абзацев. Минимальное изменение возможно (если только я не применю ноль, тогда PTXPrint по сути выравнивает текст по ширине).

image

Что еще мне нужно сделать, чтобы строки заполняли ширину колонки (measure) как можно больше перед переносом на следующую строку?

Переведено машиной с языка English
PTXprint от [Expert]
(290 очков)
| 543 просмотров

9 Ответов

0 голосов

Привет, @jklassen! Да, это действительно выглядит странно, и я пока не уверен, что может быть причиной. Я пробовал настроить параметры для другой учебной Библии и обнаружил, что она работает так, как я ожидаю (хотя и с двухколоночным макетом для расширенных сносок \ef, а не с одноколоночным):

Я думаю, вы пробовали увеличить Maximum Ragged Space до значения, например, .65, чтобы посмотреть, позволит ли это последней строке иметь меньше слов, а верхней строке заполнить пространство чуть больше, как вы и ожидали.

Если это не решит проблему, нам придется подождать, что скажут об этом @David_Gardner или @Martin_Hosken.

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

Я бы поддержал предложение Марка: увеличьте максимальное неровное пространство (maximum ragged space) до 0.5 или выше. Система будет пробовать больше вариантов переноса строк, но она все равно будет пытаться уместить текст в как можно меньшее количество строк, и это также позволит оставить больше места на последней строке абзаца.

Текущий код позволяет последней строке абзаца включать дополнительное «неровное» (raggedness) пространство, и он очень не любит приближаться к пределу этой неровности. Как вы видели, если вы не позволяете «неровности» быть заметной, вы требуете от него выравнивания текста по ширине. На самом деле, вы требуете от него полного выравнивания текста по ширине, включая последнюю строку.

Если вы напишете \tracing{j} в вашем файле ptxprint-mods.tex, то в вашем журнале (log) появится много дополнительной информации, и интересные строки для этого вопроса будут выглядеть примерно так:

s@tsideskips p (p). 0.0pt/0.0pt, pf=0.0pt plus 1.0fil
s@tsideskips s1 (s1). 0.0pt plus 158.52597pt/0.0pt plus 158.52597pt, pf=0.0pt

Первые две показывают, сколько отступа и неровности разрешено слева / справа.

Последняя — это \parfillskip, и это мера того, сколько места разрешено на последней строке абзаца (до бесконечности для p, и никакого дополнительного места для центрированного s1). (возможно, это звучит слишком строго?? По сути, это говорит о том, что системе не следует заботиться о том, является ли последняя строка самой длинной)

s@tsideskips q2 (q2). 21.68065pt/0.0pt plus 79.26299pt, pf=0.0pt plus 79.26299p
t

Для выравнивания по правому краю (ragged-right) q2 я вижу, что неровность составляет 79.26pt, и на последней строке может быть дополнительное 79.26 пунктов, поэтому система будет очень недовольна, если разрешить более 169.5 пунктов пространства на последней строке.

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

Спасибо, Марк, и Дэвид, за то, что вы рассмотрели этот вопрос, и за подробности о том, как это работает в TeX, Дэвид.

У меня есть абзацы для примечаний, для которых я создал маркер \zefp. Я настроил его как отступ первой строки (hanging indent) (коэффициент левого отступа 0.18em, и -0.18 для первой строки).

Размер страницы A4 (ширина 210 мм - поля 14 мм = 28 мм всего) – так что ширина текста составляет 182 мм.

Если я оставлю значение по умолчанию для «максимального неровного пространства» (max ragged space) 0.25, журнал показывает:

s@tsideskips zefp (zefp). 10.40648pt/0.0pt plus 129.46004pt, pf=0.0pt plus 129.
46004pt

(около 45 мм максимального пространства на последней строке)

Если я установлю максимальное неровное пространство в 0.65, журнал показывает:

s@tsideskips zefp (zefp). 10.40648pt/0.0pt plus 336.59294pt, pf=0.0pt plus 336.
59294pt

(около 118 мм максимального пространства на последней строке)

что, я думаю, объясняет, почему TeX не позволяет большей части второй строки примечания для 1:8 оставаться на первой строке.

image

Как я могу настроить параметры, чтобы те же свойства, которые разрешены для «p» (по вашему описанию, Дэвид, pf=0.0pt plus 1.0fil), применялись к моему выдуманному \zefp? Я также хочу разрешить «бесконечное» пространство на последней строке.

Переведено машиной с языка English
0 голосов

Хм. Я пытался ответить по электронной почте, но письмо вернулось.

1.0 fil (в настоящее время) применяется к абзацам, выровненным по ширине. У меня такое чувство, что нам может понадобиться какой-то дополнительный параметр.

Я не понимаю, почему 0.65 недостаточно. Может быть, оно сравнивается с шириной колонки, а не с текущей шириной?? Но в любом случае, похоже, вам, вероятно, нужно увеличить «неровность» (raggedness) до 1.0 (или даже 2? Для TeX это просто математика, но я ожидаю, что пользовательский интерфейс не будет доволен, и вам, вероятно, придется использовать ptxprint-mods.sty, чтобы ввести это).

Если это не сработает, вы, вероятно, можете добавить хук (hook) примерно такой:

\sethook{zefp}{end}{\hskip 0pt plus 1fil }

(предполагая, что я правильно указал последовательность параметров)

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

Спасибо, что исследовали это вместе со мной, Дэвид.

Я не могу установить параметр выше 1. Я пробовал, и это не вызывает никаких изменений.

Я попробовал хук. (Мне нужно было поменять местами позицию и маркер :slight_smile: )

\sethook{end}{zefp}{\hskip 0pt plus 1fil}

но изменений нет. Я уверен, что хук работает, потому что я могу просто вставить туда некоторый текст, и он появляется – и если я вставляю достаточно дополнительного текста, часть текста на первой строке этого абзаца начинает перемещаться на вторую (чтобы быть более сбалансированным).

Переведено машиной с языка English
от [Expert]
(290 очков)
+1 голос

Это разочаровывает. TeX действительно отбрасывает элементы в конце строк (чтобы, например, у вас не было пробелов в конце строк в тексте, выровненном по ширине), и я думаю, что именно это происходит здесь. Итак, еще несколько попыток:

% Option1: set the paragraph fill to what we want, then end the paragraph before the code can put it back (this might break things):
\sethook{end}{zepf}{\parfillskip=0pt plus 1fil \endgraf} 
% Option 2: No line break, Lots of stretch, no line break and then a zero width line(which will neither be visible nor discarded).
\sethook{end}{zepf}{\penalty 10000\hskip 0pt plus 1fil \penalty10000\vrule width 0pt depth 0pt height 1pt}
Переведено машиной с языка English
от (1,1тыс. очков)
0 голосов

Спасибо, Дэвид.

Оба этих предложения работают! Я оставил включенным Вариант 1.

Переведено машиной с языка English
от [Expert]
(290 очков)
0 голосов

Спасибо каждому из вас за то, что вы преследовали этот вопрос, пока не было найдено решение. MH очень близко подошел к идентичному решению пару дней назад, но без этого финального \endgraf, казалось, это не давало никакого эффекта. Я рад, что теперь у нас есть конкретный путь вперед.

Я также думаю о том, нужно ли нам где-то в PTXprint переключатель, который сделал бы это поведение по умолчанию для одного или нескольких (списка) маркеров.

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

Проблема с \endgraf там в том, что это может вызвать проблемы в определенных обстоятельствах. В обычном тексте это, вероятно, нормально, но только «вероятно».

Я думаю, что «единственное истинное решение» может заключаться в наличии дополнительных вариантов выравнивания:
1: выровнено по ширине (justified), 2: выровнено по правому краю, 3: правый край жесткий (right-rigid),
4: по центру, 5: по центру жесткий (centred-rigid), 6: по левому краю,
7: левый край жесткий (left-rigid), 8: левый край с заполнением (left-fill), 9: левый край жесткий с заполнением (left-rigid-fill)
(где rigid = жесткие пробелы)
image

Я добавил варианты «rigid» (жесткие), думая, что некоторые люди могут предположить, что это связано с вариантами неровного левого/правого края.

Обратите внимание, что я не знаю способа иметь какое-либо дополнительное «заполнение» (fill) на последней строке абзаца, выровненного по правому краю, поэтому строки в 2, 3 отличаются от 6, 7.

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

Я благодарен за решения, Дэвид. Спасибо.

Если можно, я хотел бы поделиться здесь мнением, которое может быть несколько субъективным. Я думаю, что Alignment: Left (Выравнивание: по левому краю) по умолчанию должно означать жесткую (rigid) настройку. Я думаю, что это то, чего, вероятно, ожидает человек, выбирающий невыровненный по ширине текст – и он представляет текст в форме, которая потенциально наиболее читаема (забота о том, чтобы интервалы между словами были постоянными). Конечно, очень неровный левый (или правый) край может быть проблемой для читаемости, что может быть связано с узкой длиной строки. Смягчение этого можно сделать с помощью переноса слов (hyphenation), и, возможно, с помощью опции «смягчить невыровненный / неровный край?», которая применяла бы некоторую растяжимость к пробелам между словами, чтобы создать более гладкий край.

Опять же - мои мысли о значениях по умолчанию. Я уверен, что есть другие мнения. В любом случае - наличие простого способа достижения «жесткого» (rigid) режима будет очень полезно.

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

Если вам действительно, действительно нужно уместить в каждой строке как можно больше текста, независимо от того, как это будет выглядеть, вы можете установить \adjdemerits=0, чтобы остановить попытку TeX сбалансировать сжатые строки рядом с растянутыми. И если вы используете переносы слов, установите \doublehyphendemerits=0 и \finalhyphendemerits=0. По умолчанию все они установлены в 10000, что звучит как много, но учитывая, что это штрафные баллы (demerits), которые являются квадратами штрафов, это примерно 100 в терминах штрафов.
Но, как и при настройке звуков в синтезаторе, очень легко внести изменения, которые сделают всё хуже! Вы ведь спрашивали, как уместить в строке как можно больше! Пусть ваш некрасивый результат ляжет на вашу голову :slight_smile:

Переведено машиной с языка English

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

0 голосов
1 ответ 20 просмотров
Я прочитал Лучшие практики для глоссария (https://support.bible/3952/glossary-best-practices?show=3952#q3952). Информация там ... не так , я буду очень признателен! Спасибо, Пол
Paul 642 задал вопрос окт 21, 2025
0 голосов
1 ответ 91 просмотров
Для записи я хотел бы раздать каждому чтецу его главу (или главы) на отдельных страницах так, чтобы абзацы никогда не ... Это было бы очень полезно! Спасибо за любую помощь! Роланд
Roland 245 задал вопрос мар 10, 2025
0 голосов
5 ответов 529 просмотров
Я пытаюсь напечатать диглот, но в результате получаю осиротевшие абзацы. Похоже, что PTXprint выстраивает абзацы рядом друг ... ?) Screenshot 2021-04-22 1638341301 922 129 KB
anon043588 110 задал вопрос апр 22, 2021
0 голосов
2 ответов 310 просмотров
Здравствуйте! Я всегда обновляю до последней версии PTXprint, потому что это просто и полезно. Сейчас я ... мне решить эту проблему. Буду благодарен. Благословений, anon952029
David Tuallawt 287 задал вопрос дек 4, 2021
0 голосов
3 ответов 287 просмотров
Hello, Anytime I use the \ip Introduction - Paragraph marker in Paratext, the words turns grey. I would be grateful if you can help me correct it. Thank you. anon878803
anon878803 132 задал вопрос ноя 8, 2019
Welcome to Support Bible, where you can ask questions and receive answers from other members of the community.
And let us consider how we may spur one another on toward love and good deeds, not giving up meeting together, as some are in the habit of doing, but encouraging one another—and all the more as you see the Day approaching.
Hebrews 10:24-25
3,047 вопросов
6,007 ответов
5,672 комментариев
2,027 пользователей