\noindent 在被双向标记包围时无效

\noindent 在被双向标记包围时无效

为什么xelatex缩进以下 LaTeX 手稿获得的 pdf 中的(希伯来语)文本的第一行?

\documentclass{scrartcl}

\catcode8198=10 % Left-To-Right Mark
\catcode8199=10 % Right-To-Left Mark
\catcode8234=10 % Left-To-Right Embedding
\catcode8235=10 % Right-To-Left Embedding
\catcode8236=10 % Pop Directional Formatting

\usepackage{fontspec}
\setmainfont{Arial Hebrew}
\usepackage[rldocument]{bidi}

\begin{document}
\setRTL

‏‪\noindent‬ פְּרֶצְל מנסה לישון, על מנת להחיש את מהלך הזמן. אדם הולך לו לישון בשתים-עשרה, קם כעבור רגע, והנה השעה שבע בבוקר, ומתברר שהוא השתמש בשינה בתור סוס, לדלג על שבע שעות. תחבולה זו ידועה היטב לטבע. מה עושה הטבע נגדה? נותן לפרש הערמומי להירדם בשתים-עשרה, מציף אותו בהרבה סיוטים, וכשהפרש קם תשוש ומזיע ואומר לעצמו בחצי סיפוק "לפחות עברו שבע שעות," מייד קופץ שעונו ומורה שתים-עשרה ורבע. גם לא ישנת, בסיוטים סוייטת, וכל הלילה עוד לפניך.


\end{document}

排版输出:

排版的 pdf 显示缩进的第一行。

关于隐形 bidi(双向性)标记的说明

出现\noindent在所有希伯来语文本之前。\noindent被双向标记包围。 它前面紧接着两个标记:Unicode 从右到左标记 (U+200F) 和从左到右嵌入 (U+202A),顺序如下; 后面紧接着 Pop 方向格式化 (U+202C) 标记。 因此字符顺序为,从左到右:

U+200F, U+202A, \, n, o, i, n, d, e, n, t, U+202C, U+0020 (a space), <Hebrew text>

为了帮助您形象化地理解这一点,请利用下面的插图。

传奇
⊳ ... 从右到左标记,U+200F(在 rtl 段落内排版为 ⊲)
⋉ ... 从左到右嵌入,U+202A⋈
... 弹出方向格式,U+202C

这些符号中的每一个都在编辑器窗口中排版它所代表的指令已经生效。

双向文本

答案1

您的问题是将 U+200F 放在段落开头。这是一个 catcode 12 标记:“other”,因此开始一个段落,触发插入段落缩进和\everypar。它不可打印这一事实对 TeX 来说没有区别。\noindent因此在段落开始后出现,并且什么也不做。

(文档开头的 catcode 设置可能与 8198 ==U+2006SIX-PER-EM SPACE8199 ==U+2007不一样FIGURE SPACE。)

答案2

一般来说,给 Unicode 方向控制 catcode 10 是不对的,因为它们无法控制格式并且会产生异常空格。

考虑字符串

abc‮xyz‬123

那是

  U+0061 LATIN SMALL LETTER A     a
  U+0062 LATIN SMALL LETTER B     b
  U+0063 LATIN SMALL LETTER C     c
  U+202e RIGHT-TO-LEFT OVERRIDE
  U+0078 LATIN SMALL LETTER X     x
  U+0079 LATIN SMALL LETTER Y     y
  U+007a LATIN SMALL LETTER Z     z
  U+202c POP DIRECTIONAL FORMATTING
  U+0031 DIGIT ONE     1
  U+0032 DIGIT TWO     2
  U+0033 DIGIT THREE     3

如果使用默认 catcodes (12=“其他”) 则

\documentclass{article}
\usepackage{fontspec}
\setmainfont{Arial}
%\catcode"202E=10
%\catcode"202C=10
\begin{document}

abc‮xyz‬123
\end{document}

生产

在此处输入图片描述

这是指定的顺序,与浏览器中的显示相匹配,但是如果你取消注释声明以使控件 catcode 为 10,那么你将得到

在此处输入图片描述

没有方向改变,且有虚假空间。

相关内容