第一次发帖,如有错误,请见谅。我正在尝试使用二维码包和 xelatex。如果默认语言设置为阿拉伯语(下面的第 6 行和第 7 行)并且文档第一次运行,XeLatex 会失败。
\documentclass{article}
\usepackage{fontspec}
\usepackage{qrcode}
\usepackage{polyglossia}
\usepackage{bidi}
\setotherlanguage{english}\newfontfamily\englishfont{Computer Modern} % Problem Lines
\setdefaultlanguage{arabic}\newfontfamily\arabicfont[Script=Arabic,SizeFeatures={Size=10}]{Sakkal Majalla} % Problem Lines
\begin{document}
\qrset{height=1in}
\qrcode{abcd}
\end{document}
但是,如果注释掉这些行并运行文档,xelatex 会成功并生成二维码。现在取消注释行(6 和 7),会生成二维码(但会镜像,请注意下图中下方二维码标记在右侧而不是左侧)。
出现的错误信息是
<QR code requested for "abcd" in version 0-M.>
<Error-correction level increased from M to H at no cost.>
! Missing \endcsname inserted.
<to be read again>
\protect
l.10 \qrcode{abcd}
谢谢你的帮助。
答案1
正如评论中提到的,qrcode 使用 \arabic 作为数字,而阿拉伯语对此进行了重新定义。因此,您需要修补 qrcode 命令:
\documentclass{article}
\usepackage{fontspec}
\usepackage{qrcode}
\usepackage{etoolbox}
\makeatletter
\patchcmd\FX@getstringlength{\arabic{qr@i}}{\the\c@qr@i}{}{\fail}
\makeatother
\usepackage{polyglossia}
\setotherlanguage{english}%\newfontfamily\englishfont{Computer Modern} % Problem Lines
\setdefaultlanguage{arabic}
\newfontfamily\arabicfont[Script=Arabic,SizeFeatures={Size=10}]{Amiri} % Problem Lines
\begin{document}
\selectlanguage{english}
\qrset{height=1in}
\qrcode{abcd}
\end{document}
答案2
这是一个解决方法 \setdefaultlanguage[numerals=maghrib]{arabic}\newfontfamily\arabicfont[Script=Arabic]{Sakkal Majalla}
希望有人知道更好的方法。