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}