pdfLaTeX でアラビア語とペルシア語/ペルシア語の右から左への出力を取得する

pdfLaTeX でアラビア語とペルシア語/ペルシア語の右から左への出力を取得する

英語の文書があり、そこにアラビア語やペルシャ語など、さまざまな言語からいくつかの例文を挿入する必要があります。

babelパッケージとコマンドでなんとか動作するようにはなりました\foreignlanguage{arabic}{الأحد}が、文字が文字化けして表示されます。おそらく右から左 (RTL) の問題です。すべての文字を手動で反転すると ( \foreignlanguage{arabic}{دحألا})、どうやら文字が期待どおりに結合されないようです... これも RTL のせいです。

私が強制的に使用しなければならないテンプレート/スタイルは でコンパイルされますpdflatexが、 ではありません。パッケージをxelatex使用しようとすると、気が狂いそうなエラーが大量に発生してテンプレートが壊れます。arabtexbidi

助言がありますか?

PS: 私のテキスト エディターから UTF-8 でエンコードされたテキスト スニペットをコピーして貼り付けると、この StackExchange エディターで RTL に修正されるようです。そのため、私が対処している問題の全体像をお伝えできるかどうかはわかりません... :(

編集: これが 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}

アラビア語とペルシャ語 (ペルシア語) の単語が間違って表示されます。

更新: 私の場合の出力は次のようになります。ご覧のとおり、アラビア語とペルシャ語 (ペルシア語) が逆になっています。

答え1

短い答え:\foreignlanguage{arabic}およびの代わりに\foreignlanguage{farsi}\ARおよび を使用します\FR


まず、質問で与えられたMWE(少なくとも現在の改訂) は、決して Minimal ではありません。以下は、もっと短い例です。

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[arabic,farsi,english]{babel}

\begin{document}
Arabic \foreignlanguage{arabic}{كحض}

Persian \foreignlanguage{farsi}{فروشگاه}
\end{document}

生成する

MWEからの出力

アラビア語とペルシア語のテキストが、本来あるべき右から左にタイプセットされていません。

なぜこのようなことが起こるかは簡単に説明できます。アラビア語のテキストكحضのUnicode表現は、

そして、これら 3 つのコード ポイントは右から左に配置されることになっています (合字などの追加ルールを使用)、كحض になります。代わりに、これらの文字が入力に出現する順序で単純に配置されると (ك x ح x ض のように、文字を区切るために x を使用)、上記のような誤った出力が表示されます。(ペルシャ語でも同様です。) したがって、欠けているのは、TeX に文字を正しい順序に配置する指示です。

これは、バベルパッケージのこれらの言語のサポート。関連する質問に対するコメント(12) はコマンドを参照します。上記のよう\textRLに babel パッケージをロードすると、確かにコマンドが定義されますが、これにはバグがあります。これは に展開され、選択された 2 番目の言語が最初の言語を上書きすることを示しています。\usepackage[arabic,farsi,english]{babel}\textRL\show\textRL\expandafter \@farsi@R {#1}

ログを詳しく見ると、この\textRLコマンドはarabibabel によってロードされますが、そのドキュメントにはこの問題について言及されており、 は非推奨であると書かれています。代わりに、アラビア語とペルシア語にはそれぞれと が\textRL推奨されています。したがって、これらを MWE で使用できます。\AR\FR

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[arabic,farsi,english]{babel}

\begin{document}
Arabic \AR{كحض}

Persian \FR{فروشگاه}
\end{document}

正しくは以下が生成されます:

固定MWE出力

質問内の非 MWE については、\foreignlanguage{arabic}とをそれぞれと\foreignlanguage{farsi}に盲目的に置き換えるだけで、次の出力が得られます。\AR\FR

非MWEの出力

関連情報