在这一页,Andrew Swann 向我指出了一种对算法进行详细格式化的方法(我只需要出于教学原因这样做)。
此解决方案的问题在于,它会在以下示例中使用我的第二个算法产生不必要的警告。有没有办法避免出现这些警告?
平均能量损失
\documentclass[10pt,a4paper]{article}
\usepackage[vlined]{algorithm2e}
\newcommand\BlockIf[1]{\KwSty{Start If} \\ #1 \\ \KwSty{End If}}
\newcommand\BlockElseIf[1]{\KwSty{Start Else If} \\ #1 \\ \KwSty{End Else If}}
\newcommand\BlockElse[1]{\KwSty{Start Else} \\ #1 \\ \KwSty{End Else}}
\makeatletter
\renewcommand{\algocf@uIf}[2]{\If@ifthen{#1}\If@noend{\BlockIf{#2}}}
\renewcommand{\algocf@uElseIf}[2]{\ElseIf@elseif{#1}\If@noend{\BlockElseIf{#2}}}
\renewcommand{\algocf@Else}[1]{\Else@else\If@endif{\BlockElse{#1}}}
\makeatother
\begin{document}
\begin{algorithm}[H]
\uIf{1}{if...}
\uElseIf{2}{else if...}
\Else{else...}
\end{algorithm}
\begin{algorithm}[H]
\uIf{1}{if...}
\uElseIf{2}{\ForAll{$i$}{Action $i$}}
\Else{else...}
\end{algorithm}
\end{document}
不必要的警告
! LaTeX Error: There's no line here to end.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.26 \uElseIf{2}{\ForAll{$i$}{Action $i$}}
答案1
您可以根据想要的布局进行选择。
在强制换行之前,请确保 LaTeX 位于段落中,因此请将\\
示例中的每个替换为
\mbox{}\\
或者,如果在段落之间,不要强制换行,因此请将每个段落替换\\
为
\ifhmode\\\fi