数组仅针对特定行进行拉伸

数组仅针对特定行进行拉伸

当表格、分数等内联数学时,会显得“拥挤”。我现在添加了以下行

\everymath{\displaystyle}

在我的序言中,我发现在这里回答另一个问题。这非常巧妙地让我的文档中的每个公式都以大格式显示。

但显然表格行无法检测出这些较大的方程式。分数等“凸出”行,因此行重叠。从这个答案我得到了以下代码来添加到序言中:

\def\arraystretch{2}

这会将表格行拉伸至两倍大小。但这发生在全部行。有没有办法只覆盖内容太宽的行,这样就只有那些行会被拉伸?


一个例子:

\begin{center}
\begin{tabular}{l c l}
    $k^0$ &$=$& $1$\\
    $k^{-1}$ &$=$& $\frac1k$\\
    $k^{-2}$ &$=$& $\frac1{k^2}=\frac{1}{k\cdot k}$\\
    $k^{-3}$ &$=$& $\frac1{k^3}=\frac{1}{k\cdot k\cdot k}$\\
\end{tabular}
\end{center}

给出结果:

在此处输入图片描述

添加\arraystretch命令将使行更高 - 但是全部行会更高,没有任何数学问题内容的行也是如此。因此所有内容都会填充更多。我正在寻找一种方法,以便仅使用命令到达内容过高的行\arraystretch

答案1

只有一个粗略的解决方案:使用\\[1.2ex](即在“行”中断后提供更多空间)

\documentclass{article}


\begin{document}
\begin{center}
\begin{tabular}{l c l}
    $k^0$ &$=$& $1$\\
    $k^{-1}$ &$=$& $\frac1k$\\[1.2ex]
    $k^{-2}$ &$=$& $\frac1{k^2}=\frac{1}{k\cdot k}$\\[1.2ex]
    $k^{-3}$ &$=$& $\frac1{k^3}=\frac{1}{k\cdot k\cdot k}$\\
\end{tabular}
\end{center}

\end{document}

编辑具有特殊列类型的改进版本

\documentclass{article}

\usepackage{array}
\usepackage{mathtools}

\newcolumntype{M}{>{$}l<{$}}

\newlength{\extraarrayvspace}
\setlength{\extraarrayvspace}{1.4ex}

\begin{document}
\begin{center}
\begin{tabular}{M>{$}c<{$}M}
    k^0    &=& 1\tabularnewline
    k^{-1} &=& \dfrac{1}k\tabularnewline[\extraarrayvspace]
    k^{-2} &=& \dfrac{1}{k^2}=\dfrac{1}{k\cdot k}\tabularnewline[\extraarrayvspace]
    k^{-3} &=& \dfrac{1}{k^3}=\dfrac{1}{k\cdot k\cdot k}\tabularnewline
\end{tabular}
\end{center}

\end{document}

这是一个解决方案cellspace

cellspace定义一个S列类型(我认为 S 代表拉伸),它必须具有实际的列类型作为参数,即SlSc等,并根据数学等内容为单元格计算更好的高度。

可以改变相关单元格的长度\cellspacetoplimit\cellspacebottomlimit上下的空间。

\documentclass{article}

\usepackage{array}
\usepackage{mathtools}
\usepackage{cellspace}

\newcolumntype{M}{>{$}Sl<{$}}


\addtolength{\cellspacetoplimit}{1.5pt}
\addtolength{\cellspacebottomlimit}{1.5pt}

\begin{document}
\begin{center}
\begin{tabular}{M>{$}Sc<{$}M}
    k^0    &=& 1\tabularnewline
    k^{-1} &=& \dfrac{1}k\tabularnewline
    k^{-2} &=& \dfrac{1}{k^2}=\dfrac{1}{k\cdot k}\tabularnewline
    k^{-3} &=& \dfrac{1}{k^3}=\dfrac{1}{k\cdot k\cdot k}\tabularnewline
\end{tabular}
\end{center}

\end{document}

在此处输入图片描述

答案2

这是一个数学对齐,其环境默认使用显示样式:

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath}
\begin{document}



align 
\begin{align*}
    k^0    &=1\\
    k^{-1} &= \frac1k\\
    k^{-2} &= \frac1{k^2}=\frac{1}{k\cdot k}\\
    k^{-3} &= \frac1{k^3}=\frac{1}{k\cdot k\cdot k}
\end{align*}

\end{document}

答案3

您可以将 3pt 的 stackgap(垂直缓冲区,上方和下方)添加到第三行分数。

\documentclass{article}
\usepackage{stackengine}
\begin{document}
\begin{center}
\begin{tabular}{l c l}
    $k^0$ &$=$& $1$\\
    $k^{-1}$ &$=$& $\frac1k$\\
    $k^{-2}$ &$=$& \addstackgap[3pt]{$\frac1{k^2}=\frac{1}{k\cdot k}$}\\
    $k^{-3}$ &$=$& $\frac1{k^3}=\frac{1}{k\cdot k\cdot k}$\\
\end{tabular}
\end{center}
\end{document}

在此处输入图片描述

答案4

您可以使用cellspace包来实现这一点:它定义了带有前缀的限定符的列中单元格上方和下方的最小垂直填充S。我借此机会简化了您的代码:2 列就足够了。

或者,为什么不使用环境align*

\documentclass{article}

\usepackage{array}
\usepackage{mathtools}
\usepackage{cellspace}
\setlength\cellspacetoplimit{2pt}
\setlength\cellspacebottomlimit{2pt}

\begin{document}

\[ \everymath{\displaystyle}\begin{tabular}{ >{$}l<{$}@{} >{${}}Sl<{$}}
   k^0 & =1 \\
     k^{-1} & = \frac1k \\
     k^{-2} & = \frac1{k^2}=\frac{1}{k\cdot k} \\
     k^{-3} & = \frac1{k^3}=\frac{1}{k\cdot k\cdot k}
\end{tabular} \]

\begin{align*}
   \mathrlap{k^0}\hphantom{k^{-2}} & =1 \\
     k^{-1} & = \frac1k \\
     k^{-2} & = \frac1{k^2}=\frac{1}{k\cdot k} \\
     k^{-3} & = \frac1{k^3}=\frac{1}{k\cdot k\cdot k}
\end{align*}

\end{document} 

在此处输入图片描述

相关内容