\hline 后的额外垂直空间导致数组右边框出现间隙

\hline 后的额外垂直空间导致数组右边框出现间隙

\hline我想在 an后面留一点空格array;互联网上流传的主要建议似乎是使用

\hline \\ [-1.5ex]

不幸的是,这会导致 的 RHS 线上出现间隙array。一个最小的例子是:

\documentclass{article}
\begin{document}
$\begin{array}{|l|l|}%
\hline
& TEXT\\
\hline \\[-1.5ex]
&TEXT
\\\hline
\end{array}$
\end{document}

在此处输入图片描述

任何帮助将非常感激!

答案1

与其摆弄 的属性\hline,不如——就你的情况而言——提供印刷“支柱”:要么是“顶部支柱”,提供垂直间距多于放置它的线,或提供垂直间距的“底部支柱”以下放置它的线。这个想法是不是对我来说是原创的;它至少可以追溯到 Claudio Beccari 在TeX 和 TUG 新闻1993 年。这种方法的妙处在于,人们可以两个都array或环境的给定线上的顶部支柱和底部支柱tabular

以下 MWE 显示了如何实现这一点。请注意,我已从 切换到 ,array以便tabular将内容精简到最低限度;与 相关的垂直间距问题\hline对于两种环境都是相同的。

在此处输入图片描述

\documentclass{article}
\usepackage{array}
% Define typographic struts, as suggested by Claudio Beccari
%   in an article in TeX and TUG News, Vol. 2, 1993.
\newcommand\Tstrut{\rule{0pt}{2.6ex}}         % = `top' strut
\newcommand\Bstrut{\rule[-0.9ex]{0pt}{0pt}}   % = `bottom' strut

\begin{document}
With struts on the left, without struts on the right:

\begin{tabular}[t]{|l|}
\hline
TEXT\Tstrut\Bstrut\\ % top *and* bottom struts
\hline
TEXT\Tstrut\\        % top strut only
TEXT\Bstrut\\        % bottom strut only
\hline
\end{tabular}
\quad
\begin{tabular}[t]{|l|}
\hline
TEXT\\ 
\hline
TEXT\\    
TEXT\\      
\hline
\end{tabular}
\end{document}

答案2

根据具体情况,您可以插入垂直支柱(零宽度、垂直规则/对象)以将行内容推离其他内容。这是一个小例子:

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath}% http://ctan.org/pkg/amsmath
\begin{document}
\[
  \begin{array}{|l|l|}%
    \hline
    & \text{Text} \\
    \hline
    \rule{0pt}{1.5\normalbaselineskip} & \text{Text} \\
    \hline
  \end{array}
\]
\end{document}

我插入了一个垂直支柱,其高度在上述示例中1.5\normalbaselineskip18pt,任何超过基线跳过约 70% 的长度都可以。有关列和/行填充的更多信息,请参阅表格中的列填充

请注意,我已经使用了amsmath提供\text在数学模式下设置文本的命令。尽管这只是一个简单的示例,使用\mbox也足够了,amsmath但它还提供了其他值得使用的功能。


如果您希望<len>在两行之间插入一个固定量(比如说),您可以插入一个空白行(具有适当数量的列对齐&以提供正确的垂直规则放置)并使用形式的行跳过\\[\dimexpr-\normalbaselineskip+<len>]。这将“向后”跳转一段长度\normalbaselineskip- 行之间的基线距离 - 并“向前”跳转<len>- 所需的间隙。这是一个小例子:

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath}% http://ctan.org/pkg/amsmath
\begin{document}
\[
  \begin{array}[t]{|l|l|}%
    \hline
    & \text{Normal} \\
    \hline
    & \text{Text} \\
    \hline
  \end{array} \quad
  \begin{array}[t]{|l|l|}%
    \hline
    & \texttt{0pt} \\
    \hline
    & \\[-\normalbaselineskip]
    & \text{Text} \\
    \hline
  \end{array} \quad
  \begin{array}[t]{|l|l|}%
    \hline
    & \texttt{2pt} \\
    \hline
    & \\[\dimexpr-\normalbaselineskip+2pt]
    & \text{Text} \\
    \hline
  \end{array} \quad
  \begin{array}[t]{|l|l|}%
    \hline
    & \texttt{1em} \\
    \hline
    & \\[\dimexpr-\normalbaselineskip+1em]
    & \text{Text} \\
    \hline
  \end{array} \quad
  \begin{array}[t]{|l|l|}%
    \hline
    & \texttt{3pc} \\
    \hline
    & \\[\dimexpr-\normalbaselineskip+3pc]
    & \text{Text} \\
    \hline
  \end{array}
\]
\end{document}

答案3

只需添加一个(缺失的)“&”符号,否则不会创建最后一个单元格及其边框:

\documentclass{article}
\begin{document}
$\begin{array}{|l|l|}%
\hline
& TEXT\\
\hline
& % <<<< here
\\[-1.5ex]
&TEXT
\\\hline
\end{array}$
\end{document}

答案4

使用{NiceTabular}nicematrix垂直规则永远不会被破坏(它们由 PGF 绘制——它是 TikZ 的一个子层)。

\documentclass{article}
\usepackage{nicematrix}

\begin{document}

$\begin{NiceArray}{|l|l|}
\hline
& TEXT\\
\hline \\[-1.5ex]
&TEXT
\\\hline
\end{NiceArray}$

\end{document}

您需要多次编译。 上述代码的输出

相关内容