多行方程,其中某些字符跨越所有行

多行方程,其中某些字符跨越所有行

我正在尝试创建一个多行方程,其中的一些字符跨越两行。

Target equation

通过使用 amsmath 包,我更接近了

\begin{multline*}
Pr[X\leftarrow DECODE(\Delta;r_1,...,r_\ell) | 
\displaystyle{(\Delta;q_1,...,q_\ell)\leftarrow QUERY(1^\lambda;J)} \\
\displaystyle{\Lambda (\Lambda^\ell _{j=1})}
]
\end{multline*}

但我很茫然,因为这不允许我在两行上跨越一些字符 Bad multiline

任何建议,将不胜感激。

答案1

该图像在排版上存在多处不一致之处。

我建议定义语义命令以确保相似的对象总是采用相同的排版。

我不喜欢\ell,但是你可以用它代替平原l

\documentclass{article}
\usepackage{amsmath}

\newcommand{\func}[1]{\mathit{#1}}

\begin{document}

\begin{equation*}
\Pr\left[
  X \gets \func{DECODE}(\Delta;r_1,\dots,r_l)
\;\middle|\;
  \begin{matrix}
  (\Delta;q_1,\dots,q_l) \gets \func{QUERY}(1^\lambda;J) \\
  \Lambda(\Lambda_{j=1}^l \gets \func{RESPOND}(X^{(j)};q_j))
  \end{matrix}
\right]
\end{equation*}

\end{document}

enter image description here

稍微不同的方法,您可以指定括号作为固有附件,并可以选择其大小(请参阅中\Pr的文档)。基本上,选择自动大小,(或可选参数中的任何其他分隔符大小更改命令)选择指定的大小。\DeclarePairedDelimitermathtools\Pr*\Pr[\big]

\documentclass{article}
\usepackage{amsmath,mathtools}

\newcommand{\func}[1]{\mathit{#1}}

\renewcommand{\Pr}{\operatorname{Pr}\brackets}
\DeclarePairedDelimiterX{\brackets}[1]{[}{]}{#1}
\newcommand{\given}{\;\delimsize|\;\mathopen{}}

\begin{document}

\begin{equation*}
\Pr*{
  X \gets \func{DECODE}(\Delta;r_1,\dots,r_l)
\given
  \begin{matrix}
  (\Delta;q_1,\dots,q_l) \gets \func{QUERY}(1^\lambda;J) \\
  \Lambda(\Lambda_{j=1}^l \gets \func{RESPOND}(X^{(j)};q_j))
  \end{matrix}
}
\end{equation*}

\begin{equation*}
\Pr[\Big]{
  X \gets \func{DECODE}(\Delta;r_1,\dots,r_l)
\given
  \begin{matrix}
  (\Delta;q_1,\dots,q_l) \gets \func{QUERY}(1^\lambda;J) \\
  \Lambda(\Lambda_{j=1}^l \gets \func{RESPOND}(X^{(j)};q_j))
  \end{matrix}
}
\end{equation*}

\begin{equation*}
\Pr[\bigg]{
  X \gets \func{DECODE}(\Delta;r_1,\dots,r_l)
\given
  \begin{matrix}
  (\Delta;q_1,\dots,q_l) \gets \func{QUERY}(1^\lambda;J) \\
  \Lambda(\Lambda_{j=1}^l \gets \func{RESPOND}(X^{(j)};q_j))
  \end{matrix}
}
\end{equation*}

\end{document}

enter image description here

答案2

我的主要建议是 (a) 使用\biggl[\biggm|\biggr]来构造方程式,以及 (b)对和array之间的材料使用两行环境。不过,我不会使用环境。无编号的单行显示数学环境就可以了。\biggm|\biggr]multline*

enter image description here

\documentclass{article}
\usepackage{amsmath}
\usepackage{array}   % for '\newcolumntype' macro
\newcolumntype{L}{>{\displaystyle}l} % automatic displaystyle math mode
\begin{document}
\[
\Pr\biggl[
X\leftarrow \mathit{DECODE}(\Delta;r_1,\dots,r_\ell) 
\biggm| 
\begin{array}{@{}L@{}}
   (\Delta;q_1,\dots,q_\ell)\leftarrow \mathit{QUERY}(1^\lambda;J) \\
   \Lambda \bigl(\Lambda^\ell_{j=1}\leftarrow \mathit{RESPOND}(X^{(j)};q_j)\bigr)
\end{array}
\biggr]
\]
\end{document} 

答案3

enter image description here

通过使用array

\documentclass{article}
\usepackage{amsmath}

\begin{document}
\[
\Pr \left[X\leftarrow\text{DECODE}(\Delta;r_1,\dotsc,r_\ell)\ \middle|
    \begin{array}{l}
    (\Delta;q_1,\dotsc,q_\ell)\leftarrow \text{QUERY}(1^\lambda;J) \\
     \Lambda(\Lambda^\ell _{j=1}) \leftarrow\text{RESPOND}(X^{(j)}:q_j)
     \end{array}
    \right]
\]
\end{document}

相关内容