在 aleph 后面不能放零吗?

在 aleph 后面不能放零吗?

我和一个朋友在开玩笑说 aleph 的。当我尝试输入 א0(切换这两个字符)时,它们自己切换了!任何符号序列都无法阻止这种效果。这是为什么!??

尝试将 0 和 א 反转过来输入这些内容(c&p 代表 א):

א0

א - 0

א \\\ 0

א -./ 0

然而,言语将他们分开

来自 foobar 0

我使用的是 Arch Linux,尚未在其他操作系统上测试过

编辑:数字不必为零。它适用于数字,但不适用于字母。

答案1

'א','希伯来字母 ALEF' (U+05D0)具有 BIDI(双向)类“从右到左 [R]”,因为希伯来语传统上是从右到左书写的。另一方面,数字没有指定特定的方向性,因此整个 aleph 和零块被解释为从右到左。在这种情况下,后面的字符不一定位于前一个字符的右侧,正如 Unicode 相当复杂的双向规则所规定的那样。

您有多种方法可以解决此问题。

  1. 您可以使用'ℵ','ALEF 符号' (U+2135)。它是一个符号,具有从左到右的属性:ℵ0。

  2. 除了通常的数字0,您还可以使用从左到右方向的类似零的字符,例如'〇', '表意数字零' (U+3007)

  3. 最干净的方法是使用‘从左到右标记’ (U+200E)特点 (维基百科) 在 aleph 后面:“א‎0”。这是一个不可见的零宽度字符,定义为具有从左到右的方向性。因此,它对双向文本布局算法的影响与在 א 后插入从左到右的拉丁字母相同,只是那里不会出现可见字母。

答案2

阿莱夫(U+05D0) 是希伯来字母,而希伯来语是从右到左书写的,因此 Unicode 为其分配了“从右到左”的双向类。(看Unicode TR9: 双向算法更多细节。)

拉丁字母当然是“从左到右”的。然而,零(U+0030)属于“欧洲号码”双向类别,这是一个虚弱的类 - 虽然默认情况下是 LtR,但如果它前面有一个“强”从右到左的字符,它可以切换到 RtL。(看双向字符类型解析弱类型在 TR9 中。

因此,会将整个单词进行交换 – 如果将零放在“之前”,它将显示在右侧;如果将零放在“之后”,它将显示在左侧。

答案3

或许,实现这一目标的更好方法是:

echo -e "\u200F0א"

以及强制性的 xkcd 参考https://xkcd.com/1137/

长期护理

答案4

希伯来语是从右到左书写的 - 这使得 aleph 字符携带信息,即下一个字符应该被打印左边的。

如果您对文档进行十六进制检查(或在合适的编辑器中使用箭头键将光标移动到文本中),您会注意到,您首先到达的是字母表,然后是数字。

即:“下一个字符 == 右边的字符”的假设不成立。

相关内容