草稿模式下文件名出现多语错误

草稿模式下文件名出现多语错误

我正在使用 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}

相关内容