当我运行以下 MWE 时出现非致命错误:
%!TEX TS-program = xelatex
%!TEX encoding = UTF-8 Unicode
\documentclass[12pt]{article}
\usepackage{geometry}
\geometry{letterpaper}
\usepackage{amsmath}
\usepackage{graphicx}
\usepackage{xltxtra,fontspec,xunicode}
% Choose roman font (choosing the mapping so that ``-->“, '-->’ etc.).
\setromanfont[Mapping=tex-text]{Gentium}
\setmonofont[Scale=0.90,Ligatures=NoCommon]{Courier}
% Greek (not strictly necessary since I just use Gentium for both Greek and Latin).
\newfontfamily\greekfont{Gentium} % GFS Porson
% Arabic
\usepackage[novoc,fdf2alif]{arabxetex}
\newfontfamily\arabicfont[Script=Arabic,Scale=1.2,WordSpace=2]{USAMA NASKH}
\usepackage{bidi}
\usepackage{bidipoem}
\renewcommand\poemcolsepskip{1cm}
\newcommand{\ar}[1]{\textarab{#1}}
\usepackage[american]{babel}
\usepackage{csquotes}
\begin{document}
\title{Title}
\author{Author}
\date{date}
\maketitle
text
\end{document}
错误信息出现两次:
/usr/local/texlive/2017/texmf-dist/tex/xelatex/bidi/latex-xetex-bidi.def:122: L
aTeX Error: Command \XeTeX already defined.
Or name \end... illegal, see p.192 of the manual.
显然存在一些与bidi
或相关的问题arabxetex
,因为当我注释掉这些行时,错误消息就消失了。
问题:有没有办法在不删除阿拉伯文字功能的情况下解决这个问题?
答案1
@cfr 对我的问题的评论值得升级为答案,我在这里给出答案:
正如@cfr所建议的,解决方案是停止独立于和删除的加载fontspec
和。这意味着我还必须在开始定义希腊和罗马字体系列之前加载(因为后者需要)。bidi
arabxetex
xltxtra
arabxetex
fontspec