我想创建一个如下图所示的协议。我还提到我在 beamer 工作。
\[
\begin{array}{c c c}
\text{\textsf{\underline{\textbf{Prover}}}} & & \text{\textsf{\underline{\textbf{Verifier}}}} \\
k_{\text{sk}},\,k_{r},\,k_{b} \xleftarrow{\$} \mathbb{Z}_q & & \\
A_y = g^{k_\text{sk}} & & \\
A_D = D^{k_\text{r}} & & \\
A_{\Bar{y}} = (\frac{y}{\Bar{y}})^{k_r} & \xrightarrow{\hspace{1em}A_y,\,A_D,\,A_{\Bar{y}}\hspace{1em}} & \\
& & c\xleftarrow{\$} \mathbb{Z}_q \\
& \xleftarrow{\hspace{2.7em}c\hspace{2.7em}} & \\
\end{array}
\]
我希望字母从一条直线开始。
答案1
您还想将三个=
符号垂直对齐,对吗?如果是这样,那么array
为“Prover”列中的材料使用两个额外的嵌套环境将帮助您实现格式化目标。
我还想建议您简化和精简代码。例如,我认为\text{\textsf{\underline{\textbf{Prover}}}}
可以更简洁地写成\underline{\textbf{Prover}}
。
\documentclass{beamer}
\begin{document}
\begin{frame}
\[
\begin{array}{@{} ccc @{}}
\underline{\textbf{Prover}} & & \underline{\textbf{Verifier}} \\[1ex]
\setlength\arraycolsep{0pt}
\begin{array}[b]{l}
k_{\mathsf{sk}},\, k_{r},\, k_{b} \xleftarrow{\$} \mathbb{Z}_q \\
\begin{array}[b]{ll}
A_y & {}= g^{k_\mathsf{sk}} \\
A_D & {}= D^{k_\mathsf{r}} \\
A_{\Bar{y}} & {}= (y/\Bar{y})^{k_r}
\end{array}
\end{array}
& \xrightarrow{\hspace{1em} A_y,\, A_D,\, A_{\Bar{y}} \hspace{1em}} \\
& & c\xleftarrow{\$} \mathbb{Z}_q \\
& \xleftarrow{\hspace{2.7em}c\hspace{2.7em}}
\end{array}
\]
\end{frame}
\end{document}
答案2
fleqn
具有环境的解决方案nccmath
以及代码的一些简化:
\documentclass{article}
\usepackage{amsfonts}
\usepackage{nccmath}
\usepackage{showframe}
\renewcommand{\ShowFrameLinethickness}{0.3pt}
\begin{document}
\begin{fleqn}
\[
\begin{array}{@{}l c c}
\textsf{\underline{\textbf{Prover}}} & & \textsf{\underline{\textbf{Verifier}}} \\
k_{\text{sk}},\,k_{r},\,k_{b} \xleftarrow{\$} \mathbb{Z}_q & & \\
A_y = g^{k_\text{sk}} & & \\
A_D = D^{k_\text{r}} & & \\
A_{\Bar{y}} = (\frac{y}{\Bar{y}})^{k_r} & \xrightarrow{\hspace{1em}A_y,\,A_D,\,A_{\Bar{y}}\hspace{1em}} & \\
& & c\xleftarrow{\$} \mathbb{Z}_q \\
& \xleftarrow{\hspace{2.7em}c\hspace{2.7em}} & \\
\end{array}
\]
\end{fleqn}
\end{document}