由于某种原因,当使用 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}
然而由于某种原因,算法是右对齐的