Mit pdfLaTeX eine Ausgabe von rechts nach links in Arabisch und Persisch/Farsi erhalten

Mit pdfLaTeX eine Ausgabe von rechts nach links in Arabisch und Persisch/Farsi erhalten

Ich habe ein englisches Dokument, in das ich einige Beispielwörter aus vielen verschiedenen Sprachen einfügen muss, darunter Arabisch und Persisch.

Ich habe es irgendwie geschafft, dass es mit dem babelPaket und dem \foreignlanguage{arabic}{الأحد}Befehl funktioniert, aber die Zeichen werden verstümmelt ausgegeben, vermutlich wegen der Rechts-nach-links-Sache (RTL). Wenn ich alle Zeichen manuell umkehre ( \foreignlanguage{arabic}{دحألا}), werden sie anscheinend nicht so zusammengefügt, wie sie sollen ... auch hier wegen RTL.

Die Vorlage/der Stil, die/den ich verwenden muss, wird mit kompiliert, pdflatexaber NICHT mit xelatex. Der Versuch, das arabtexPaket oder bididie Pakete zu verwenden, zerstört die Vorlage mit einer Flut von irrsinnigen Fehlern.

Irgendwelche Vorschläge?

PS: Das Kopieren und Einfügen des wörtlichen UTF-8-codierten Tex-Snippets aus meinem Texteditor scheint sich in diesem Stackexchange-Editor selbst in RTL zu korrigieren, daher bin ich mir nicht sicher, ob ich Ihnen das vollständige Bild des Problems geben kann, mit dem ich mich beschäftige … :(

EDIT: hier ist ein 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}

Die arabischen und persischen (Farsi) Wörter werden von mir falsch wiedergegeben.

UPDATE: So sieht die Ausgabe bei mir aus. Wie Sie sehen, sind Arabisch und Persisch (Farsi) vertauscht.

Antwort1

Kurze Antwort: Verwenden Sie anstelle von \foreignlanguage{arabic}und und .\foreignlanguage{farsi}\AR\FR


Erstens: Der in der Frage angegebene MWE (zumindest zumdie aktuelle Revision) ist mit Sicherheit nicht minimal. Hier ist etwas Kürzeres:

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

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

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

das erzeugt

Ausgabe von MWE

wo die arabischen und persischen Texte nicht wie vorgesehen von rechts nach links gesetzt sind.

Warum das so ist, lässt sich leicht erklären: Die Unicode-Darstellung des arabischen Textes كحض besteht aus

und diese drei Codepunkte sollen von rechts nach links angeordnet werden (mit zusätzlichen Regeln wie denen für Ligaturen), was كحض ergibt. Wenn diese Zeichen stattdessen naiv in der Reihenfolge angeordnet werden, in der sie in der Eingabe vorkommen (etwa: ك x ح x ض, wobei ich x verwendet habe, um die Zeichen zu trennen), erhalten Sie die Art von falscher Ausgabe, die Sie oben sehen. (Ähnlich gilt das für Persisch.) Was also fehlt, sind die Anweisungen für TeX, die Zeichen in der richtigen Reihenfolge anzuordnen.

Dies scheint ein Fehler in derbabelUnterstützung des Pakets für diese Sprachen. Einige Kommentare zu verwandten Fragen (1,2) beziehen sich auf einen \textRLBefehl: Das Laden des Babel-Pakets wie \usepackage[arabic,farsi,english]{babel}oben definiert tatsächlich einen \textRLBefehl, dieser weist jedoch einen Fehler auf: \show\textRLzeigt, dass er erweitert wird, \expandafter \@farsi@R {#1}sodass die zweite ausgewählte Sprache die erste überschreibt.

Ein genauerer Blick auf die Protokolle zeigt, dass dieser \textRLBefehl stammt vonarabigeladen von babel, dessen Dokumentation dieses Problem erwähnt und besagt, dass es \textRLveraltet ist. Stattdessen werden \ARund \FRfür Arabisch bzw. Farsi empfohlen. Wir können diese also in unserem MWE verwenden:

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

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

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

was korrekt ergibt:

MWE-Ausgabe behoben

Für die Nicht-MWE in der Frage können wir und einfach blind durch bzw. ersetzen , um \foreignlanguage{arabic}diese Ausgabe zu erhalten:\foreignlanguage{farsi}\AR\FR

Ausgabe für Nicht-MWE

verwandte Informationen