Я только что выяснил причину сбоя в чужом проекте: строка. К сожалению, при создании шаблона для книг FRT кто-то допустил ошибку, и в шаблоне оказалась следующая строка:
\rem sorta will sort by \toc1, sortb by \toc2, sortc by \toc3
С этой строкой почти гарантированно произойдет сбой или неопределенное поведение.
Если в вашем разделе «Начальные сведения» (Front matter) есть эта строка, измените ее так:
\rem sorta will sort by toc1, sortb by toc2 , sortc by toc3
То есть удалите обратные слэши. В противном случае вы столкнетесь со сбоями.
Ранние версии стандарта USFM были немного нечеткими, но Paratext и стандарт USFM-3 НЕ описывают \rem как «игнорировать остальную часть этой строки», а как стиль параграфа, который не производит вывода.
Это означает:
-
\rem действует до следующего маркера параграфа
-
\rem по-прежнему должен обрабатывать любые маркеры, которые в него входят. (Иначе как он обнаружит следующий маркер параграфа?)
- Поскольку
\toc1 и аналогичные маркеры также описаны как маркеры параграфов (хотя и не используются как таковые), они должны отменять \rem
I’ve just tracked down the cause of a crash on someone’s project to a line Unfortunately there was a think-o when someone was writing the template for FRT books, and this line was included:
\rem sorta will sort by \toc1, sortb by \toc2, sortc by \toc3
This is pretty much guaranteed to cause a crash / undefined behaviour.
If you have a Front matter that includes that line, change it so that it reads:
\rem sorta will sort by toc1, sortb by toc2 , sortc by toc3
I.e. remove the slashes. Otherwise you will experience crashes.
Earlier versions of the USFM standard were a bit vague, but Paratext and the USFM-3 standard do NOT describe \rem as ‘ignore the rest of this line’, but as a paragraph style that produces no output.
This means:
-
\rem continues until the next paragraph marker
-
\rem still has to process any markers it contains. (how else will it spot the next paragraph-marker?).
- Since
\toc1 and friends are also described as paragraph markers (although not used as such) they should cancel \rem
Переведено машиной с языка English