我正在使用 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
。
除了省略这里的空行之外,我不知道这里的解决方案。也许其他回答者可以提供帮助。