LateX의 알고리즘2e에서 오해된 오류

LateX의 알고리즘2e에서 오해된 오류

알고리즘 숙제로 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{}\\빈 빈 줄을 남기지 않고 줄 끝에 다음과 같은 것을 사용할 수 있습니다 (아래 코드의 두 번째 버전).

\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

\parLaTeX에서는 인수 내에서 줄 단락 나누기(예: 명시적 또는 빈 줄)를 허용하지 않는 방식으로 명령을 정의할 수 있습니다 . 오류 메시지는 명령의 경우에도 마찬가지인 것 같습니다 \eIf.

여기서 빈 줄을 생략하는 것 외에는 해결책을 모르겠습니다. 아마도 다른 답변자가 여기서 도움을 줄 수 있을 것입니다.

관련 정보