在 moderncv 包中使用阿拉伯字母

在 moderncv 包中使用阿拉伯字母

我正在尝试将一小段代码或阿拉伯语脚本包含到我的文档中。如果我使用 documentclass article,这可以正常工作,但我使用的是moderncv是提供的包这里,出于某种原因,它无法与任何阿拉伯语 LaTeX 软件包(据我所知)很好地兼容。注意:我的 MacTeX 发行版也打包了一个moderncv软件包,但我认为它有所不同:它们给出的结果略有不同。事实上,我的文档本身无法与此版本的 编译moderncv

无论如何,我没能包含我的阿拉伯文字。我尝试了以下方法:

  • \usepackage{polyglossia}。但它需要 XeLaTeX,而我的文档似乎不想用 XeLaTeX 编译(只能用 pdfLaTeX 编译)。我认为还有其他一些基于 XeLaTeX 的解决方案。
  • \usepackage{arabtex}当我尝试编译它时,出现以下错误,我不知道如何解决:

    ! Undefined control sequence
    <argument> \rm \it
    
    l.551 \settransfont {\rm \it }
                                  % standard font for transliteration
    
  • \usepackage[LAE,T1]{fontenc}\usepackage[arabic]{babel}这给了我以下错误:! LaTeX Error: \tableofcontents undefined.这实际上很容易修复:\newcommand{\tableofcontents}{}。冲洗并重复其他几个命令。直到最后,我收到此错误消息:

    ! Undefined control sequence.
    \thetable ...\number \c@table .\number \c@chapter 
                                                      }\protect \else \protect \...
    l.24 \section{Arabic}
    

    再次,我不知道如何解决这个问题。

  • 最后,我尝试直接设置字体,如下所示:

    \usepackage[LAE,T1]{fontenc}
    ...
    {\usefont{LAE}{cmr}{m}{n}\selectfont العربية}
    

    这确实在我的文档中给出了阿拉伯字母,但它们将从左到右结束,并且它们将是字母的孤立形式,而不是连接字母。

我不介意解决方案是否丑陋,我只希望它能起作用。这只是一份全英文文档中的几个单词。

这是包含可重现该问题的软件包的最小文档moderncv(至少在我的计算机上)。

\documentclass[11pt,a4paper]{moderncv}
\usepackage[utf8]{inputenc}

\firstname{ABC}
\familyname{XYZ}
\title{curriculum vitae}

\begin{document}

\maketitle
\section{A section}

(...a few words in Arabic here...)

\end{document}

答案1

moderncv不支持旧的双字母命令,例如\rm\it并且arabtex需要这些命令,因此一种选择是声明它们加载arabtex,然后用来\RL音译阿拉伯文本;一个小例子(我不知道阿拉伯文本说了什么;我只是从其他地方复制来的):

\documentclass[11pt,a4paper]{moderncv}
\usepackage[utf8]{inputenc}
\moderncvstyle{casual}
\moderncvcolor{blue}
\makeatletter
\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
\makeatother
\usepackage{arabtex}

\firstname{ABC}
\familyname{XYZ}
\title{curriculum vitae}

\begin{document}

\makecvtitle

\section{A section}
\RL{f.s.hY AltrA_t}

\end{document}

在此处输入图片描述

答案2

你最好使用xelatex——arabtex字体虽然可读,但有点业余。

\documentclass[11pt,a4paper]{moderncv}
\usepackage{fontspec}
\usepackage{polyglossia}
\setmainlanguage{english}
\setotherlanguage{arabic}
\setmainfont{Libre Bodoni}
\newfontfamily\arabicfont[Script=Arabic]{Amiri}

\moderncvstyle{casual}
\moderncvcolor{blue}




\firstname{ABC}
\familyname{XYZ}
\title{curriculum vitae}

\begin{document}

\makecvtitle

\section{A section}
\textarabic{اسمي سليم}

\end{document}

是的,有很多错误microtype,但文档最终还是编译通过了。我不想玩弄moderncv内部机制,但删除这些错误消息应该很简单。

相关内容