如何在 Latex 中编写一个简单的 if-elseif 协议?

如何在 Latex 中编写一个简单的 if-elseif 协议?

我尝试过使用算法、算法的等,但似乎找不到我需要的东西。我想要类似这样的东西:

在此处输入图片描述

这是我使用 tcolorbox 和 align 得到的最接近的结果:

\begin{tcolorbox}[colframe=white,
                    colback=white,
                    coltitle=black,  
                    fonttitle=\normalfont,
                    adjusted title= \underline{\textbf{Protocol $\hat{Q_1}$}} (for undecided process $i$ at time $m$):]
    \begin{align*}
        &\textbf{if} \quad K_i good(\exists 0) &\textbf{then} \quad decide_i(0) \\
        &\textbf{elseif} \quad  m=t+1 \cup same_i(m,m-1) &\textbf{then} \quad decide_i(1)
    \end{align*}


\end{tcolorbox}

在此处输入图片描述

我想删除标题和代码之间的多余空间,并使所有内容像上面的示例一样对齐。

答案1

不确定这有多么普遍。

\documentclass{article}
\usepackage{amsmath}
\usepackage{array}

\newcommand{\fun}[1]{\mathsf{#1}}

\begin{document}

\noindent
\begin{tabular}{@{\hspace{3em}}>{\bfseries}ll>{\bfseries}ll@{}}
\multicolumn{4}{@{}l@{}}{%
  \underline{\textbf{Protocol $\hat{Q_1}$}} (for undecided process $i$ at time $m$):%
} \\[2ex]
if     & $K_i \fun{good}(\exists 0)$      & then & $\fun{decide}_i(0)$ \\
elseif & $m=t+1 \cup \fun{same}_i(m,m-1)$ & then & $\fun{decide}_i(1)$ \\
\end{tabular}

\end{document}

在此处输入图片描述

答案2

如果您想保留tcolorbox您可以使用的tabularx环境align

\documentclass{article}
\usepackage{tabularx}
\usepackage{tcolorbox}
\usepackage{amsmath}

\begin{document}

\begin{tcolorbox}[colframe=white,
                    colback=white,
                    coltitle=black,  
                    fonttitle=\normalfont,
                    adjusted title= \underline{\textbf{Protocol $\hat{Q_1}$}} (for undecided process $i$ at time $m$):]
    \begin{tabularx}{\linewidth}{lXll}
        \textbf{if} & $K_i good(\exists 0)$ &\textbf{then} & $\text{decide}_i(0)$ \\
        \textbf{elseif} &  $m=t+1 \cup \text{same}_i(m,m-1)$ &\textbf{then} & $\text{decide}_i(1)$
    \end{tabularx}
\end{tcolorbox}

\end{document}

或者,您可能想看看为伪代码设计的包,例如algorithm2e,,,...algorithmicxalgorithmalgpseudocode

相关内容