我有这个包含两个 For 语句和一个 if-else 的小算法。我在序言中使用了选项portuguese
,问题如下:没有显示单词“法萨“ 和 ”财务信息管理“(分别是 do 和 end),我得到“哈切尔“ 和 ”鳍“。
以下是我的序言:
\documentclass{article}
\usepackage{cmap}
\usepackage{lmodern}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[brazil]{babel}
\usepackage{lastpage}
\usepackage{indentfirst}
\usepackage{color}
\usepackage{graphicx}
\usepackage{amsmath}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{multirow}
\usepackage[brazilian,hyperpageref]{backref}
\usepackage[alf]{abntex2cite}
\usepackage[portuguese]{algorithm2e}
代码如下:
\begin{document}
\begin{algorithm}[htbp]
\SetAlgoLined
\LinesNumbered
\Dados{audio, tamanho, nivel, filtro, ch}
\Entrada{i, j, inicio, comprimento}
\BlankLine
$inicio \leftarrow 0$\;
$comprimento \leftarrow tamanho$\;
\Para{$i \leftarrow 0$ \Ate $i<nivel$}{
$inicio \leftarrow 0$\;
$comprimento \leftarrow tamanho/2^{i-1}$\;
\Para{$j \leftarrow 0$ \Ate $j<2^{i-1}$}{
\eSe{j é par}{
transformada\_wavelet(audio[inicio],comprimento, 1,'n', filtro, ch)\;
}{
transformada\_wavelet(audio[inicio],comprimento, 1,'i', filtro, ch)\;
}
}
}
\caption{A DWT-packet}
\label{alg:dwtp}
\end{algorithm}
\end{document}
结果(我在 Windows 上使用 pdfLaTeX):
...
para i ← 0 até i < nível hacer
...
para j ← 0 até j < 2^(i-1) hacer
...
如果我放入\SetKwFor{Para}{para}{fa\c{c}a}{fim para}
TeX 文件,我会得到正确的输出。但是这个命令已经在包中了。为什么它不起作用?
答案1
这是 中的一个严重错误algorithm2e
。“本地化关键字”的设置与语言无关,Para
葡萄牙语和西班牙语定义了相同的关键字。后者已在软件包的最新版本中添加,
\SetKwFor{Para}{para}{hacer}{fin para}
出现在葡萄牙语部分中的类似定义之后,因此覆盖了它。
解决这样的错误需要对关键字进行不同的处理,以跟踪语言选项,而目前的软件包还不能做到这一点。
唯一的解决办法就是你找到的:发布
\SetKwFor{Para}{para}{fa\c{c}a}{fim para}
加载后algorithm2e
。
请向软件包作者提及此事。
答案2
尝试使用旧版本的软件包。使用算法2eRelease4.01,2009年12月14日,我没有遇到这个问题,正如你所见: