pdfLaTeX를 사용하여 아랍어 및 페르시아어/페르시아어를 오른쪽에서 왼쪽으로 출력하기

pdfLaTeX를 사용하여 아랍어 및 페르시아어/페르시아어를 오른쪽에서 왼쪽으로 출력하기

아랍어와 페르시아어를 포함한 다양한 언어의 몇 가지 예시 단어를 삽입해야 하는 영어 문서가 있습니다.

babel패키지와 명령을 사용하여 작동하도록 설정했지만 \foreignlanguage{arabic}{الأحد}아마도 오른쪽에서 왼쪽(RTL)으로 인해 문자가 깨져서 나옵니다. 모든 문자( \foreignlanguage{arabic}{دحألا})를 수동으로 반대로 하면 RTL 때문에 예상대로 결합되지 않는 것 같습니다. 다시 말하지만.

내가 사용해야 하는 템플릿/스타일은 와 함께 컴파일되지만 pdflatexNOT 입니다 xelatex. arabtex패키지를 사용하려고 시도하면 bidi엄청난 오류가 발생하여 템플릿이 중단됩니다.

어떤 제안이 있으십니까?

추신: 내 텍스트 편집기에서 리터럴 UTF-8로 인코딩된 tex 조각을 복사하여 붙여넣으면 이 스택 교환 편집기에서 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}짧은 대답: and 대신 and를 \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}

생산하는

MWE의 출력

아랍어와 페르시아어 텍스트는 오른쪽에서 왼쪽으로 조판되지 않습니다.

이런 일이 발생하는 이유는 설명하기 쉽습니다. 아랍어 텍스트 كحص의 유니코드 표현은 다음과 같이 구성됩니다.

그리고 이 세 가지 코드 포인트는 오른쪽에서 왼쪽으로 배치되어(합자와 같은 추가 규칙을 사용하여) كحص를 제공합니다. 대신 이러한 문자가 입력에서 발생하는 순서대로 순진하게 배치되면(예: x를 사용하여 문자를 구분한 경우) 위에서 볼 수 있는 잘못된 출력이 표시됩니다. (페르시아어의 경우도 마찬가지입니다.) 따라서 TeX에서 문자를 올바른 순서로 배치하는 지침이 누락되었습니다.

이것은 버그인 것 같습니다.바벨패키지는 이러한 언어를 지원합니다. 관련 질문에 대한 일부 의견(1,2) 명령을 참조하세요 . 위와 같이 \textRLbabel 패키지를 로드하면 실제로 명령이 정의되지만 여기에는 버그가 있습니다. 선택한 두 번째 언어가 첫 번째 언어를 재정의하도록 확장된다는 것을 보여줍니다 .\usepackage[arabic,farsi,english]{babel}\textRL\show\textRL\expandafter \@farsi@R {#1}

로그를 자세히 살펴보면 이 \textRL명령이 다음에서 나온 것임을 알 수 있습니다.arabi문서에서 이 문제를 언급하고 \textRL더 이상 사용되지 않는다고 말하는 babel에 의해 로드됩니다. 대신에 권장되는 것은 \AR각각 \FR아랍어와 페르시아어입니다. 따라서 MWE에서 이를 사용할 수 있습니다.

\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에 대한 출력

관련 정보