LateX の algorithm2e で誤解されたエラー

LateX の algorithm2e で誤解されたエラー

アルゴリズムの宿題にLaTeXを使用していますが、解決できないエラーがあります。

このエラーは、複数のネストされた if を好まない Algorithm2e から発生するものだと思います(?)

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{}\\空の空白行を残さずに、行末に のようなものを使用できます (以下のコード 2 番目のバージョン)。

\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 番目のバージョンの結果は次のとおりです。

ここに画像の説明を入力してください

答え2

LaTeX では、引数内での行の段落区切り (つまり、明示的な行または空行) を許可しない方法でコマンドを定義できます\par。エラー メッセージは\eIf、コマンドの場合も同様であるように見えます。

ここでの解決方法は、空行を省略する以外にはわかりません。他の回答者が助けてくれるかもしれません。

関連情報