在这个 MWE 中
\documentclass[a4paper]{article}
\usepackage{listings}
\usepackage{tcolorbox}
\tcbuselibrary{listings}
\usepackage[no-math]{fontspec}
\usepackage{polyglossia}
\newfontfamily\arabicfont[Script=Arabic,Scale=1.3]{Amiri}
\setdefaultlanguage{english}
\setotherlanguage{arabic}
\lstset{language=[LaTeX]TeX,
,escapeinside={*}{*}}
\begin{document}
\begin{lstlisting}
\LaTeX * \textarabic{كلمة عربية}*
\end{lstlisting}
\begin{tcblisting}{listing only,listing options={style=tcblatex,escapeinside={*}{*}}}
\LaTeX * %\textarabic{كلمة عربية}*
\end{tcblisting}
\end{document}
在lstlisting
环境下,我可以使用列表选项显示阿拉伯语文本escapeinside
,但相反,如果我在 收到错误警报之前tcblisting
删除%
符号\textarabic
! 软件包 polyglossia 错误:当前罗马字体不包含阿拉伯语
有什么办法可以解决这个问题吗?
答案1
使用此 MWE,您可以在 tcblisting 中显示阿拉伯文字
\documentclass[a4paper]{article}
\usepackage{listings}
\usepackage{tcolorbox}
\tcbuselibrary{listings}
\usepackage[no-math]{fontspec}
\usepackage{polyglossia}
\newfontfamily\arabicfont[Script=Arabic]{Amiri}
\setdefaultlanguage{english}
\setotherlanguage{arabic}
\lstset{language=[LaTeX]TeX,escapeinside={*}{*}}
\begin{document}
\begin{lstlisting}
\LaTeX * \textarabic{كلمة عربية}*
\end{lstlisting}
\begin{tcblisting}{listing only,listing options={language={[LaTeX]TeX},escapeinside={*}{*}}}
\LaTeX * \textarabic{كلمة عربية}*
\end{tcblisting}
\end{document}
结果