Latex 嵌套循环显示不正确
Latex nested loop not displaying correctly
嗨,我是乳胶新手,我在这里使用 Algorithmic 包来编写我的伪代码,我遇到的问题是 'some text' 在第二个循环下正确显示,但是 'return' 语句需要在第一个 for 循环之外显示不正确,它也没有标记每个循环的结束(缺少垂直 tic),执行结果如图所示:
\documentclass{article}
\usepackage[utf8,linesnumbered,ruled,vlined]{algorithm2e}
\usepackage {algpseudocode}
\usepackage{algorithmicx}
\usepackage{algcompatible}
\begin{document}
\begin{algorithm}
\ContinuedFloat
\caption{My algorithm}
\textbf{Input:} solution,bound, data\_matrix, vehicle\_capacity, demand\_data,k\_max,operations\_data, move\_type,tenure, max\_number\_of\_moves,max\_iter,non\_improvement\_maxiter,itermax,epsilon\
\textbf{Output:} $best$ $solution$ \[0.1in]
routes = extract routes from \textbf{solution}\
oldfitness = fitness(\textbf{solution})\
ls\_move\_type = inversion\
best\_solution = routes\[0.1in]
\For{0 \leq i \leq itermax}{
new\_routes = [ ]\
desc = 'normal route'\
\For{route \textbf{in} routes}{
n=length(route)\
comb = int($\frac{n!}{(n-2)!}$)\
\If{n \geq 4}{
tabu\_list\_tenure = $\frac{comb}{5}$\
ls\_maxiteration = 50 \
ls\_move\_type = 'inversion'\
}
\If{3 \leq n \leq 4}{
tabu\_list_tenure = $\frac{comb}{4}$ \
ls\_maxiteration = 25\
ls\_move\_type = 'relocation'\
}
\Else{
append \textbf{route} to \textbf{new\_routes}\
desc = 'short route'\
}\[0.1in]
}
some action
}
return
\end{algorithm}
\end{document}
只要您的 .log 文件中有错误,就没有必要怀疑输出。发生错误后,latex 只能恢复到足以对文档的其余部分进行语法检查的程度,不一定会产生合理的输出。
一些最关键的问题:
永远不要忽略错误信息!
utf8
不是 algorithm2e
包
的有效选项
默认情况下未定义 \ContinuedFloat
。如果你想使用它,你需要一个定义它的包。也许您想使用 caption
包?
永远不要像 $best$ $solution$
那样使用数学模式伪造斜体文本。这完全弄乱了字距
你的一些_
没有转义
你不能在数学模式之外使用像 0 \leq i \leq
这样的数学命令
使用 \Return
之类的东西来正确格式化它
使用\
换行已经很值得怀疑了,但是连续使用两次简直就是错误。
因为一个人不能经常说:永远不要忽略错误消息!
\documentclass{article}
\usepackage[
%utf8,
linesnumbered,ruled,vlined]{algorithm2e}
\usepackage {algpseudocode}
\usepackage{algorithmicx}
\usepackage{algcompatible}
\begin{document}
\begin{algorithm}
%\ContinuedFloat
\caption{My algorithm}
\textbf{Input:} solution,bound, data\_matrix, vehicle\_capacity, demand\_data,k\_max,operations\_data, move\_type,tenure, max\_number\_of\_moves,max\_iter,non\_improvement\_maxiter,itermax,epsilon
\textbf{Output:} \emph{best solution}
\medskip
routes = extract routes from \textbf{solution}
oldfitness = fitness(\textbf{solution})
ls\_move\_type = inversion
best\_solution = routes
\medskip
\For{[=10=] \leq i \leq$ itermax}{
new\_routes = [ ]
desc = 'normal route'
\For{route \textbf{in} routes}{
n=length(route)
comb = int($\frac{n!}{(n-2)!}$)
\If{$n \geq 4$}{
tabu\_list\_tenure = $\frac{comb}{5}$
ls\_maxiteration = 50
ls\_move\_type = 'inversion'
}
\If{ \leq n \leq 4$}{
tabu\_list\_tenure = $\frac{comb}{4}$
ls\_maxiteration = 25
ls\_move\_type = 'relocation'
}
\Else{
append \textbf{route} to \textbf{new\_routes}
desc = 'short route'
}
\medskip
}
some action
}
\Return
\end{algorithm}
\end{document}
嗨,我是乳胶新手,我在这里使用 Algorithmic 包来编写我的伪代码,我遇到的问题是 'some text' 在第二个循环下正确显示,但是 'return' 语句需要在第一个 for 循环之外显示不正确,它也没有标记每个循环的结束(缺少垂直 tic),执行结果如图所示:
\documentclass{article}
\usepackage[utf8,linesnumbered,ruled,vlined]{algorithm2e}
\usepackage {algpseudocode}
\usepackage{algorithmicx}
\usepackage{algcompatible}
\begin{document}
\begin{algorithm}
\ContinuedFloat
\caption{My algorithm}
\textbf{Input:} solution,bound, data\_matrix, vehicle\_capacity, demand\_data,k\_max,operations\_data, move\_type,tenure, max\_number\_of\_moves,max\_iter,non\_improvement\_maxiter,itermax,epsilon\
\textbf{Output:} $best$ $solution$ \[0.1in]
routes = extract routes from \textbf{solution}\
oldfitness = fitness(\textbf{solution})\
ls\_move\_type = inversion\
best\_solution = routes\[0.1in]
\For{0 \leq i \leq itermax}{
new\_routes = [ ]\
desc = 'normal route'\
\For{route \textbf{in} routes}{
n=length(route)\
comb = int($\frac{n!}{(n-2)!}$)\
\If{n \geq 4}{
tabu\_list\_tenure = $\frac{comb}{5}$\
ls\_maxiteration = 50 \
ls\_move\_type = 'inversion'\
}
\If{3 \leq n \leq 4}{
tabu\_list_tenure = $\frac{comb}{4}$ \
ls\_maxiteration = 25\
ls\_move\_type = 'relocation'\
}
\Else{
append \textbf{route} to \textbf{new\_routes}\
desc = 'short route'\
}\[0.1in]
}
some action
}
return
\end{algorithm}
\end{document}
只要您的 .log 文件中有错误,就没有必要怀疑输出。发生错误后,latex 只能恢复到足以对文档的其余部分进行语法检查的程度,不一定会产生合理的输出。
一些最关键的问题:
永远不要忽略错误信息!
的有效选项utf8
不是algorithm2e
包
默认情况下未定义 \ContinuedFloat
。如果你想使用它,你需要一个定义它的包。也许您想使用caption
包?永远不要像
$best$ $solution$
那样使用数学模式伪造斜体文本。这完全弄乱了字距你的一些
_
没有转义你不能在数学模式之外使用像
0 \leq i \leq
这样的数学命令使用
\Return
之类的东西来正确格式化它使用
\
换行已经很值得怀疑了,但是连续使用两次简直就是错误。因为一个人不能经常说:永远不要忽略错误消息!
\documentclass{article}
\usepackage[
%utf8,
linesnumbered,ruled,vlined]{algorithm2e}
\usepackage {algpseudocode}
\usepackage{algorithmicx}
\usepackage{algcompatible}
\begin{document}
\begin{algorithm}
%\ContinuedFloat
\caption{My algorithm}
\textbf{Input:} solution,bound, data\_matrix, vehicle\_capacity, demand\_data,k\_max,operations\_data, move\_type,tenure, max\_number\_of\_moves,max\_iter,non\_improvement\_maxiter,itermax,epsilon
\textbf{Output:} \emph{best solution}
\medskip
routes = extract routes from \textbf{solution}
oldfitness = fitness(\textbf{solution})
ls\_move\_type = inversion
best\_solution = routes
\medskip
\For{[=10=] \leq i \leq$ itermax}{
new\_routes = [ ]
desc = 'normal route'
\For{route \textbf{in} routes}{
n=length(route)
comb = int($\frac{n!}{(n-2)!}$)
\If{$n \geq 4$}{
tabu\_list\_tenure = $\frac{comb}{5}$
ls\_maxiteration = 50
ls\_move\_type = 'inversion'
}
\If{ \leq n \leq 4$}{
tabu\_list\_tenure = $\frac{comb}{4}$
ls\_maxiteration = 25
ls\_move\_type = 'relocation'
}
\Else{
append \textbf{route} to \textbf{new\_routes}
desc = 'short route'
}
\medskip
}
some action
}
\Return
\end{algorithm}
\end{document}