
У меня есть английский документ, в который мне нужно вставить несколько примеров слов из разных языков, включая арабский и персидский.
Мне удалось заставить его работать с babel
пакетом и \foreignlanguage{arabic}{الأحد}
командой, но символы выходят искаженными, предположительно из-за того, что написано справа налево (RTL). Если я вручную переверну все символы ( \foreignlanguage{arabic}{دحألا}
), они, по-видимому, не соединятся вместе так, как должны... опять же, из-за RTL.
Шаблон/стиль, который я вынужден использовать, компилируется с , pdflatex
но НЕ xelatex
. Попытка использовать arabtex
пакет или bidi
пакеты ломает шаблон потоком ошеломляющих ошибок.
Какие-либо предложения?
PS: копирование и вставка буквального фрагмента tex в кодировке UTF-8 из моего текстового редактора, похоже, исправляет себя на RTL в этом редакторе StackExchange, так что я не уверен, что могу дать вам полную картину проблемы, с которой я имею дело... :(
EDIT: вот 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, указанный в вопросе (по крайней мере, натекущая редакция) определенно не является минимальным. Вот что-то покороче:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[arabic,farsi,english]{babel}
\begin{document}
Arabic \foreignlanguage{arabic}{كحض}
Persian \foreignlanguage{farsi}{فروشگاه}
\end{document}
который производит
где арабские и персидские тексты не набраны справа налево, как должно быть.
Почему это происходит, легко объяснить: представление арабского текста كحض в формате Unicode состоит из
и эти три кодовые точки должны быть размещены справа налево (с дополнительными правилами, такими как для лигатур), что дает كحض. Вместо этого, когда эти символы наивно размещаются в том порядке, в котором они встречаются во входных данных (что-то вроде: ك x ح x ض, где я использовал x для разделения символов), вы видите тот же неправильный вывод, что и выше. (Аналогично для персидского языка.) Так что не хватает инструкций для TeX, размещающих символы в правильном порядке.
Похоже, это ошибка ввавилонПоддержка пакетов для этих языков. Некоторые комментарии по связанным вопросам (1,2) ссылаются на \textRL
команду: загрузка пакета babel, \usepackage[arabic,farsi,english]{babel}
как указано выше, действительно определяет \textRL
команду, но в ней есть ошибка: \show\textRL
она расширяется до , \expandafter \@farsi@R {#1}
поэтому второй выбранный язык переопределяет первый.
Более детальный анализ журналов показывает, что эта \textRL
команда исходит отarabi
загружено babel, чья документация упоминает эту проблему и говорит, что это \textRL
устарело. Вместо этого он рекомендует \AR
и \FR
для арабского и фарси соответственно. Поэтому мы можем использовать их в нашем MWE:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[arabic,farsi,english]{babel}
\begin{document}
Arabic \AR{كحض}
Persian \FR{فروشگاه}
\end{document}
который правильно производит:
Для не-MWE в вопросе мы можем просто слепо заменить \foreignlanguage{arabic}
и \foreignlanguage{farsi}
на \AR
и \FR
соответственно, чтобы получить такой вывод: