带有加密代码包的矩阵

带有加密代码包的矩阵

我正在使用该包cryptocode以一种很好的方式排版协议,但我遇到了矩阵问题。以下是显示该问题的 MWE:

\documentclass{article}

\usepackage{cryptocode}

\begin{document}

\begin{figure}%[ht]
\begin{center}
\fbox{%
\pseudocode{%
    \textbf{Sender} \<\< \textbf{Receiver} \\[][\hline]
    \<\< \text{compute } P = \begin{pmatrix}
        A \\ B + C
    \end{pmatrix} \\
    \text{compute } Q = R+S-T \<\< \\
    \< \sendmessageright*{Q} \< \\
    \< \sendmessageleft*{P} \< \\
}
}
\end{center}
\end{figure}

\end{document}

结果是

在此处输入图片描述

并且,如您所见,矩阵排版不正确(对齐错误)。我该如何解决这个问题?

答案1

显然,该命令\pseudocode与 的定义\\和其他与 相关的内部结构混在一起\pmatrix。我无法提供通用解决方案。一个快速的方法是保存矩阵外部放在\pseudocode一个框中,并在里面使用这个框\pseudocode,就像这样:在伪代码之前,添加

\newsavebox\Pmatrix
\setbox\Pmatrix\hbox
 {$\begin{pmatrix}
    A \\ B + C
  \end{pmatrix}$%
 }

在伪代码中,使用\Pmatrix矩阵代替:

\<\< \text{compute } P = \usebox\Pmatrix \\

答案2

正如 gernot 所解释的那样,它pseudocode与 的定义相混合\\。使用 之外定义的框的另一种解决方案\pseudocode是使用\pclb而不是\\矩阵内的 。这可以\pclb(或多或少)映射到 的原始定义\\

因此

\pseudocode{%
\textbf{Sender} \<\< \textbf{Receiver} \\[][\hline]
\<\< \text{compute } P = \begin{pmatrix}
    A \pclb B + C
\end{pmatrix} \\
\text{compute } Q = R+S-T \<\< \\
\< \sendmessageright*{Q} \< \\
\< \sendmessageleft*{P} \< \\
}

产量

在此处输入图片描述

相关内容