= 在算法中使用希伯来语和 algorithm2e 时

= 在算法中使用希伯来语和 algorithm2e 时

由于某种原因,当使用 hebrew 和 algorithm2e 时,算法块中每行的开头都会出现一个 = 符号。删除 hebrew 会删除该行。

例如:

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

\begin{document}
\begin{algorithm}
  \KwData{$x$}
     $y \gets x$\\
  \KwOut{$y$}
\end{algorithm} 
\end{document}

渲染:

在此处输入图片描述

尽管:

\documentclass{article}
\usepackage{algorithm2e}
\usepackage[english]{babel}

\begin{document}
\begin{algorithm}
  \KwData{$x$}
     $y \gets x$\\
  \KwOut{$y$}
\end{algorithm} 
\end{document}

给予

在此处输入图片描述

有任何想法吗?

如果你觉得我的安装有问题,可以自己尝试一下分享乳胶

编辑:添加了 sharelatex 公共示例

编辑(2):找到可能相关的帖子算法 + 巴别塔与希伯来语冲突:编号缺失

答案1

\everypar这是由于对 done的重新定义非常错误而导致的rlbabel.def

% rlbabel.def, line 140
\def\everypar#1{\o@everypar{\rl@everypar#1}}

这没有考虑到\everypar,最初是一个标记列表寄存器,它允许该语法\everypar={...}algorithm2e使用它。

使固定:

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

\makeatletter
\let\heb@everypar\everypar
\def\everypar#1#{\heb@everypar}
\makeatother

\begin{document}


\begin{algorithm}
  \KwData{$x$}
     $y \gets x$\\
  \KwOut{$y$}
\end{algorithm}
\end{document}

答案2

正如我在包手册中读到的,Algorithm2e 提供了不同语言的选项,主要的问题是希伯来语不受支持,所以当你在 babel 中调用希伯来语时,包会尝试在希伯来语中查找 algorithm2e 的关键字,因此,使用算法的 lang 选项设置为英语,这会停止

\documentclass{article}
\usepackage[linesnumbered,ruled,english]{algorithm2e}

\usepackage[hebrew]{babel}

\begin{document}
\begin{algorithm}
  \KwData{$x$}
     $y \gets x$\\
  \KwOut{$y$}
\end{algorithm} 


\end{document}

然而由于某种原因,算法是右对齐的

相关内容