我认为有很多方法可以创建类似下图的环境,但我不确定最简单的方法是什么。我的代码如下,但我知道它不是这样的。我将多次需要这种如图所示的环境,所以知道如何创建它会很好。
\text{Pr}\Bigg[
\begin{eqnarray*}
(pp, t) \leftarrow \textsf{Setup}(1^k, m) & & \\
(pvk, x, aux) \leftarrow \textsf{Stretch}(pp), & : &
\textsf{Verify}(pp, pvk, t, i, x_i, \pi) = 1 \\
\pi \leftarrow \textsf{Prove}(pp, aux, i) & & \\
\end{eqnarray*}
\Bigg]
答案1
希望以下代码能够满足您的要求:
\documentclass{book}
\usepackage{mathtools}
\newcommand{\pp}{\operatorname{pp}}
\newcommand{\pvk}{\operatorname{pvk}}
\begin{document}
\begin{align*}
\Pr
\begin{bmatrix*}[l]
(\pp, \tau) \xleftarrow{\$}{}\text{Setup}(1^{\lambda}, m) \\
(\text{pvk}, x, \text{aux}) \xleftarrow{\$}{} \text{Stretch}(\pp), : \text{Verify}(\pp, \pvk, \tau, i, x_i, \pi) = 1 \\
\pi \xleftarrow{\$}{} \text{Prove}(\pp, \text{aux}, i)
\end{bmatrix*}=1.
\end{align*}
\end{document}
答案2
我提出了一个基于\DeclarePairedDelimiterXPP
以下内容的解决方案mathtools
:
\documentclass[]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{mathtools}
\DeclarePairedDelimiterXPP{\PR}[1]{\operatorname{Pr}}{[} {]}{}{\begin{array}{@{}l@{}}#1 \end{array}}
\begin{document}
\[ \PR*{ (\mathsf{pp}, \mathcal{T}) \xleftarrow{\$} \textsf{Setup}(1^k, m) \\
(\mathsf{pvk}, x, \mathsf{aux}) \xleftarrow{\$} \textsf{Stretch}(\mathsf{pp}), : \textsf{Verify}(\mathsf{pp}, \mathsf{pvk},\mathcal{T}, i, x_i, \pi) = 1 \\
\pi \xleftarrow{\$} \textsf{Prove}(\mathsf{pp}, \mathsf{aux}, i)} \]%
\end{document}
答案3
使用的解决方案empheq
包裹。
\documentclass[]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{empheq}
\DeclareMathOperator{\PR}{Pr}
\begin{document}
\begin{empheq}[left={\PR = \empheqlbrack},right={\empheqrbrack = 1}]{align*}
& (pp, t) \leftarrow \textsf{Setup}(1^k, m) \\
& (pvk, x, aux) \leftarrow \textsf{Stretch}(pp), : \textsf{Verify}(pp, pvk, t, i, x_i, \pi) = 1 \\
& \pi \leftarrow \textsf{Prove}(pp, aux, i)
\end{empheq}
\end{document}