+1 голос
850 просмотров

Кто-нибудь знает, есть ли утилита командной строки для преобразования формата USFM в USX (или любой другой вариант XML)?

Я хотел бы написать скрипт, чтобы получить несколько разных файлов .sfm из разных проектов и выполнить массовое преобразование… С помощью встроенной функции Tools–>Advanced–>Export Project to USX сделать это довольно сложно.

Кроме того, в USX приняты некоторые странные решения в области проектирования, которые, похоже, являются прямым отражением кода USFM, а не истинного XML. По крайней мере, они кажутся странными мне, у которого очень мало опыта в этой области… но я ожидал, что тег будет закрываться в конце главы, а не сразу после номера главы, например:
<chapter number=“1” style=“c”>
    all the verses
</chapter>

а не
<chapter number=“1” style=“c” />

У меня точно такой же вопрос о тегах стихов.

Может ли кто-нибудь объяснить, почему XML работает именно так, или предложить другие, более логичные форматы XML? Эти файлы будут использоваться внутри издательского проекта, поэтому нас не слишком беспокоят внешние стандарты.

Обратите внимание, я пробовал утилиту Haiola usfm2usfx.exe, но не могу заставить её работать, но если люди скажут, что это лучший вариант, я попробую разобраться, что не так.

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

6 Ответов

0 голосов
Лучший ответ

Извините, это не сработает. Вы можете читать результат уже настроенного модуля, над которым Paratext уже выполнил генерацию модуля, но вы не можете записать модуль в Paratext и заставить его понять, что это модуль, и выполнить генерацию.

ПРАВКА: Похоже, я пропустил несколько вопросов, заданных более двух лет назад: :grimacing:

Да, теперь он должен выводить формат 3.0.

К сожалению, нет. rdwrtp8 предназначен для чтения/записи необработанных файлов, чтобы другие приложения могли читать/записывать данные Paratext. Это требует, чтобы данные были обратимыми (round-trip-able), а изменения, определенные в PrintDraftChanges.txt, не являются обратимыми.

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

снова показан
0 голосов

Я не знаю такого инструмента. Лучший способ, по-моему, использовать стандартизированную схему расположения для экспорта файлов USX, например C:\My Paratext 8 Projects\[project name]\local\USX и получать их оттуда.
Что касается маркеров глав и стихов, они называются контрольными точками (milestones) и являются одним из способов обработки перекрывающейся разметки.
Это для печатного издания или только цифрового?

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

Это для печатного издания. Издательская программа, которую мы используем, SILE, принимает на вход XML. На самом деле она принимала бы вход в стиле TeX (т.е. USFM), но программист, с которым я работаю, предпочел бы использовать XML.

Я предполагаю, что формат USX будет работать идеально для программиста, поэтому эти другие вопросы — для моего собственного понимания.

Думаю, это просто дизайнерские решения, но я задаюсь вопросом, почему тот, кто создал USX, решил, что <chapter> означает «номер в начале главы», а не «глава». Моё понимание XML состоит в том, что обычно используется форматирование вида
<tag attributes=“aaa”>content</tag>

То, как это устроено сейчас:
<chapter number=“1” style=“c” > не имеет содержимого
Где я ожидал бы:
<chapter number=“1” style=“c”>the actual content of the chapter<\chapter>

Возможно, я упускаю что-то, но я не вижу, как это вызвано проблемами перекрывающейся разметки.

Вот еще одна проблема — следуя стилю религиозных книг нашего региона, наш проект планирует отмечать номера стихов в конце стихов, а не в начале. С тем, как сейчас работает маркер <verse>, нам придется использовать скрипты, чтобы переместить тег в другое положение в документе XML с обычным текстом, но если USX использовал бы формат, который, по-моему, должен быть:
<verse number=“1” style=“v”>verse text</verse>
то было бы довольно просто заставить программу, читающую XML, интерпретировать эту строку и сказать «напечатать атрибут ‘number’ в конце ‘verse text’, а не в начале».

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

Спустя год и полгода я по-прежнему хочу эту функциональность.

Встроенная функция Paratext «export project to USX» — это именно то, что мне нужно, но я хотел бы автоматизировать ее, чтобы я мог включить ее в скрипт командной строки. Код конвертации USFM–>USX должен быть в PT. Есть ли способ получить этот код от разработчиков (понимая, что с нашей стороны потребуются некоторые модификации, чтобы заставить его работать на том языке, который мы используем)? Если да, как мне это сделать?

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

Похоже, вам нужен автономный инструмент, но если вам нужен только текст проекта в формате USX, Paratext 8+ поставляется с небольшим инструментом командной строки, который может извлечь текст проекта в формате USX:
rdwrtp8 -r projectShortName bookCode chapterNum resultFileName -x

Флаг -x используется для указания формата USX вместо формата USFM.
Если chapterNum равно 0 (ноль), возвращается вся книга.

Это нельзя использовать для ресурсов по очевидным причинам.

Было бы сложно вынести код разбора за пределы Paratext, поскольку он сильно зависит от настроек проекта и информации о стилях для создания USX из USFM.

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

Когда я увидел ваш недавний пост, я собирался предложить Haiola, но вижу, что вы уже пробовали это. Признаюсь, я сам его не использовал. Я бы предложил связаться с автором по поводу любых проблем, которые вы обнаружили, если rdwrtp8 не предоставляет решения.

Что касается перекрывающейся разметки, я бы предположил, что примером может послужить Неемия 8. В моей печатной NIV глава 8 начинается посреди абзаца. И номер стиха (в данном случае 1) напечатан рядом с номером главы (который набран буквицей). В других главах номер стиха опускается, если он равен 1.

В Paratext лист стилей определяет иерархию маркеров, такую как id > ide > c > p > v. И для большинства глав и абзацев это можно отобразить в XML так, как вы ожидаете (с элементом c, содержащим элемент p и т.д.). Но для Неемии 8 иерархия Paratext нарушается, поэтому я подозреваю, что в USX есть элемент c без содержимого.

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

Спасибо, @anon291708, я думаю, rdwrtp8 сделает именно то, что мне нужно. У меня есть несколько вопросов по нему, так как я только что его запустил.
Он выводит USX в формате версии 2.5, который использовал PT8. Будет ли он когда-нибудь обновлен для вывода в формате 3.0, как это делает PT9?
Похоже, он не использует файл PrintDraftChanges.txt во время процесса экспорта, тогда как пункт меню «Export project to USX» в PT8/9 использует его. Есть ли способ включить эти изменения?

@Bobby, спасибо за предложение Haiola. Да, я пробовал его безрезультатно. Что касается перекрывающихся маркеров, после прочтения этого поста год или два назад и размышлений о проблемах, я думаю, что я лучше понял, почему это важно (и почему любая система будет иметь врожденные недостатки).

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

Теперь я хотел бы написать скрипт, который берет файл спецификации Библии (Bible Module spec file) и создает из него выходной файл. Мне сказали здесь, что rdwrtp8.exe должен сделать это, но я не могу заставить его работать.

Должен ли он? Должен ли я иметь возможность взять файл спецификации Библии, загрузить его в PT внешне как книгу XXA-XXG, а затем экспортировать его… и чтобы результирующий файл был выходом модуля Библии со всеми заполненными текстами Писания?

Команды, которые я использую:
rdwrtp8 -w PROJ XXA 0 "D:\My-Modules\module1.sfm"
и
rdwrtp8 -r PROJ XXA 0 "D:\My-Expanded-Modules\module1.sfm"

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

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

0 голосов
2 ответов 58 просмотров
Мне нужно преобразовать файл USX в USFM. Я вижу, что в Paratext есть опция для обратного преобразования, но не ... преобразование их в USFM поможет Proskomma лучше с ними работать.
yeti 109 задал вопрос мар 19
0 голосов
2 ответов 406 просмотров
Hello, I am writing as a representative of a small task team assigned to review proposals for what becomes a ... necessary information with you. Thank you. jmkla [Email Removed]
[Expert]
jmkla
290
задал вопрос окт 2, 2015
0 голосов
2 ответов 247 просмотров
In the USX export file from Paratext, for certain references, the transformation adds an extra - in the tag. ... bug in the USX transformation. Any help would be appreciated.
anon753074 109 задал вопрос апр 24, 2020
0 голосов
1 ответ 37 просмотров
Мы используем /xt в перекрёстных ссылках в сносках, настроенных на использование короткого названия книги. Но в глоссарии ... код USFM, который я мог бы использовать для этого?
Lenice 180 задал вопрос окт 7, 2025
0 голосов
1 ответ 453 просмотров
Я хотел бы экспортировать проект в HTML, чтобы делиться черновиками с другими людьми. Я не хочу экспортировать в PDF ... далее. Как мне скрыть маркеры USFM в экспортированном HTML?
bit 495 задал вопрос апр 14, 2022
Welcome to Support Bible, where you can ask questions and receive answers from other members of the community.
Just as a body, though one, has many parts, but all its many parts form one body, so it is with Christ.
1 Corinthians 12:12
3,049 вопросов
6,007 ответов
5,673 комментариев
2,029 пользователей