LateX 中演算法2e 的誤解錯誤

LateX 中演算法2e 的誤解錯誤

我正在使用 LaTeX 做演算法作業,但有一個無法解決的錯誤。

我認為該錯誤來自 Algorithm2e,它不喜歡多個嵌套 if(?)

Runaway argument?
{ \eIf {$firstWall$}{ Tourne vers la gauche tant que pas blanc \; }{ \ETC.
! Paragraph ended before \algocf@eIfthen was complete.
<to be read again> 
               \par 
l.86 

我的原始碼是:

\eIf{$firstWall$}{
  Rotation du robot de 10 degrés \;
}
{
  Rotation du robot de 10 degrés \;
}

\eIf{$lightValue() >= blanc$}{
      \eIf{$firstWall$}{
            Tourne vers la gauche tant que pas blanc \;
          }{
            Tourne vers la droite tant que pas blanc \;
          }
          %Here is the line 86%
          Tourne vers la gauche jusqu'à retrouver du blanc et enregistre l'angle de rotation du robot. \;

          $alignTrajectory(false)$ \;

          Continue à avancer \;
    }{
      Tourne vers la droite jusqu'à retrouver du blanc \;

      $alignTrajectory(true)$ \;

      Continue à avancer \;
    }

抱歉,命令是法語的,但我認為這並不重要。

我該如何解決這個問題?這個錯誤從何而來?

答案1

正如 Paŭlo Ebermann 在他的回答中提到的那樣,\eIf不承認段落中斷(在您的情況下,是空的空白行)。如果這些空白行沒有任何作用,則將其刪除。如果您使用這些空行來使程式碼更具可讀性,您可以簡單地使用字元註解掉這些行%(以下是程式碼的第一個版本);如果您的目的實際上是在某些行之間添加一些垂直空間,您可以\mbox{}\\在行尾使用類似的內容,而無需留下空白行(下面的程式碼的第二個版本):

\documentclass{article}
\usepackage{algorithm2e}

\begin{document}

\begin{algorithm}
\eIf{$firstWall$}{
  Rotation du robot de 10 degrés \;
}
{
  Rotation du robot de 10 degrés \;
}

\eIf{$lightValue() >= blanc$}{
      \eIf{$firstWall$}{
            Tourne vers la gauche tant que pas blanc \;
          }{
            Tourne vers la droite tant que pas blanc \;
          }
          %Here is the line 86%
          Tourne vers la gauche jusqu'à retrouver du blanc et enregistre l'angle de rotation du robot. \;
%
          $alignTrajectory(false)$ \;
%
          Continue à avancer \;
    }{
      Tourne vers la droite jusqu'à retrouver du blanc \;
%
      $alignTrajectory(true)$ \;
%
      Continue à avancer \;
    }
\end{algorithm}

\begin{algorithm}
\eIf{$firstWall$}{
  Rotation du robot de 10 degrés \;
}
{
  Rotation du robot de 10 degrés \;
}

\eIf{$lightValue() >= blanc$}{
      \eIf{$firstWall$}{
            Tourne vers la gauche tant que pas blanc \;
          }{
            Tourne vers la droite tant que pas blanc \;
          }
          %Here is the line 86%
          Tourne vers la gauche jusqu'à retrouver du blanc et enregistre l'angle de rotation du robot. \;\mbox{}\\
          $alignTrajectory(false)$ \;\mbox{}\\
          Continue à avancer \;
    }{
      Tourne vers la droite jusqu'à retrouver du blanc \;\mbox{}\\
      $alignTrajectory(true)$ \;\mbox{}\\
      Continue à avancer \;
    }
\end{algorithm}

\end{document}

這是第一個版本的結果:

在此輸入影像描述

這是第二個版本的結果:

在此輸入影像描述

答案2

在 LaTeX 中,指令的定義方式不允許\par在其參數內出現換行符號(即顯式行或空白行)。錯誤訊息看起來該\eIf命令也是如此。

除了省略這裡的空白行之外,我不知道這裡的解決方案。也許其他回答者可以在這裡提供幫助。

相關內容