
我正在使用 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
命令也是如此。
除了省略這裡的空白行之外,我不知道這裡的解決方案。也許其他回答者可以在這裡提供幫助。