\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),依此順序;緊接著是流行方向格式 (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
⋈ ... Pop 方向格式,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,那麼您將得到

在此輸入影像描述

沒有方向變化和雜散空間。

相關內容