0
524 次浏览

大家好,

我想请大家帮忙制作一本参考圣经。
我们有一部带有交叉引用的圣经文本。

默认情况下,交叉引用的顺序是
“被引用标记 - 节号 - 引用内容”
例如 “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 分) 发布
已重新显示 | 524 次浏览

6 个回答

0

嗯。是的,这几乎肯定只能通过预处理代码来完成。章节中的第一个会获得额外的“Chapter”文本,依此类推。试图在 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),我错了吗?您的示例中包含了它们……读者如何将引用经文与单词联系起来?您真的希望将交叉引用合并到圣经文本的中间吗?我预计这需要手动或至少是半手动处理。

机器翻译自 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
(656 分) 发布
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
(656 分) 发布
0

当一节中有多个交叉引用时,它仍然无法消除多个 1。但这只是删除一节中后续交叉引用中的 \xo 的问题。

机器翻译自 English
(656 分) 发布

相关问题

+1
1 个回答 179 次浏览
I'm not sure if this is a bug or not, but since I just spent a while trying to solve a problem that I knew ... \toc1, even though I was several chapters and verses into the book.
anon297911 424 发布 提问于 二月 10, 2021
0
9 个回答 628 次浏览
在为基于阿拉伯文字的语言打印模块时,我注意到经文引用打印不正确 以下是我的模块 SFM 文件中的条目: \s God creates the world \r ($(GEN 1:1-27)) \ref GEN 1:1-27 以下是我从 PTXprint ... ,空格,章节号,冒号,起始节,连字符,结束节 现在仔细一看,我发现平行经文标题中也有同样的错误
Jim_Smith 131 发布 提问于 十月 3, 2023
0
4 个回答 282 次浏览
我正在使用 PTXprint 1.9 我处理的 USFM 文件包含脚注,但没有包含 \fr 标记 看起来 PTXprint 正在为我自动添加它们 (非常感谢,这确实是我们可能需要修复的问题 )但是,无论我在 Header + Footer 选项卡上的 ... 选择? 相关的问题是,我找不到一个设置来移除注释区域脚注中的 \fr 标记 我是不是漏掉了某个设置?
da4396 126 发布 提问于 七月 22, 2021
0
1 个回答 38 次浏览
我正在制作单卷书出版物 过去对于单卷书,我可以在页眉中放置参考范围,而不显示书名 但现在,无论位置(页眉或页脚)如何,我甚至无法让参考范围显示出来 我安装了最新版本的 PTXprint (3.0.33) 和 Paratext (9.5) 在 ... 确的 AI 支持代理建议查找隐藏页眉的选项,但我没有看到任何允许我切换此功能的设置 我还能做什么来排查问题?
Rebecca Peak 102 发布 提问于 六月 25
0
1 个回答 151 次浏览
大家好! 我正在打印带有页眉参考范围(Reference Range)的经文片段 在某些页面上,章节号后面会插入一个不需要的连字符,如下所示: image645 899 168 KB 这种情况并不常见,例如在那本 50 页的书里只出现了一次 ... 都在一个合并的节中间结束,例如在上方的例子中,页面在第 12-15 节的中间结束 感谢帮助! André
Andre_Tousch 116 发布 提问于 四月 15, 2021
Welcome to Support Bible, where you can ask questions and receive answers from other members of the community.
For where two or three gather in my name, there am I with them.
Matthew 18:20
3,044 个问题
6,004 个回答
5,671 条评论
2,026 位用户