我正在尝试在 LaTex 上编写一个算法,我的问题是 for 循环没有在正确的位置关闭。我在循环外部打印输出,但它仍然出现在 for 循环内部
\title{AlgorithmTemplate}
\documentclass[11pt]{article}
\usepackage{fullpage}
\usepackage{times}
\usepackage{fancyhdr,graphicx,amsmath,amssymb}
\usepackage[ruled,vlined,linesnumbered]{algorithm2e}
\begin{document}
\begin{algorithm}
\caption{Algorithm}
\SetAlgoLined
\text{X$\{x : \ x \in\ I \}$}
{$Y1(x, i\textsubscript{k}) \\
$Y2$ ($x$, i\textsubscript{k}) \\
$Y3$ ($x$, i\textsubscript{k}) \\
$Y4$ ($x$, i\textsubscript{k}) \\
\For{each {i \in\ Y\ }}{
\For{ each {x \in\ Z }}{
\statement{$Y1$ ($x$, i\textsubscript{k})} \leftarrow {\{i \in Y \ :\ } \{x, i {k}\}
\statement {$Y2$ ($x$, i\textsubscript{k}})\\
\statement {$Y3$ ($x$,i\textsubscript{k})} \leftarrow {\{i \in Y \ : \ } \ \frac{| x\ \cap \ i\textsubscript{k} |}{|x\ \cup \ i\textsubscript{k} |}\\
\statement {$Y4$ ($x$,i\textsubscript{k})} \leftarrow{\{i\in Y\ : }\ \frac{| x\ \cap\ i\textsubscript{k} |}{|x\ \cup \ i\textsubscript{k}|} > threshold \} \\
\If{x \in XV \vee \ i \in VI}{
color that particular text\\
}\\
\Else {
default }
}\\\\
}\\
{$Result \leftarrow Y1 (x, i\textsubscript {k}) + Y2 (x, i\textsubscript {k}) + Y3 (x, i\textsubscript {k}) + Y4 (x, i\textsubscript {k}$)}\\
\end{algorithm}
\end{document}
以下是输出
答案1
我无法确定您的初衷是什么,但您的代码显示出对algorithm2e
软件包命令以及基本 LaTeX 指令的严重误解。我相信即使在 Overleaf 上,由于所有这些问题,您也应该会遇到多个错误/警告。
以下是各种更正的列表:
- 检查未闭合的括号,
{...}
它们中的大多数在你提供的语句中都是无用的,所以我删除了它们 - 检查未关闭/不匹配
$...$
。多个根本没有关闭。我合并了一些行中的数学语句,因为这样可以简化,不需要使用多个 \textunderscript
在文本模式中用数学模式替换\mathrm
。- (可选)替换
\leftarrow
为\gets
- 替换换行符指令不应在
algorithm2e
算法中用来分隔语句随说明书\;
一起\DontPrintSemicolon
- 替换为提供的
\For{each
实际指令以及构造命令\ForEach
algorithm2e
\eIf
If-Then-Else
algorithm2e
在进一步使用其功能之前,您应该查看包文档。
\documentclass[11pt]{article}
\usepackage{fullpage}
\usepackage{times}
\usepackage{fancyhdr,graphicx,amsmath,amssymb}
\usepackage[ruled,vlined,linesnumbered]{algorithm2e}
\DontPrintSemicolon
\begin{document}
\begin{algorithm}
\caption{Algorithm}
\SetAlgoLined
\text{X$\{x : \ x \in\ I \}$}
$Y1(x, i_\mathrm{k})$ \;
$Y2(x, i_\mathrm{k})$ \;
$Y3(x, i_\mathrm{k})$ \;
$Y4(x, i_\mathrm{k})$ \;
\ForEach{$i \in\ Y$}{
\ForEach{$x \in\ Z$}{
$Y1(x, i_\mathrm{k}) \gets \{i \in Y : \{x, i {k}\}\}$\;
$Y2(x, i_\mathrm{k})$\;
$Y3(x,i_\mathrm{k}) \gets \{i \in Y : \frac{| x \cap i_\mathrm{k} |}{|x \cup i_\mathrm{k} |}\}$\;
$Y4(x,i_\mathrm{k}) \gets \{i\in Y : \frac{| x \cap i_\mathrm{k} |}{|x \cup i_\mathrm{k}|} > threshold \}$ \;
\eIf{$x \in XV \vee \ i \in VI$}{
color that particular text\;
}{
default }
}
}
$Result \leftarrow Y1 (x, i_\mathrm {k}) + Y2 (x, i_\mathrm {k}) + Y3 (x, i_\mathrm {k}) + Y4 (x, i_\mathrm {k}$)\;
\end{algorithm}
\end{document}