算法 + 巴别塔与希伯来语冲突:编号缺失

算法 + 巴别塔与希伯来语冲突:编号缺失

如果我使用带有 babel 的 algorithmic,同时使用希伯来语和英语,行号就会丢失。使用 MikTeX 2.9。

\documentclass{article}
\usepackage[hebrew,english]{babel}
\usepackage{algorithm}
\usepackage{algorithmic}

\begin{document}
\begin{algorithm}
\caption{A caption}
\begin{algorithmic}[1]
\STATE{A line which should be numbered.}
\end{algorithmic}
\end{algorithm}
\end{document}

截屏

答案1

Joseph Wright 已经提到了问题的原因和可能的解决方案。我在页面中找到了另一种方法LaTeX 中的希伯来语。 在标题之下算法学您可以找到 的修改版本algorithmic.sty。您可以下载此文件并以不同的名称(heb-algorithmic.sty例如 )保存它(TeX 可以找到它的地方),然后在文档的序言中加载修改后的版本:

\usepackage{heb-algorithmic}

我用以下文件做了测试:

\documentclass{article}
\usepackage[hebrew,english]{babel}
\usepackage{heb-algorithmic}

\begin{document}

\begin{algorithmic}[1]
\STATE{A line which should be numbered.}
\end{algorithmic}

\end{document}

一切按预期进行;行号又回来了。

答案2

你可以将最小示例简化为

\documentclass{article}
\usepackage[hebrew,english]{babel}
\usepackage{algorithmic}

\begin{document}

\begin{algorithmic}[1]
\STATE{A line which should be numbered.}
\end{algorithmic}

\end{document}

IEalgorithm与此无关。根本问题似乎是重新定义hebrew的选项无法扩展。这导致一些内部测试失败,因此没有打印任何数字。恢复原始定义可以解决这个问题babel\@arabic

\documentclass{article}
\usepackage[hebrew,english]{babel}
\usepackage{algorithmic}

\begin{document}

\makeatletter
\def\@arabic#1{\number#1}
\makeatother

\begin{algorithmic}[1]
\STATE{A line which should be numbered.}
\end{algorithmic}

\end{document}

我不知道在真实情况下这是否可以(我确信改变是有原因的)。

相关内容