
Tenho um documento em inglês no qual preciso inserir alguns exemplos de palavras de vários idiomas diferentes, incluindo árabe e persa.
Eu meio que consegui funcionar com o babel
pacote e o \foreignlanguage{arabic}{الأحد}
comando, mas os caracteres saem ilegíveis, provavelmente por causa da coisa da direita para a esquerda (RTL). Se eu inverter manualmente todos os caracteres ( \foreignlanguage{arabic}{دحألا}
), eles aparentemente não se juntam como deveriam... novamente, por causa do RTL.
O modelo/estilo com o qual sou forçado a usar é compilado, pdflatex
mas NOT xelatex
. A tentativa de usar o arabtex
pacote ou bidi
pacotes quebra o modelo com uma série de erros explosivos.
Alguma sugestão?
PS: copiar e colar o trecho de texto literal codificado em UTF-8 do meu editor de texto parece se corrigir para RTL neste editor stackexchange, então não tenho certeza se posso fornecer a imagem completa do problema que estou lidando com... :(
EDITAR: aqui está um MWE ...
\documentclass[10pt]{article}
\usepackage[usenames]{color} %used for font color
\usepackage{amssymb} %maths
\usepackage{amsmath} %maths
\usepackage{booktabs}
\usepackage[utf8]{inputenc}
\usepackage[arabic,farsi,bulgarian,greek,magyar,frenchb,german,english]{babel}
\usepackage{CJKutf8}
\begin{document}
\begin{tabular}{p{1.8cm}ccccccc}
\toprule
Language & $\rho$ & 1 & 2 & 3 & 4 & 5 & 6 \\
\midrule
German & 0.568 & weißt & überrascht & teppich & schwäche & kompetent & verbündet \\
Hungarian & 0.506 & tegyünk & recepciós & leírás & oktat & visszaveti & rengette \\
French & 0.500 & envoyer & vélo & randonnée & blessure & mixte & matérialisme \\
Bulgarian & 0.505 & \foreignlanguage{bulgarian}{време} & \foreignlanguage{bulgarian}{болка} & \foreignlanguage{bulgarian}{самотен} & \foreignlanguage{bulgarian}{съдружие} & \foreignlanguage{bulgarian}{надделеят} & \foreignlanguage{bulgarian}{уязвимите} \\
Greek & 0.491 & \foreignlanguage{greek}{πόρτα} & \foreignlanguage{greek}{πατινάζ} & \foreignlanguage{greek}{εξοχή} & \foreignlanguage{greek}{επεξεργάζομαι} & \foreignlanguage{greek}{ορίζοντας} & \foreignlanguage{greek}{εδαφικός} \\
Arabic & 0.512 & \foreignlanguage{arabic}{الأحد} & \foreignlanguage{arabic}{كحض} & \foreignlanguage{arabic}{ةرافسلا} & \foreignlanguage{arabic}{ةظتكملا} & \foreignlanguage{arabic}{يثراك} & \foreignlanguage{arabic}{ددب} \\
Korean & 0.495 & \begin{CJK}{UTF8}{mj}비가\end{CJK} & \begin{CJK}{UTF8}{mj}기억\end{CJK} & \begin{CJK}{UTF8}{mj}무서운\end{CJK} & \begin{CJK}{UTF8}{mj}따라서\end{CJK} & \begin{CJK}{UTF8}{mj}왜곡\end{CJK} & \begin{CJK}{UTF8}{mj}지배하는\end{CJK} \\
Chinese & 0.482 & \begin{CJK}{UTF8}{gbsn}星期三\end{CJK} & \begin{CJK}{UTF8}{gbsn}司机\end{CJK} & \begin{CJK}{UTF8}{gbsn}要求\end{CJK} & \begin{CJK}{UTF8}{gbsn}动态\end{CJK} & \begin{CJK}{UTF8}{gbsn}翻新\end{CJK} & \begin{CJK}{UTF8}{gbsn}锲而不舍\end{CJK} \\
Persian & 0.433 & \foreignlanguage{farsi}{روزنامه} & \foreignlanguage{farsi}{فروشگاه} & \foreignlanguage{farsi}{درد} & \foreignlanguage{farsi}{فکری} & \foreignlanguage{farsi}{تقویت} & \foreignlanguage{farsi}{نزدیکی} \\
Japanese & 0.326 & \begin{CJK}{UTF8}{min}月\end{CJK} & \begin{CJK}{UTF8}{min}スキー\end{CJK} & \begin{CJK}{UTF8}{min}祭り\end{CJK} & \begin{CJK}{UTF8}{min}正直\end{CJK} & \begin{CJK}{UTF8}{min}地質\end{CJK} & \begin{CJK}{UTF8}{min}撤退\end{CJK} \\
\bottomrule
\end{tabular}
\end{document}
As palavras árabe e persa (farsi) são traduzidas incorretamente para mim.
ATUALIZAÇÃO: Aqui está a aparência da saída para mim. Como você pode ver, o árabe e o persa (farsi) estão invertidos.
Responder1
Resposta curta: Em vez de \foreignlanguage{arabic}
e \foreignlanguage{farsi}
, use \AR
e \FR
.
Em primeiro lugar, o MWE dado na questão (pelo menos a partir dea revisão atual) certamente não é Mínimo. Aqui está algo mais curto:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[arabic,farsi,english]{babel}
\begin{document}
Arabic \foreignlanguage{arabic}{كحض}
Persian \foreignlanguage{farsi}{فروشگاه}
\end{document}
que produz
onde os textos em árabe e persa não são compostos da direita para a esquerda como deveriam ser.
Por que isso acontece é fácil de explicar: a representação Unicode do texto árabe كحض consiste em
e esses três pontos de código devem ser colocados da direita para a esquerda (com regras adicionais como aquelas para ligaduras), dando كحض. Em vez disso, quando esses caracteres são colocados ingenuamente na ordem em que ocorrem na entrada (algo como: ك x ح x ض onde usei x para separar os caracteres), você verá o tipo de saída incorreta que vê acima. (Da mesma forma para o persa.) Então, o que falta são as instruções para o TeX colocar os caracteres na ordem correta.
Isso parece ser um bug nobabelsuporte do pacote para esses idiomas. Alguns comentários sobre questões relacionadas (1,2) referem-se a um \textRL
comando: carregar o pacote babel \usepackage[arabic,farsi,english]{babel}
como acima de fato define um \textRL
comando, mas tem um bug: \show\textRL
mostra que ele se expande para \expandafter \@farsi@R {#1}
que o segundo idioma selecionado substitua o primeiro.
Uma análise mais detalhada dos logs revela que este \textRL
comando vem dearabi
carregado pelo babel, cuja documentação menciona esse problema e diz que \textRL
está obsoleto. Em vez disso, o que recomenda é \AR
e \FR
para árabe e farsi, respectivamente. Portanto, podemos usá-los em nosso MWE:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[arabic,farsi,english]{babel}
\begin{document}
Arabic \AR{كحض}
Persian \FR{فروشگاه}
\end{document}
que produz corretamente:
Para o não-MWE na questão, podemos simplesmente substituir cegamente \foreignlanguage{arabic}
e \foreignlanguage{farsi}
por \AR
e \FR
respectivamente, para obter esta saída: