
Por que xelatex
recua a primeira linha do texto (hebraico) no pdf obtido do seguinte manuscrito LaTeX?
\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}
A saída tipográfica:
Uma nota sobre marcadores bidirecionais invisíveis (bidirecionalidade)
O \noindent
aparece antes de todo o texto hebraico. O \noindent
está cercado por marcadores bidi. É imediatamente precedido por dois marcadores: Marca Unicode da Direita para a Esquerda (U+200F) e Incorporação da Esquerda para a Direita (U+202A), nesta ordem; e imediatamente seguido por um marcador Pop Directional Formatting (U+202C). Portanto, a ordem dos caracteres é da esquerda para a direita:
U+200F, U+202A, \, n, o, i, n, d, e, n, t, U+202C, U+0020 (a space), <Hebrew text>
Para ajudar a visualizar isso, aproveite a ilustração a seguir.
Lenda
⊳ ... Marca da direita para a esquerda, U+200F (composta como ⊲ dentro de um parágrafo rtl)
⋉ ... Incorporação da esquerda para a direita, U+202A
⋈ ... Formatação direcional pop, U+202C
Cada um desses símbolos foi digitado na janela do editordepoisa instrução que ela representa entrou em vigor.
Responder1
Seu problema é colocar U+200F no início do parágrafo. Esse é um token catcode 12: 'other', e assim inicia um parágrafo, acionando a inserção do recuo do parágrafo e \everypar
. O fato de não ser imprimível não faz diferença para o TeX. Portanto \noindent
, ocorre após o início do parágrafo e não faz absolutamente nada.
(A configuração do catcode no início do documento provavelmente não é tão pretendida quanto 8198 = U+2006
= SIX-PER-EM SPACE
e 8199 = U+2007
= FIGURE SPACE
.)
Responder2
Em geral, não é correto fornecer aos controles direcionais Unicode o código catcode 10, pois eles não poderão controlar a formatação e produzirão espaço anômalo.
Considere a corda
abcxyz123
Aquilo é
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
Se definido com os catcodes padrão (12= "other") então
\documentclass{article}
\usepackage{fontspec}
\setmainfont{Arial}
%\catcode"202E=10
%\catcode"202C=10
\begin{document}
abcxyz123
\end{document}
produz
Qual é a ordem especificada, correspondendo à exibição no navegador, mas se você descomentar as declarações para tornar os controles catcode 10, obterá
sem mudança de direção e espaço espúrio.