当数组单元格包含 \left(...\right) 时,cellspace 包不起作用

当数组单元格包含 \left(...\right) 时,cellspace 包不起作用

我有这个MWE:

\documentclass[a4paper]{article}
\usepackage{amsmath}
\usepackage{mathtools}
\usepackage[math]{cellspace}
\setlength{\cellspacetoplimit}{5pt}
\setlength{\cellspacebottomlimit}{5pt}
\usepackage{siunitx}

\DeclarePairedDelimiter\ceil{\lceil}{\rceil}

\begin{document}
\[
    x = \left\{
    \begin{array}{cc} % using {Ccc} instead of {cc} doesn't work
    p\left(\ceil*{\frac{x}{y}}\right) & : 0 \\
    r\left(\ceil*{\frac{x}{y}}\right) & : 1 \\
    \end{array}
    \right.
\]
\end{document}

我想要的只是在每个数组单元的顶部和底部进行一些对称填充。 cellspace 包带有math答案中建议的选项这个问题似乎是一个干净的解决方案。但是,如果用\begin{array}{cc}替换 以\begin{array}{Ccc}使用 cellspace 包提供的最小单元格填充,则 MWE 会中断。(用\left((替换\right)可以) 使其再次工作。)改用arraystretch似乎会增加不对称填充(顶部比底部更多)。我如何(如果可能)让 cellspace 包在此示例中工作?如果这不可能,我还有什么其他选择?

答案1

我建议一种解决方法:使用cases环境,然后\addlinespacebooktabs

\documentclass[a4paper]{article}
\usepackage{mathtools}
\usepackage[math]{cellspace}
\setlength{\cellspacetoplimit}{5pt}
\setlength{\cellspacebottomlimit}{5pt}
\usepackage{siunitx}
\usepackage{booktabs} 
\DeclarePairedDelimiter\ceil{\lceil}{\rceil}

\begin{document}

\[
    x =
    \begin{cases}
    p\left(\ceil*{\frac{x}{y}}\right) & : 0 \\ \addlinespace
    r\left(\ceil*{\frac{x}{y}}\right) & : 1 \\
    \end{cases}
\]

\end{document} 

在此处输入图片描述

答案2

使用tblr新 LaTeX3 包中的环境tabularray,没有太多必要使用cellspace包。

\documentclass[a4paper]{article}

\usepackage{amsmath}
\usepackage{mathtools}

\usepackage{tabularray}
\SetTblrInner{colsep=5pt} % default in array environmemt

\DeclarePairedDelimiter\ceil{\lceil}{\rceil}

\begin{document}

\section{Array}

\[
    x = \left\{
    \begin{array}{cc}
    p\left(\ceil*{\frac{x}{y}}\right) & : 0 \\
    r\left(\ceil*{\frac{x}{y}}\right) & : 1 \\
    \end{array}
    \right.
\]

\section{Tabularray}

\[
    x = \left\{
    \begin{tblr}{cc}
    p\left(\ceil*{\frac{x}{y}}\right) & : 0 \\
    r\left(\ceil*{\frac{x}{y}}\right) & : 1 \\
    \end{tblr}
    \right.
\]

\end{document}

在此处输入图片描述

答案3

通过{NiceArray}及其nicematrixcell-space-limits,您可以直接获得预期的输出。

\documentclass[a4paper]{article}
\usepackage{mathtools}
\usepackage{nicematrix}

\DeclarePairedDelimiter\ceil{\lceil}{\rceil}

\begin{document}
\[
    x = \left\{
    \begin{NiceArray}{cc}[cell-space-limits=5pt]
    p\left(\ceil*{\frac{x}{y}}\right) & : 0 \\
    r\left(\ceil*{\frac{x}{y}}\right) & : 1 \\
    \end{NiceArray}
    \right.
\]
\end{document}

上述代码的输出

相关内容