我正在使用 polyglossia 编写混合语言文档。主要语言是阿拉伯语,尽管我的文件以英文脚本命名。我的 latex 文档包含一张图片:
\includegraphics[height=4.4in]{images/lectureoverview1.pdf}
请注意,文件名本身不是阿拉伯文字。
当我使用 polyglossia 切换到草稿模式时, \documentclass[12pt,oneside,draft]{report}
现在会出现错误,因为文件名本身images/lectureoverview1.pdf
不是阿拉伯文字。但是,既然我真的需要草稿模式,最好的解决方法是什么?
MWE 如下,第一行是按键变化,无论draft
是否模式。
\documentclass[12pt,oneside,draft]{report}
\usepackage{polyglossia}
\setmainlanguage{arabic}
\setotherlanguage{english}
\newfontfamily\arabicfont[Script=Arabic, Scale=1.70]{Scheherazade}
\newfontfamily\englishfont[Script=Latin]{Linux Libertine O}
\begin{document}
\includegraphics[height=4.4in]{images/lectureoverview1.pdf}
\end{document}
答案1
该错误是由于没有为阿拉伯语定义等宽字体,因此选择了默认字体(Latin Modern Mono);由于它不支持阿拉伯语脚本,因此消息
! Package polyglossia Error: The current roman font does not contain the Arabic script!
(polyglossia) Please define \arabicfont with \newfontfamily.
已发布。Polyglossia 的一个众所周知的问题就是,这样的消息提到了\arabicfont
而不是\arabicfonttt
(无衬线字体也是如此)。请参阅polyglossia 和 minted - 当前的罗马字体不包含希伯来文字!
该问题通过定义来解决\arabicfonttt
:
\documentclass[
draft
]{report}
\usepackage{polyglossia}
\setmainlanguage{arabic}
\setotherlanguage{english}
\newfontfamily\arabicfont[Script=Arabic, Scale=1.70]{Scheherazade}
\newfontfamily\englishfont[Script=Latin]{Linux Libertine O}
\newfontfamily\arabicfonttt{Latin Modern Mono} % maybe one that supports Arabic
% or define \setmonofont to one that supports arabic
% \setmonofont{...}
\begin{document}
\includegraphics[height=4.4in]{duck}
\end{document}
在这里我再次使用了 Latin Modern Mono;当然,如果您需要在等宽文本中使用阿拉伯语,那么这是不行的。
答案2
我认为它应该足够使用\textenglish
,但\ttfamily
用于设置文件名似乎想要切换回来,所以这只是在本地禁用它,并用罗马字母设置文件名。
\documentclass[12pt,oneside,draft]{report}
\usepackage{polyglossia}
\setmainlanguage{arabic}
\setotherlanguage{english}
\newfontfamily\arabicfont[Script=Arabic, Scale=1.70]{Scheherazade}
\newfontfamily\englishfont[Script=Latin]{Linux Libertine O}
\begin{document}
\textenglish{%
\def\ttfamily\relax
\includegraphics[height=4.4in]{example-image}}
\end{document}
答案3
您可以为自己定义一个键来切换 ttfont(我不知道为什么 graphicx\\
在最后需要这个键):
\documentclass[12pt,oneside,draft]{report}
\usepackage{polyglossia}
\setmainlanguage{arabic}
\setotherlanguage{english}
\newfontfamily\arabicfont[Script=Arabic, Scale=1.70]{Scheherazade}
\newfontfamily\englishfont[Script=Latin]{Linux Libertine O}
\makeatletter
\define@key{Gin}{ttenglish}[]{\let\ttfamily\ttfamilylatin\\}
\makeatother
\begin{document}
\includegraphics[height=4.4in,ttenglish]{example-image}
\end{document}
您还可以将 \ttfamily 设置为具有以下脚本的某些字体:
\documentclass[12pt,oneside,draft]{report}
\usepackage{polyglossia}
\setmainlanguage{arabic}
\setotherlanguage{english}
\newfontfamily\arabicfont[Script=Arabic, Scale=1.70]{Scheherazade}
\newfontfamily\englishfont[Script=Latin]{Linux Libertine O}
\newfontfamily\ttfamily[Script=Arabic, Scale=1.70]{DejaVu Sans Mono}%
\begin{document}
\includegraphics[height=4.4in]{example-image}
\end{document}