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

Кто-нибудь знает, есть ли утилита командной строки для преобразования формата 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тыс. очков) | 825 просмотров

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 ответов 51 просмотров
Мне нужно преобразовать файл USX в USFM. Я вижу, что в Paratext есть опция для обратного преобразования, но не ... преобразование их в USFM поможет Proskomma лучше с ними работать.
yeti 109 задал вопрос мар 19
0 голосов
2 ответов 368 просмотров
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 ответов 236 просмотров
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 ответ 35 просмотров
Мы используем /xt в перекрёстных ссылках в сносках, настроенных на использование короткого названия книги. Но в глоссарии ... код USFM, который я мог бы использовать для этого?
Lenice 180 задал вопрос окт 7, 2025
0 голосов
1 ответ 430 просмотров
Я хотел бы экспортировать проект в 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.
So Peter was kept in prison, but the church was earnestly praying to God for him.
Acts 12:5
3,047 вопросов
6,007 ответов
5,672 комментариев
2,027 пользователей