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

Я пытаюсь отформатировать интерлинейный проект. Базовый текст на греческом языке с глоссариями на урду. Общее направление макета будет слева направо, при этом глоссарии на урду должны отображаться полностью справа налево под греческими словами. Некоторые глоссарии на урду содержат пробелы.

Я успешно настроил базовый макет. Текст на урду (арабское письмо) течёт справа налево, как и ожидалось. Однако я не могу найти способа принудительно задать направление справа налево для всего потока текста в глоссариях. Когда встречается пробел, макет, похоже, возвращается к направлению слева направо на время этого пробела. Текст на урду после пробела снова течёт справа налево. В результате получается 2 или 3 строки на урду, идущие справа налево, в общем макете, идущем слева направо.

Я подумал, не могу ли я как-то принудительно задать направление для стиля gloss|rb, но я не нахожу такого варианта в настройках шрифта стиля.

Затем я подумал, что, возможно, я смогу добавить знаки справа налево (U+200F) перед всеми пробелами (или, возможно, перед любым другим символом, требующим такой обработки) в changes.txt, например:

in "\|.*?\\rb\*": " " > "\u200f "

Это не даёт никакого эффекта.

Я знаю, что выражение выше применяется в правильном месте – потому что, если я выведу «_» (нижнее подчёркивание) вместо пробела, то макет текста на урду будет правильным (кроме самого подчёркивания!). Я пробовал использовать альтернативные символы пробела, но они также возвращаются к направлению слева направо (что неудивительно).

image

Строки выше должны течь вот так (используя подчёркивание в качестве пробела)

image

Есть ли какие-нибудь указания от кого-либо, кто пробовал это сделать?

Джефф

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

6 Ответов

0 голосов

Привет, Джефф,

Мне самому не приходилось это делать, но я подумал о ещё нескольких вещах, которые стоит попробовать…

Вы пробовали ВСЕ альтернативные символы пробела, включая неразрывные пробелы? Не забудьте о «УЗКОМ НЕРАЗРЫВНОМ ПРОБЕЛЕ» (U+202F).

Вы пробовали заменить пробел на символ нулевой ширины без соединения (zero-width non-joiner)? (U+200C) Это не даст вам ровно того, что вы хотите, но, возможно, это будет ближе к желаемому результату или станет частью решения.

Я выполнял ряд задач с знаками RTL, и даже так, я часто удивляюсь, когда пытаюсь применить их, что иногда не получаю их в правильных местах. (Наверное, я НАСТОЯЩЕЕ не понимаю правила…) Поэтому я бы рекомендовал попробовать все остальные комбинации – в вашем изменении выше поставьте \u200f после пробела, поставьте его и перед, и после пробела, вставьте один сразу после \rb, перед концом поля и т.д. Возможно, одна из комбинаций даст нужный результат. (И вам не нужно понимать, почему это работает, если результат желаемый!)

Удачи…

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

Скорее всего, это неправильный подход, но когда мы сталкивались с чем-то похожим на то, что вы описываете, я предложил использовать глиф, которого нет в арабской орфографии, но который всё равно определён как RTL, вместо того чтобы пытаться решить вопрос с правильной последовательностью глифов объявления направления.

То есть, вместо пробела \u0020 между арабскими словами в каждой глоссе используйте что-то с похожей шириной, но определённое как RTL в Unicode… например, ивритский пасик \u05c0. Это превращает проблему в вопрос о том, как скрыть ивритскую пунктуацию, что решаемо путём закрашивания её прозрачным цветом.

Однако в случае, на который я ссылаюсь, причина была связана с цифрами в арабском тексте, которые мы помечали как «итальянский» язык при конвертации из-за некоторой проблемы со шрифтом. Этот «итальянский для цифр» был глобальной настройкой, связанной с используемым нами шрифтом, а не специфичной для арабской вёрстки. И это изменение языка создало проблемы с пробелами и пунктуацией вблизи. Решением в том случае в итоге стало переклассификация цифр в другой язык (но всё ещё не арабский, если я правильно помню). Но это лишь предложение о том, что обеспечение правильной установки языков в тексте может повлиять на расположение глифов без необходимости прибегать к более экзотическим исправлениям, которые я предлагаю. То есть, похоже, композитор интерпретирует пробелы как ltr, что означает, что он считает их греческими, а не арабскими. Если вы убедитесь, что стиль символов, используемый для текста глосс, определяет все символы как арабский язык, возможно, этого будет достаточно.

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

Моя первая мысль была в русле одного из предложений Джеффа – я предполагаю, что маркер U+200F должен стоять сразу перед словом, то есть после пробела, а не перед ним.

Я предполагаю, что направление текста в разделе \rb просто задаётся общим направлением текста основного языка, и что для переопределения этого потребуется от команды разработки перепрограммирование.

Последнее предложение – попробовать использовать что-то вроде символа подчёркивания, но стилизовать его цветом, совпадающим с фоном. Так что, возможно, что-то вроде:
in "\|.*?\\rb\*": " " > "\\sc _\\sc\*"
а затем стилизовать Small Caps этим цветом. По сути, это может быть любой стиль символов, который вы не используете иначе.

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

Спасибо всем за эти идеи.

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

Джефф – я пробовал символ нулевой ширины без соединения, и он работает нормально! (но не оставляет пробела). Думаю, я мог бы сделать этот символ активным и определить его как некоторое количество клея (пробела)? Мои знания TeX очень-очень ржавые, и я не уверен, как за это взяться. Я пробовал:

\catcode`\‌=\active
\def‌{\bgroup\hskip 0.25em\egroup}

(там есть 200c после \catcode `\ и \def)

Это работает – но даёт тот же результат, что и пробел (что, наверное, неудивительно, поскольку это теперь количество пробела).

Я также пробовал:

\catcode`\‌=\active
\def‌{\bgroup\beginR\hskip 0.25em\egroup}

это другой результат, но всё ещё не правильный – и я знаю, что в данный момент я просто наугад ищу решение.

Малахи – я попробовал ваше предложение, но в результате получилась ошибка TeX, которую я не буду приводить здесь. Думаю, проблема в том, что это вставляет разметку USFM в секцию атрибутов \rb ...|...\rb*

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

\catcode`\׀=\active
\def׀{\bgroup\color{white}׀\egroup}

но я получаю жалобу ! Argument of \color has an extra }

Я не знаю, как использовать \color или доступен ли он вообще таким образом, или это проблема синтаксиса. Я осознаю, что в данный момент я ищу в темноте.

Без цвета сам Пасик на самом деле работает отлично! Я бы хотел, чтобы был символ пробела со свойством Right-To-Left.

Спасибо за ответы и идеи.

Джефф

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

Ранее я подразумевал, что мы искали решение с «объявлением направления», прежде чем сосредоточиться на языке как решении для того, чтобы запятые появлялись «ПОСЛЕ» правильного слова, когда цифры были близко (конкретно в диапазонах стихов).

Глифы переопределения LTR и RTL предоставляются, чтобы принудить композиторы интерпретировать последующие глифы одним или другим образом. Но они влияют на отображение везде, где вы их используете (или могут и не влиять…), поэтому их становится очень весело понимать, где они находятся в потоке текста. И в конце концов они всё равно не делали того, что было указано на этикетке в Indesign CS6 с несколькими сложными плагинами вёрстки, и шрифтом с известными opentype «функциями», которые вызывали проблемы с направленностью.

Но если у вас есть возможность подавать в PTX print regex unicode " \u глифы, или html entity &…; номенклатуру вместо самого глифа, unicode глифы переопределения направления могут сработать. Они могут сработать в этом случае, даже если вы имеете дело с самим глифом, но опять же, эти глифы мешают порядку отображения последующих глифов практически везде, где они появляются, поэтому интерпретация того, что вы на самом деле видите, затруднена, и быстро приводит к анализу в шестнадцатеричном редакторе для восстановления вашего файла и рассудка.

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

Похоже, нам здесь нужна немного помощи. Я добавил поддержку хуков начала и конца в код обработки интерлинейного текста. Так что, в теории (всё непроверено), вы должны сможете добавить строку вроде:

\sethook{start}{gloss|rb}{\beginR}

и всё должно быть хорошо.

Я только что закоммитил изменение, так что оно должно быть в следующем выпуске 2.2.46 или более позднем. Что касается того, нужна ли нам какая-то GUI для этого, – это открыто для запроса от сообщества. Это ещё одна кнопка выбора. Хотим ли мы «ещё одну кнопку выбора»?

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

Спасибо за добавление помощи, Мартин!

Я установил 2.2.46 сегодня днём и добавил \sethook{start}{gloss|rb}{\beginR} в ptxprint-mods.tex. К сожалению – похоже, нет никакого эффекта. Вывод такой же, как и раньше – включая попытки с добавлением U+200F или U+202D перед пробелами.

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

Я только что попробовал это снова после обновления до 2.2.50, и теперь правильная RTL-отрисовка работает в глоссариях на урду. Превосходно!

Переведено машиной с языка English
Мне нужна была эта кнопка! Мой спонсор нашёл этот тред поддержки, и это решило проблему. Думаю, это, вероятно, нужно всем, кто делает интерлинейный текст библейского текста с глоссариями на арабском письме.
Переведено машиной с языка English

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

0 голосов
2 ответов 104 просмотров
Консультанту нужен PDF-файл, в котором интерлинеарный текст расположен в одной колонке, а сам текст - в другой. Как ... чего начать, чтобы это реализовать. Я умею делать диглоты.
john_nystrom 312 задал вопрос авг 14
+1 голос
0 ответов 132 просмотров
Если вы хотите протестировать новые функции, вы можете скачать последнюю версию PTXprint, выпущенную сегодня. Исправления ... Но мы надеемся исправить это в ближайшее время.
Mark P 3,2тыс. задал вопрос дек 23, 2020
0 голосов
1 ответ 303 просмотров
Частичный стих в нижней части левого столбца появляется после списка, отмеченного как таблица в ParaText.
anon180868 195 задал вопрос июл 11, 2024
0 голосов
1 ответ 41 просмотров
Здравствуйте! В PTXPrint я хотел бы использовать опцию Висячие номера стихов для поэзии (Hanging Poetry Verse Numbers ... сбить наших читателей с толку. Большое спасибо! Фил
anon913937 124 задал вопрос ноя 18, 2025
0 голосов
10 ответов 604 просмотров
У нас возникли некоторые проблемы с двухколоночной раскладкой. В одном месте номер главы накладывается на текст (2 ... ? Или это программная ошибка, которую нужно исправить?
rickarellanes 167 задал вопрос авг 27, 2021
Welcome to Support Bible, where you can ask questions and receive answers from other members of the community.
So Peter was kept in prison, but the church was earnestly praying to God for him.
Acts 12:5
3,049 вопросов
6,007 ответов
5,672 комментариев
2,029 пользователей