在算法表中使用 Leftbar 我哪里做错了?

在算法表中使用 Leftbar 我哪里做错了?

设置

我正在尝试将我自己的\leftbar代码与一些算法代码结合起来。这个表令人困惑的部分是函数的使用\eIf。不过我想手动复制它,但使用不同的文字和不同的外观。

平均能量损失

\documentclass{book}

%for original algorithm 
\usepackage{amsmath}
\usepackage[linesnumbered,ruled]{algorithm2e}

%for leftbar code


     \usepackage{framed} 
     \usepackage{xcolor}%if highlight needed

    \renewenvironment{leftbar}[1][\hsize] 
    {%
        \def\FrameCommand
        {%
            {\color{black}\vrule width 0.65pt} %
            \hspace{2pt} %
            %\fboxsep=\FrameSep\colorbox{yellow}%highlight 
        }%
        \MakeFramed{\hsize#1\advance\hsize-\width\FrameRestore}%
    }
    {\endMakeFramed}% start \leftbar and \endleftbar 




\begin{document}

%Original table to try and replicate

\begin{algorithm}
    \SetKwInOut{Input}{Input}
    \SetKwInOut{Output}{Output}

    \underline{Initialise alogrithm} $(a,b)$\;
    \Input{input}
    \Output{output}
    \eIf{if condiion $math code$}
      {
        return step 1 $result$\;
      }
      {
        return step 2 $result$\;
      }
    \caption{Name of algorithm}
\end{algorithm}



%my way of doing it with leftbar 

\begin{algorithm}
    \SetKwInOut{Input}{Input}
    \SetKwInOut{Output}{Output}

    \underline{Initialise alogrithm} $(a,b)$\;
    \Input{input}
    \Output{output}
    \underline{Example of computation} \textbf{input} given \textbf{output:}
      \leftbar
        return step 1 $result$\;
        step 2 \;
        step 3 \;
      \endleftbar
      \textbf{next iteration}
      \leftbar
        return step 2 $result$\;
        step 4 \;
        step 5 \;
        \vdots
      \endleftbar
     \textbf{terminate}
    \caption{Name of algorithm}
\end{algorithm}




\end{document} 

目标

如您所见,修改后的算法表中的格式略有偏差。我的目标是让条形图位于数字之后但在文本之前或完全位于数字之前。我该如何解决这个问题?我假设我必须创建另一个\leftbar命令,因为我已经将其用于\leftbar其他用途,有没有办法将此函数重命名为\leftbarAlg

答案1

您使用的软件包有一些用于此目的的内置函数。看一下: https://en.wikibooks.org/wiki/LaTeX/Algorithms

相关内容