0 票
873 次瀏覽

大家好,

我想請大家幫忙製作一本參考聖經。
我們有一份帶有交叉引用的聖經文本。

預設的交叉引用順序是
「被引用標記 - 節號 - 引用內容」
例如「a 1 詩 102:25; 賽 40:21; 約 1:1,2; 來 1:10」

我想將其改為先顯示章節,然後將同一節下的所有被引用標記歸併在一起,就像普通的參考聖經那樣,例如
「第 1 章
1 a 詩 102:25; 賽 40:21; 約 1:1,2; 來 1:10 b 詩 89:11; 90:2; 徒 17:24; 羅 1:20; 來 11:3 c 伯 38:4…」

我想這需要一些腳本。有人能提供幫助嗎?

機器翻譯自 English
PTXprint 由 (102 點) 提出
已重新顯示 | 873 次瀏覽

6 個回答

0 票

嗯。是的,這幾乎肯定只能透過預處理程式碼來完成。章節中的第一個會獲得額外的「章節」文字,以此類推。嘗試在 TeX 中執行此操作會非常困難。

假設您每次使用文本中的選取內容時都會重新執行該過程,那麼它應該可以正常運作。目前的程式碼透過建立觸發清單來套用外部清單,其中包含如下條目:

\AddTrigger MAT28.15
\x - \xo 28:15 \xt Mt 9:31; 27:8\x*
\EndTrigger

\AddTrigger MAT28.19
\x - \xo 28:19 \xt Mt 13:52; 24:14; Mk 16:15-16; Lk 24:47; Acts 1:8; 2:38; 8:16; 14:21; Rom 6:3; 1 Cor 1:13; 2 Cor 13:14; Gal 3:27\x*
\EndTrigger

您可以使用任何您喜歡的文本處理程式(例如 perl、python,甚至 unix 世界中的 sed)自行製作觸發檔案,而不是讓 python 來處理。
至於要在檔案的 USFM 部分放入什麼內容才能產生您想要的格式,我不完全確定。在同一個
節上有多個觸發器應該不會有問題,因此您不需要將行合併在一起,但我預計您需要一些自訂標記來產生上標的 calees。

但我一直假設您不希望在文本中顯示 callers,我這樣假設對嗎?您的範例中有它們……讀者如何將 callee 與該詞聯繫起來?您是否真的希望將您的 xrefs 合併到聖經文本的中間?我預計這需要手動或至少是半手動的過程。

機器翻譯自 English
由 (1.1k 點) 提出

你好,

我想我的解釋不夠清楚。
我們的文本在正文中間有交叉引用,例如

\v 1 \x + \xo 1:1 \xt Иох 1:1,2; Евр 1:10\xЭхэнд \x + \xo 1:1 \xt Дуу 8:3; 33:6; 89:11,12; 102:25; 136:5; 146:6; Иса 44:24; Иер 10:12; 51:15; Зех 12:1; Үйл 14:15; 17:24; Кол 1:16,17; Евр 11:3; Илч 4:11; 10:6\xБурхан тэнгэр ба газрыг бүтээжээ.

然後,結果如下所示:
タイトルなし

所以,我的問題是更改順序並合併同一節下的被引用標記。

機器翻譯自 English
0 票

那麼,如果我重新陳述一下我現在的理解……您想要做的是處理 \xo 數據,執行以下操作:

  1. 如果當前註釋的章節與上一個不同,則在當前註釋前添加一個包含(帶註釋的)章節的空註釋。(例如 \x - \xo Chapter 2\x* \x + \xo 1 \xt ...\*)
  2. 只有當節號與上一個引用不同時,才打印節號。
  3. 如果 \xo 條目與上一個完全相同,則完全刪除該條目。

我肯定可以用 perl 寫這個,但我對 python 不夠熟悉。您是否需要 perl 腳本取決於您和同事使用的操作系統等情況(perl 在 linux 上幾乎肯定可用,但我認為在 windows 上通常不可用)。

機器翻譯自 English
由 (1.1k 點) 提出

是的,完全正確。
我在 Windows 上使用 Perl,所以請為其製作一個 perl 腳本。
謝謝。

機器翻譯自 English

這似乎可以運作。您必須將第一行替換為 Windows 上所需的內容。

#!/usr/bin/perl -w
# This little script answers a request https://community.scripture.software.sil.org/t/cross-references-in-reference-bible/3470/2 "
# * Prepend to the current note a null note with the (annontated) chapter if that is different to the last one. (e.g. \x - \xo Chapter 2\x* \x + \xo 1 \xt ...\*)
# * Only print the verse number if that is different to the last reference.
# * Entirely delete the \xo entry if it is identical to the last one.
#
# It assumes that all xo entries are in the format chapter:verse, and that verses in xref \xo entries are only numeric. 

use strict;
my $chapter='';
my $verse='';

$\=''; # Swallow whole file as one chunk
$/='';
sub beautify {
        my ($c,$v)=@_;
        if ($c ne $chapter) {
                $chapter=$c;
                $verse='';
                print "\\x - \\xo Chapter $c\\x*";
        }
        if ($v ne $verse) {
                $verse=$v;
                "\\xo $v";
        }
}

while(my $file=(<>)) {
        foreach my $chunk (split(/(\\x.*?\\x\*)/, $file)) {
                $chunk=~s/\\xo (\d+):(\d+)/beautify($1,$2)/e;
                print $chunk;
        }
}
機器翻譯自 English

謝謝。您的腳本在 Windows 上運作良好,沒有任何問題。
結果如下:
タイトルなし
現在,我想更改順序。目前的結果是
「被引用標記 - 節號 - 引用內容」,例如「а 1 Иох 1:1,2; Евр 1:10」,
我想要
「節號 - 被引用標記 - 引用內容」,例如「1 а Иох 1:1,2; Евр 1:10」,如我第一帖所示。
另外,同一節中的所有被引用標記可以放在同一行嗎?
您有什麼想法嗎?

機器翻譯自 English
0 票

如果您想實現這一點,您需要進行一些編程,以:

  1. 將一節中的所有交叉引用提取到一個交叉引用中,無論是在 SFM 中還是在觸發器文件中,然後從文本中移除它們
  2. 將文本中的交叉引用位置轉換為帶有合適固定標籤的簡單標籤點(看起來像交叉引用錨點,但沒有交叉引用)
  3. 將這些相同的標籤提取到該節開頭的複雜交叉引用中。
  4. 關閉文本和註釋中的所有被引用標記(callees)。
機器翻譯自 English
由 (658 點) 提出
0 票

為了稍微反駁一下 Martin,腳本可能可以修改以給出接近的結果。不過,我不確定它具體會如何顯示。如果您讓它說:

     if ($v ne $verse) {
                $verse=$v;
                print "\\x - \\xo $v\\*";
        }

那麼,類似於您獲得一個顯示 Chapter X 的空腳註,您將獲得一個顯示 Y 的空腳註(在節 Y 的第一個腳註上),然後是該節中第一個腳註的其餘部分。其他腳註將不會有章節或節號。但是您需要開啟分段註釋(paragraphed notes),並且可能需要更改一些內容,例如腳註間距(我想不起它叫什麼了,但我認為現在它在用戶界面中)。一旦您開啟了分段註釋,除非您在 perl 輸出的內容中包含一些原始 TeX 命令,否則您不會看到節 Y 單獨佔一行。(在節 Y 的腳註內容前綴 \penalty -10000\space 可能就足夠了)。

很可能,在這個練習的某個階段,這樣取巧的做法會達到其極限,此時要么 Martin 的答案將成為正確的做法,要么需要對 TeX 代碼進行非常顯著的更改(這可能會破壞其他人的項目)。

在 TeX 方面,您需要「劫持」 \xo 宏,讓它在進入輸出流之前將章節:節參數解釋為值,然後在 TeX 中進行比較和輸出重定義。危險在於,如果有人有一個 \xo 並非總是後跟 chapter:verse,而是 chapter.verse 或類似格式,代碼會給出奇怪且預料不到的錯誤。
在 TeX 中定義健壯的宏是很困難的,而且沒有標準定義人們會在 \xo 中放入什麼(也沒有保證他們只在交叉引用中使用它!)。
再想想,實際上最好定義一個帶有定義終止符的自定義宏,該宏進而解析為 \xo,而不是劫持 \xo。
例如 \def\zmyxrefstyle#1:#2\*{comparisonde} 來設置被引用標記的前綴。
當然,您仍然必須讓腳註引用標記生成器代碼在被引用標記之前放置章節號和/或節號。我猜測這至少需要半週的編程和除錯,但可能還有我忘記的事情會將其推遲到一週或三週。

除非有多個用戶非常明確地要求,否則我們不太可能在未來一年內找到時間來做這件事。

機器翻譯自 English
由 (1.1k 點) 提出
0 票

這是我今天早上想出來的一個方法。我們需要撰寫一個新的里程碑,例如 \zcaller*,讓使用者可以將其插入到交叉引用或腳註中,以便 ptxprint 能在該位置插入引用來源。接著,\x - \xo 1\xt Gen 1:1\x* 就會變成 \x - \xo 1\xt \zcaller*Gen 1:1\x*,然後關閉輸出引用來源的功能。這需要開發團隊投入一些工作,但比目前這些長篇大論的想法簡單多了!

機器翻譯自 English
由 (658 點) 提出
0 票

不過,如果節中有多個交叉引用,它仍然無法消除多個 1。但這只需要刪除該節中後續交叉引用中的 \xo 即可。

機器翻譯自 English
由 (658 點) 提出

相關問題

0 票
1 個回答 282 次瀏覽
在一個 RTL 的 Paratext 專案中,我尚未找到任何能同時正常運作的經文參考設定(Scripture Reference Settings) 經文文字與模組規定的組合 經文參考必須在章節分隔符(:) 節範圍分隔符 ... Assistant 等)中加入規則以插入 RTL 標記 但 Paratext 應該有辦法正確處理這個問題吧?
Denny Emser 115 提出 已提問 9月 16
+1 票
1 個回答 211 次瀏覽
我不確定這是不是個 bug,但因為我剛花了一段時間試圖解決一個我明明之前已經解決過的問題,所以我想在這裡寫下解決方案 我一直使用聖經模組(Bible modules)來引用個別經節,這些經節是為一系列教學中的部分特 ... 入某種段落標記(paragraph marker),以阻止聖經模組認為樣式仍然是 \toc1,儘管我已經翻到該書卷的幾個章節和經節了
anon297911 424 提出 已提問 2月 10, 2021
0 票
9 個回答 903 次瀏覽
在為阿拉伯文字系統語言列印模組時,我注意到經文引用的列印順序不正確 以下是我的模組 SFM 檔案中的內容: \s God creates the world \r ($(GEN 1:1-27)) \ref GEN 1:1-27 以下是我從 ... 章節號 冒號 起始節數 連字號 結束節數 現在我仔細查看,發現平行經文標題中也有同樣的錯誤
Jim_Smith 131 提出 已提問 10月 3, 2023
0 票
4 個回答 374 次瀏覽
我正在使用 PTXprint 1.9 我處理的 USFM 檔案包含腳註,但沒有包含 \fr 標記 看起來 PTXprint 似乎幫我自動加入了 (非常感謝,這可能是我們應該修正的問題 )但無論在 Header + Footer 分頁的 Verse ... 個相關問題,我找不到任何設定可以移除註釋區域中腳註裡的 \fr 參考 我是不是漏掉了某個設定?
da4396 126 提出 已提問 7月 22, 2021
0 票
1 個回答 128 次瀏覽
我正在處理一個單卷書籍的出版物 過去在處理單卷書籍時,我曾經能夠設定一個包含參考範圍但不含書名的頁眉 現在,無論位置(頁眉或頁腳)如何,我甚至無法讓參考範圍顯示出來 我安裝了最新版本的 PTXprint (3.0.33) 和 Paratext ... 支援代理建議尋找隱藏頁眉的選項,但我沒有看到任何可以開關此功能的選項 還有什麼其他方法可以進行故障排除?
Rebecca Peak 102 提出 已提問 6月 25
Welcome to Support Bible, where you can ask questions and receive answers from other members of the community.
And I tell you that you are Peter, and on this rock I will build my church, and the gates of Hades will not overcome it.
Matthew 16:18
3,062 個問題
6,022 個回答
5,691 則評論
2,036 位使用者