\Fn ! 未定义的控制序列

\Fn ! 未定义的控制序列

在 Ubuntu 15.04 下,我想用algorithm2e它来编写伪代码,当我从文档中复制一个示例时,TeXStudio 显示错误,指示命令\Fn未定义。我认为该包可能已过时,所以我通过 texlive-science 运行了更新

sudo apt-get install texlive-science

但它显示 texlive-science 已经是最新版本。它没有在 Ubuntu 存储库中更新吗?如果是这样,我该如何更新algorithm2e到最新版本?

答案1

您可以\Fnalgorithm2e 文档代码. 它使用 来定义\SetKwProg

通用算法以以下定义作为前缀:

\SetKwProg{Fn}{Function}{}{end}\SetKwFunction{FRecurs}{FnRecursive}%
\newcommand{\forcond}{$i=0$ \KwTo $n$}

在此处输入图片描述

\documentclass{article}

\usepackage{algorithm2e}
\newcommand{\forcond}{$i=0$ \KwTo $n$}
\SetKwProg{Fn}{Function}{}{end}\SetKwFunction{FRecurs}{FnRecursive}%
\SetAlgoLongEnd

\begin{document}

\begin{algorithm}
  \Fn(\tcc*[h]{algorithm as a recursive function}){\FRecurs{some args}}{
    \KwData{Some input data\\these inputs can be displayed on several lines and one 
      input can be wider than line's width.}
    \KwResult{Same for output data}
    \tcc{this is a comment to tell you that we will now really start code}
    \If(\tcc*[h]{a simple if but with a comment on the same line}){this is true}{
      we do that, else nothing\;
      \tcc{we will include other if so you can see this is possible}
      \eIf{we agree that}{
        we do that\;
      }{
        else we will do a more complicated if using else if\;
        \uIf{this first condition is true}{
          we do that\;
        }
        \uElseIf{this other condition is true}{
          this is done\tcc*[r]{else if}
        }
        \Else{
          in other case, we do this\tcc*[r]{else}
        }
      }
    }
    \tcc{now loops}
    \For{\forcond}{
      a for loop\;
    }
    \While{$i<n$}{
      a while loop including a repeat--until loop\;
      \Repeat{this end condition}{
        do this things\;
      }
    }
    They are many other possibilities and customization possible that you have to
    discover by reading the documentation.
  }
\end{algorithm}

\end{document}

对于文档的其他部分,它重新定义\Fn为显示其他内容(取决于输出要求)。

相关内容