如何对齐表格列中的公式?

如何对齐表格列中的公式?

如果可能的话,我在另一篇论文中找到了这个例子,我想效仿:

对齐公式示例

我如何才能拥有这样的三列布局,其中中间一列将所有公式与第一个运算符对齐?我查看了与混合对齐环境和表格相关的各种问题/答案,但我发现似乎没有任何东西能像这样工作。

答案1

\documentclass{article}
\usepackage{libertine}
\usepackage[libertine]{newtxmath}
\begin{document}

\begin{tabular}{lr@{$\mskip\thickmuskip$}c@{$\mskip\thickmuskip$}ll}
  \multicolumn{2}{l}{\textbf{Serverless  Functions}}  &            & \multicolumn{2}{l}{$\langle f, \Sigma, \mathsf{recv}, \mathsf{step}_f, \mathsf{init} \rangle$} \\
  Functions                       & $F$               & $\coloneq$ & $\cdots$                                                                                       \\
  Function name                   & $f$               & $\in$      & $F$                                                                                            \\
  Internal states                 & $\Sigma$          & $\coloneq$ & $\cdots$                                                                                       \\
  Initial state                   & $\mathsf{init}$   & $\in$      & $F \to \Sigma$                                                                                 \\
  Receive event                   & $\mathsf{recv}_f$ & $\in$      & $v \times \Sigma \to \Sigma$                                                                   \\
  Internal step                   & $\mathsf{step}_f$ & $\in$      & $F \times \Sigma \to \Sigma \times t$ & With  effect $t$                                       \\
  Values                          & $v$               & $\coloneq$ & $\cdots$                              & \textsc{json}, \textsc{http}, etc.                     \\
  Commands                        & $t$               & $\coloneq$ & $\varepsilon$                                                                                  \\
                                  &                   & $\vert$    & $\mathbf{return}(v)$                  &   Return  value                                        \\
\end{tabular}

\end{document}

在此处输入图片描述

答案2

与使用包的@Henri Menke 答案(+1)有细微的不同tabularray

\documentclass{article}
\usepackage{libertine}
\usepackage[libertine]{newtxmath}
\usepackage{tabularray}

\begin{document}
    \begin{tblr}{colspec = {l Q[r,$] @{\;} Q[l,$] l},
                 rowsep  = 1pt,
                 row{1}  = {font=\bfseries}
                 }
\SetCell[c=2]{l}    Serverless  Functions
    &                  & \SetCell[c=2]{c}  
                            \langle f, \Sigma,
                            \mathsf{recv}, \mathsf{step}_f,
                            \mathsf{init} \rangle           
                                            &               \\
Functions   
    & F                 & \coloneq\cdots    &               \\
Function name                   
    & f                 & \in F             &               \\
Internal states                 
    & \Sigma            & \coloneq \cdots   &               \\
Initial state                   
    & \mathsf{init}     & \in F \to \Sigma  &               \\
Receive event
    & \mathsf{recv}_f   & \in v \times \Sigma \to \Sigma
                                            &               \\
Internal step                   
    & \mathsf{step}_f   & \in F \times \Sigma \to \Sigma \times t
                                            & With  effect $t$  \\
Values
    & v                 & \coloneq \cdots   & \textsc{json}, \textsc{http}, etc.    \\
Commands                        
    & t                 & \coloneq \varepsilon  
                                            &               \\
    &                   & \vert\quad  \mathbf{return}(v) 
                                            & Return  value \\
    \end{tblr}
\end{document}

在此处输入图片描述

编辑: 上述解决方案适用于tabularray最新的软件包版本(2021N 之后)。对于较旧的软件包版本,例如 Overleaf 中暂时可用的版本,不幸的是,它不起作用(因为列中的数学环境尚未定义)。因此,您需要使用具有本地定义math环境的方法:例如:

\documentclass{article}
\usepackage{libertine}
\usepackage[libertine]{newtxmath}
\usepackage{tabularray}

\begin{document}
    \begin{tblr}{colspec = {l Q[r] @{\;} Q[l] l},
                 rowsep  = 1pt,
                 row{1}  = {font=\bfseries}
                 }
\SetCell[c=2]{l}    Serverless  Functions
    &   & \SetCell[c=2]{c}  $\langle f, \Sigma,
                            \mathsf{recv}, \mathsf{step}_f,
                            \mathsf{init} \rangle$          
                                            &               \\
Functions
    & $F$               & $\coloneq\cdots$  &               \\
Function name
    & $f$               & $\in F$           &               \\
Internal states
    & $\Sigma$          & $\coloneq \cdots$ &               \\
Initial state
    & $\mathsf{init}$   & $\in F \to \Sigma$&               \\
Receive event
    & $\mathsf{recv}_f$ & $\in v \times \Sigma \to \Sigma$
                                            &               \\
Internal step
    & $\mathsf{step}_f$ & $\in F \times \Sigma \to \Sigma \times t$
                                            & With  effect $t$  \\
Values
    & $v$               & $\coloneq \cdots$ & \textsc{json}, \textsc{http}, etc.    \\
Commands
    & $t$               & $\coloneq \varepsilon$
                                            &               \\
    &                   & $\vert\quad  \mathbf{return}(v)$
                                            & Return  value \\
    \end{tblr}
\end{document}

这给出了与第一个 MWE 相同的结果,但是定义“数学列”的优势却丢失了。

新版本tabularray预计将于六月左右推出(TeXlive 2022 发布后)。

答案3

这是仅使用 amsmath align 环境的解决方案。第一行中的数学元素的间距并不完全符合您的要求,但也许已经足够了。

\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{align*}
  &\text{\textbf{Serverless Functions}} ~  &  \qquad &\langle f, \Sigma,
      \text{\textbf{recv}}, \text{\textbf{step}}_f, \text{\textbf{init}} \rangle \\
  &\text{Functions}       & F                      &:=  \cdots                                                                 \\
  &\text{Function name}   & f                      &\in F                                                                      \\
  &\text{Internal states} & \Sigma                 &:= \cdots                                                                  \\
  &\text{Initial state}   & \text{\textbf{init}}   &\in F \rightarrow \Sigma                                                   \\
  & \text{Receive event}  & \text{\textbf{recv}}_f &\in v \times \Sigma \rightarrow \Sigma                                     \\
  & \text{Internal step}  & \text{\textbf{step}}_f &\in F \times \Sigma \rightarrow \Sigma \times t & &\text{With effect $t$}  \\
  & \text{Values}         & v                      &:= \cdots                                       & &\text{JSON, HTTP, etc.} \\
  & \text{Commands}       & t                      &:= \varepsilon                                                             \\
  &                       &                        &| \text{\quad \textbf{return}$(v)$}             & &\text{Return value}
\end{align*}
\end{document}

在此处输入图片描述

相关内容