algorithm2e : 1 个无 vline 的块

algorithm2e : 1 个无 vline 的块

我正在尝试在 Vline 模式下定义一个没有垂直线的块。例如:

\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[ruled]{algorithm2e}
\begin{document}
\begin{algorithm}
    \SetKwBlock{Init}{Initialize}{}
    
    \Init{
        x $\leftarrow$ 3\;
        \eIf{a=b}{
            y $\leftarrow$ 5\;  
        }{
            y $\leftarrow$ x\;
        }
    }
\end{algorithm}
\end{document}

错误结果

我想在 ifelse 语句中保留垂直线,但在 Initialize 语句中将其删除。这可能吗?

注意:另一种方法可能是寻找一种方法来缩进部分文本,但这种方法在我的情况下不起作用,因为缩进文本不会缩进 ifelse 语句中的垂直线。提前谢谢,我是 StackExchange 这一部分的新手。

答案1

您可以延迟切换线路,直到\Init

\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[ruled,noline]{algorithm2e}
\begin{document}
\begin{algorithm}
    \SetKwBlock{Init}{Initialize}{}
    \Init{
        x $\leftarrow$ 3\;
        \SetAlgoLined
        \eIf{a=b}{
            y $\leftarrow$ 5\;  
        }{
            y $\leftarrow$ x\;
        }
    }
  \SetAlgoNoLine
\end{algorithm}
\end{document}

在此处输入图片描述

相关内容