我正在尝试将一小段代码或阿拉伯语脚本包含到我的文档中。如果我使用 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
内部机制,但删除这些错误消息应该很简单。