0
655 次浏览

在为基于阿拉伯文字的语言打印模块时,我注意到经文引用打印不正确。以下是我的模块 SFM 文件中的条目:

\s God creates the world
\r ($(GEN 1:1-27))
\ref GEN 1:1-27

以下是我从 PTXprint 2.3.45 获得的输出:

Screenshot 2023-10-03 090955

(字面意思是:“1:1-27 创世记”——章节/节部分就像在从左到右(LTR)语言中一样打印。)

但从右到左(RTL),它应该是:书名,空格,章节号,冒号,起始节,连字符,结束节

现在仔细一看,我发现平行经文标题中也有同样的错误。

机器翻译自 English
PTXprint (131 分) 发布 | 655 次浏览

9 个回答

0

这里出问题的地方有几种可能性:

  1. 文档是否确实设置为 RTL,还是 \s 实际上就是模块所说的内容?我们确实有可能做到我所说的“系列双语”(切换出版物相关部分的所有语言设置),但这不是自动的。
  2. ($(GEN...)) 引用可能生成了不正确的中间输出。测试方法:你能查看 final USFM 选项卡,看看那里的内容是否正确吗?
  3. 可能提供了一些 Unicode 方向切换字节,导致某些混乱。测试方法:你能输入(不要复制粘贴)一个数字范围到一个额外的 \r 中,看看是否有效吗?
  4. 我想,由于某种原因,\r 可能忘记了文档是 RTL 的。测试方法:你能在一个格式正确的其他行中输入一个范围吗?
机器翻译自 English
(1.1k 分) 发布
0

感谢如此迅速地处理这个问题。

  1. 这是一个完全 RTL 的文档。我不记得我是告诉 PTXprint 的,还是它从 Paratext 获取的。

  2. 你能告诉我怎么做吗?我在 PTXprint 中看不到那个选项卡。

  3. 和 4. 当我将经文引用输入到 \s\r 中时,它们以同样的方式错误地显示出来。但其他方面似乎处于 RTL 模式。其他单词以正确的 RTL 顺序显示。

\s ببب پیدایش ۱:۱-۲۷ ییی
\r ($(GEN 1:1-27))
\r پیدایش ۱:۱-۲۷
\r قیرست سکند
\ref GEN 1:1-27

Screenshot 2023-10-03 113302

机器翻译自 English
(131 分) 发布
0
机器翻译自 English
(3.2k 分) 发布

啊,就在这里。

是的,它设置为从右到左(Right-to-Left),并且采用 RTL 装订。

机器翻译自 English
0

所以嗯……至少它是一致的!
非常奇怪!

机器翻译自 English
(1.1k 分) 发布
0

从右向左(RTL)文本的行为很奇特。数字实际上是以从左向右(LTR)格式显示的。因此,如果你去掉了冒号和连字符,那串数字的正确显示方式应该是:
image 即“1127”,从左向右阅读

如果我将上面你 \s 中的文本粘贴到 Word 中,我会得到以下结果(这正是你在 PTXprint 中看到的):
image

然而,如果我将其粘贴到 LibreOffice Writer 中,我会得到以下结果:
image
(这是你希望得到的结果)

在这种情况下,我认为 Word 实际上更正确。数字是 LTR 的,而冒号和连字符在双向性方面属于“中性”(参见 Bidirectional text - Wikipedia)。这意味着它们不会强制文本的方向,而是从周围上下文获取方向。由于它们处于 LTR 字符(即数字)的上下文中,它们应保持 LTR 方向,并且整个数字和标点符号串应以 LTR 方向显示在行中,正如 PTXprint 所做的那样。

因此,从这个角度来看,PTXprint 生成的结果在理论上是正确的(基于双向文本算法)。但这实际上并不是你想要的。我们是从右向左阅读文本的,我们希望不同的片段(由标点符号分隔)像上面 LO Writer 的输出那样,按 RTL 顺序一个接一个地出现。(我实际上不知道 LO Writer 的输出为什么会那样。它似乎没有遵循 Unicode 双向算法……)

但我可以通过在 Word 中添加称为“从右向左标记”的特殊标记来获得这种行为。它们是 Unicode 码点 U+200F(参见 Right-to-left mark - Wikipedia)。你可以在标点符号后插入这些标记,以强制该标点符号后的文本方向为 RTL。要在 Word 中做到这一点,将插入点放在冒号后面(我建议使用方向键找到该位置),输入“200F”,然后按 Alt+X(按住 Alt 键并轻按 X 键)。你的第一章现在应该会跳到数字和标点符号串的右侧。在连字符后做同样的操作,你的字符串就会看起来和上面 LO Writer 的输出一样。

但现在的难点是如何在 PTXprint 的文本中插入这些 RTL 标记。我还没有测试过,但我想你可能可以使用 Changes.txt(在 Advanced 选项卡上)来创建规则,以便在正确的位置插入 RTL 标记。试试这些规则(未测试):
'(\d):(\d)' > '\1:\u200f\2'
'(\d)-(\d)' > '\1-\u200f\2'

但还有一个有趣的问题。我注意到你使用的是东阿拉伯-印度数字,它们从 U+06F0 开始。(参见 https://www.unicode.org/charts/PDF/U0600.pdf.)我主要使用的是普通的阿拉伯-印度数字,它们从 U+0660 开始。我认为 \d 数字指定也应该适用于这些数字,但如果不行,你可能需要使用类似 [\u06F1-\u06F9] 的东西来代替 \d

总之,这给你一些可以尝试的东西。我们都想知道你是否取得了进展!

Jeff

机器翻译自 English
(1.4k 分) 发布

我应该指出,这种操作不是普通 PTXprint 用户必须做的事情。如果这确实是 RTL 文本的一个全球性问题,那么我们应该想办法让 PTXprint 在“幕后”修复这个问题,这样用户就不需要采取极端措施来获得所需的输出。

机器翻译自 English
0

好吧,为了明确目标,这里有一张已发布的波斯语译本图片,其中包含平行经文指示符。第一个引用是马太福音 6:25-33,视觉顺序为:33-25:6 马太福音

你说得完全正确,数字是按从左到右(LTR)书写的,但当你有分隔符等符号时,一串数字就像是一个单词。然后所有单词都会按从右到左(RTL)的顺序排列。

Microsoft Word 让人困惑。如果我输入经文引用,它会正确显示(实际上,无论我将段落设置为 RTL 还是 LTR 都是如此)。如果我从这个浏览器窗口复制并粘贴,它会显示错误(同样,无论段落是 RTL 还是 LTR)。我想这就是所见即所得(WYSIAYG)吧。

以下是我可以在 Word 或其他图形界面中重现错误结果的一些方法:

  • 在引用的开头放置一个从左到右标记(U+200E)。
  • 如果我删除书名,章节/节部分会错误地排列。

这让我认为章节/节部分是以 LTR 模式排列的。

这里有一些进一步的测试。当我将经文引用放入经文文本中时,它们会显示错误。我很难解释这一点,除非 XeLaTeX 根本没有被告知这是一个 RTL 环境。

\id PHM
\h سسسس
\c 1
\cl
\s1 سسسس
\p \v 1 پیدایش ۱:۱-۲۸
\s1 سسسس
\p \v 2  ۱:۱-۲۸

接下来是 XeLaTeX……

如果我使用 fontspecbidi,无论上下文是 LTR 还是 RTL,输出都是错误的:

\documentclass{book}
\usepackage{fontspec,bidi}
\setmainfont[Script=Arabic]{Times New Roman}
\begin{document}
\setRTL
۱:۱-۲۷

پیدایش ۱:۱-۲۷

\setLTR
۱:۱-۲۷

پیدایش ۱:۱-۲۷
\end{document}

相反,如果我使用 xepersian,我无法让它显示错误。在这四种情况中,章节/节部分都正确排列:

\documentclass{book}
\usepackage{xepersian}
\usepackage[fontsize=16pt]{fontsize}
\settextfont{Times New Roman}
\begin{document}
۱:۱-۲۷

پیدایش ۱:۱-۲۷

\beginL
۱:۱-۲۷
\endL

\beginL
پیدایش ۱:۱-۲۷
\endL
\end{document}

我就说到这里。在我看来,xepersian 修复了 fontspecbidi 的一个缺陷,但我不确定那是什么。

机器翻译自 English
(131 分) 发布
0

我对此的理解是,您从 PTXprint 看到的输出遵循 Unicode 双向(bidi)算法,尽管它并没有给出您想要的结果。双向算法规定冒号和连字符是中性的字符,它们会跟随周围字符的流向。当它们位于从左到右(LTR)字符(例如数字)的字符串中时,它们会继续保持从左到右的方向,从而产生您看到的结果。显然,xepersian 包更改了这些标点符号的双向特性,从而给出了您想要的结果。有趣的是,在 Word 中,如果您在冒号和连字符后面加一个空格,引用就会变成您想要的样子(但会多出一个空格)。这其实很奇怪,因为空格在双向算法中也被列为中性字符(见上方链接)。我相信许多从右到左(RTL)书写的语言项目在 Paratext 中使用过这种技术,以使引用的方向“正确”。但是,添加 RTL 标记也能达到同样的效果,而无需添加空格。

您能否尝试将这些规则放入 Changes.txt 文件中,看看会有什么效果?

请注意,在您的模块中,您使用的是普通的(阿拉伯语!)数字来输入引用。您的 Paratext 项目中是否有已经使用阿拉伯语风格(印地语!)数字输入的引用?如果有,它们在 Paratext 中是如何显示的?我相信 Paratext 会在 RTL 项目中的此类引用中自动插入 RTL 标记 U+200F,以尝试使其正确显示。我假设 PTXprint 也可以做类似的事情。(不过请注意,Paratext 似乎在冒号之前插入 RTL 标记,我认为这也是一个有效的选项。)

机器翻译自 English
(1.4k 分) 发布
0

是的,如果我将这些命令放入更改文件(changes file)中,经文确实会正确显示。感谢你的修复。

如果你只看章节/节部分(۱:۱-۲۷),它是按照双向算法运行的。但根据该算法,你应该期望书名的存在(由 RTL 字符组成)会将其切换到 RTL 模式(پیدایش ۱:۱-۲۷)。(在我输入这段文字的这个文本编辑器和预览窗口中,确实发生了这种情况。)所以我想象章节/节部分是在其自己的 \hbox 或类似结构中,由于某种原因,它没有意识到自己处于 RTL 文档中。

(我不想把话题扯得太远,但如果文档没有全局设置为 RTL,可能还有其他潜在问题。我注意到脚注标记出现在单词的错误一侧,例如。它们出现在单词的右侧而不是左侧。我不确定,但这看起来像是 LTR/RTL 问题。)

我还没有尝试使用阿拉伯-印度数字。不过,我从未遇到过一种情况,即某事在阿拉伯-印度数字下有效,但在东阿拉伯-印度数字下无效。

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

好吧,很高兴你目前有一个变通方法。我会尝试与 @mjpenny 讨论此事,看看是否应该在 PTXprint 中采取一些措施。

如果你再次查看双向算法(双向文本 - 维基百科),请注意数字位于“弱”部分。我曾以为它们是“强”字符,会定义中间“中性”字符的方向。但现在我理解你的意思了,即放入书名(由“强”RTL 字符组成)会压倒“弱”数字,以定义“中性”字符的方向。

机器翻译自 English
0

你好,

我不确定我是否在这个线程中添加了任何尚未为人知的信息。我一直参与许多 RTL 项目的排版工作。我想简单补充一下我所知道的 Paratext 与 RTL 文本和引用交互的方式。

当在 Paratext 中编辑 RTL 项目时,Paratext 会识别符合经文引用格式或数字范围格式的字符串——即类似 #:##.##:#-##:#,# 等模式。当这些模式在正在编辑的打开章节中被识别时,Paratext 会在标点字符之前插入 U+200F,使它们出现在前一个数字的左侧(覆盖由数字启动的默认 LTR 方向)。

因此,而不是这样:

图片

你会看到这样:

图片

如果你在 Paratext 中按逻辑顺序输入引用,你会看到当你完成输入时发生这种视觉更新。

因此,在 Paratext 中编辑过的项目中,这些 200F 字符可能已经存在。你可能需要在使用的任何 changes.txt 表达式中考虑到这一点。我相信 Paratext 仅对在编辑器中打开过的章节执行此 200F 插入操作(即它不会遍历整个项目并执行此操作)。

在 Paratext 中这样做的原因是,以便任何下游出版商或出版工具都可以直接渲染文本——这对于某些数字应用路径尤为重要,因为出版路径不一定允许像 changes.txt 这样的干预。

分享我所理解的内容,希望在这里有所帮助。

Jeff

机器翻译自 English
[Expert]
(290 分) 发布

相关问题

0
1 个回答 56 次浏览
在一个 RTL Paratext 项目中,我尚未找到任何一组《圣经》引用设置 经文文本和模块规范能够完美协同工作 《圣经》引用必须在章节-节分隔符(:) 节范围分隔符(-)和章节范围分 ... 例如在 Scripture App Builder Publishing Assistant 等中 但 Paratext 一定有一种正确的方法来处理这个问题,对吧?
Denny Emser 115 发布 提问于 2 天
0
6 个回答 629 次浏览
大家好, 我想请大家帮忙制作一本参考圣经 我们有一部带有交叉引用的圣经文本 默认情况下,交叉引用的顺序是 被引用标记 - 节号 - 引用内容 例如 a 1 诗 102:25; 赛 40:21; 约 1:1,2 ... 1:20; 来 11:3 c 伯 38:4 gen-rsb232 635 48.2 KB 我认为这需要一些脚本 有人能帮忙吗?
Takashi Shimamura 102 发布 提问于 一月 8, 2023
0
4 个回答 293 次浏览
我正在使用 PTXprint 1.9 我处理的 USFM 文件包含脚注,但没有包含 \fr 标记 看起来 PTXprint 正在为我自动添加它们 (非常感谢,这确实是我们可能需要修复的问题 )但是,无论我在 Header + Footer 选项卡上的 ... 选择? 相关的问题是,我找不到一个设置来移除注释区域脚注中的 \fr 标记 我是不是漏掉了某个设置?
da4396 126 发布 提问于 七月 22, 2021
0
1 个回答 59 次浏览
当我在圣经模块中使用以下引用时: \ref PSA 25:4-5,8-9,10-14 它没有包含出现在 \v 8 之前的 \q1,因此将各行合并在一起,并将 \v 8 放在 \v 5 诗歌最后一行的末尾 如果我将其分成两行,显示就正常 ... q1),并在模块输出中包含该段落标记吗?它足够智能,能够包含 \v 4 之前的 \q1 在我看来,这似乎是一个错误
jeffh 1.4k 发布 提问于 五月 7, 2025
+1
1 个回答 180 次浏览
我不确定这是否是一个 bug,但既然我刚才花了一段时间试图解决一个我确信之前已经解决过的问题,我想在这里写一个解决方案 我一直在使用圣经模块来引用那些为某个教导系列中的部分特别翻译过的个别经文 在某些情况下,例如,书信中的其他经 ... 到,我需要在书的开头添加某种段落标记,以防止圣经模块认为样式仍然是 \toc1,尽管我已经深入到了书中的几个章节和经文
anon297911 424 发布 提问于 二月 10, 2021
Welcome to Support Bible, where you can ask questions and receive answers from other members of the community.
Give proper recognition to those widows who are really in need.
1 Timothy 5:3
3,049 个问题
6,007 个回答
5,672 条评论
2,029 位用户