我在阿拉伯语 tex 文件中使用 polyglossia,我想使用 verbatim 环境为用户手册编写 Latex 命令。一切运行良好,如果我们输入英文字符,则添加命令 '\let\arabicfonttt\ttfamily',但它无法识别我认为的阿拉伯字符。我该如何修复它?我举了一个简单的例子,我们可以看到阿拉伯字母被完全省略了。
\documentclass[12pt,a4paper]{article}
\usepackage{polyglossia}
\setmainlanguage[numerals=maghrib]{arabic}
\setotherlanguage{english}
\newfontfamily\arabicfont[Script=Arabic,Scale=1.2,AutoFakeSlant=-0.02]{Traditional Arabic}
\let\arabicfonttt\ttfamily
\setsansfont[Script=Arabic,Scale=1.5]{Traditional Arabic}
\begin{document}
\begin{english}
\begin{verbatim}
The command \LaTeX prints the Latex logo.
أمر
\LaTeX
يعطي لوجو لاتخ
\end{verbatim}
\end{english}
\end{document}
可以看到,只有 \LaTeX 这个词
艾玛
\乳胶
يعطي لوجو لاتخ
被考虑在内
答案1
除此之外,\let\arabicfonttt\ttfamily
您还必须使用\setmonofont{DejaVu Sans Mono}
任何其他支持阿拉伯语的等宽字体。
\documentclass[12pt,a4paper]{article}
\usepackage{polyglossia}
\setmainlanguage[numerals=maghrib]{arabic}
\setotherlanguage{english}
\newfontfamily\arabicfont[Script=Arabic,Scale=1.2,AutoFakeSlant=-0.02]{Traditional Arabic}
\setmonofont{DejaVu Sans Mono}
\let\arabicfonttt\ttfamily
\setsansfont[Script=Arabic,Scale=1.5]{Traditional Arabic}
\begin{document}
\begin{english}
\begin{verbatim}
The command \LaTeX prints the Latex logo.
أمر
\LaTeX
يعطي لوجو لاتخ
\end{verbatim}
\end{english}
\end{document}
答案2
我们可以使用listings
包来实现这一点,将阿拉伯语单词放在像escapeinside
这样定义的符号内:
\documentclass[12pt,a4paper]{article}
\usepackage{listings}
\usepackage{polyglossia}
\setmainlanguage[numerals=maghrib]{arabic}
\setotherlanguage{english}
\newfontfamily\arabicfont[Script=Arabic,Scale=1.2,AutoFakeSlant=-0.02]{Traditional Arabic}
\setmonofont{DejaVu Sans Mono}
\let\arabicfonttt\ttfamily
\setsansfont[Script=Arabic,Scale=1.5]{Traditional Arabic}
\lstset{language=[LaTeX]TeX,escapeinside={*}{*}}
\begin{document}
\begin{english}
\begin{lstlisting}
The command \LaTeX prints the Latex logo.
*\textarabic{أمر}*
\LaTeX
*\textarabic{يعطي لوجو لاتخ}*
\end{lstlisting}
\end{english}
\end{document}
结果: