\noindent は bidi マーカーで囲まれている場合は効果がありません

\noindent は bidi マーカーで囲まれている場合は効果がありません

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 では、最初の行がインデントされて表示されます。

目に見えない双方向マーカーに関する注意

\noindent、すべてのヘブライ語テキストの前に表示されます。 は\noindentbidi マーカーで囲まれています。 そのすぐ前には、Unicode Right-To-Left Mark (U+200F) と Left-To-Right Embedding (U+202A) の 2 つのマーカーが、この順序で配置され、そのすぐ後には Pop Directional Formatting (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+2006=SIX-PER-EM SPACEや 8199 = 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 = "other")が設定されている場合、

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

abc‮xyz‬123
\end{document}

生産する

ここに画像の説明を入力してください

これは指定された順序であり、ブラウザの表示と一致しますが、宣言のコメントを解除してコントロールのcatcodeを10にすると、次のようになります。

ここに画像の説明を入力してください

方向転換がなく、偽の空間があります。

関連情報