![polyglossia 和 algorithmicx - 缺少 \endcsname 插入](https://linux22.com/image/242962/polyglossia%20%E5%92%8C%20algorithmicx%20-%20%E7%BC%BA%E5%B0%91%20%5Cendcsname%20%E6%8F%92%E5%85%A5.png)
尝试使用多语言编写一个以希伯来语为默认语言的简单文档:
\documentclass[a4paper]{article}
\TeXXeTstate=1
\usepackage{amsmath, amssymb}
\usepackage{polyglossia}
\setdefaultlanguage[calendar=hebrew, numerals=hebrew]{hebrew}
\setotherlanguage{english}
\setmainfont{David CLM}
\usepackage[noend]{algpseudocode}
\begin{document}
\section{}
שלום
\begin{english}
Procedure(A)
\begin{algorithmic}[1]
\State $A = 0$
\end{algorithmic}
\end{english}
\end{document}
使用 XeTeX 的结果如下:
! Missing \endcsname inserted.
<to be read again>
\relax
l.15 \begin{algorithmic}[1]
如果我将默认语言设置为英语,将其他语言设置为希伯来语,则可以正常工作。
答案1
解决方法是将以下代码放入序言中:
\usepackage{etoolbox}
\makeatletter
\let\ORI@arabic\@arabic
\expandafter\pretocmd\csname\string\algorithmic\endcsname
{\let\@arabic\ORI@arabic}{}{}
\renewcommand{\theALG@storecount}{\ORI@arabic\c@ALG@storecount}
\makeatother
奇怪的代码旨在将代码注入“真实”宏中,以完成预期的工作\algoritmic
。
答案2
因为在评论中您说您想要阿拉伯数字,所以将您的最小示例更改为以下内容而不会出现阿拉伯数字的问题:
\documentclass[a4paper]{article}
\usepackage{amsmath, amssymb}
\usepackage[noend]{algpseudocode}
\usepackage{polyglossia}
\setdefaultlanguage[calendar=hebrew]{hebrew}
\setotherlanguage{english}
\setmainfont{David CLM}
\begin{document}
\section{}
שלום
\begin{english}
Procedure(A)
\begin{algorithmic}[1]
\State $A = 0$
\end{algorithmic}
\end{english}
\end{document}