如何在表格单元格中画一条垂直线?

如何在表格单元格中画一条垂直线?

我希望解释清楚:我有一张有 4 行的表格,其中一列的值在所有行中都相同。我不想为每一行复制 4 次,而是将其放在中间(第 2 行和第 3 行之间),并在其上方和下方画两条垂直线,直到第 1 行和第 4 行。

我设法将数字放在multirow中间,但我不知道如何画两条垂直线。有什么想法吗?

编辑:我想要垂直线从数字上方的中间延伸 - 向上,并从数字下方的中间延伸向下。

答案1

一种过度的 TikZ 解决方案;公共值按要求垂直居中:

\documentclass{article}
\usepackage{multirow}
\usepackage{tikz}
\usetikzlibrary{calc}

\newcommand\tikzmark[1]{\tikz[remember picture,overlay] \node (#1) {};}

\begin{document}

\noindent\begin{tabular}{cccc}
column 1a &\tikzmark{a}\multirow{4}{*}{\tikzmark{c}50\tikzmark{d}} & column 3a & column 4a \\
column 1b & & column 3b & column 4b \\
column 1c & & column 3c & column 4c \\
column 1d &\tikzmark{b} & column 3d & column 4d \\
\end{tabular}
\tikz[remember picture,overlay]
{
\draw let \p1=( $ (c)!0.5!(d) $ ) in ([yshift=9pt]\x1,\y1) -- ([yshift=3pt]\p1|-a.north);
\draw let \p1=( $ (c)!0.5!(d) $ ) in ([yshift=-2pt]\x1,\y1) -- (\p1|-b);
}
\end{document}

在此处输入图片描述

在评论中,杰利迪亚兹提出了以下简化方法,不需要使用\multirow并在一个步骤中绘制带有值的线:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}

\newcommand\tikzmark[1]{\tikz[remember picture,overlay] \coordinate (#1);}

\begin{document}

\noindent\begin{tabular}{cccc}
column 1a &\tikzmark{a} & column 3a & column 4a \\
column 1b & & column 3b & column 4b \\
column 1c & & column 3c & column 4c \\
column 1d &\tikzmark{b} & column 3d & column 4d \\
\end{tabular}

\tikz[remember picture,overlay]
{\draw ([yshift=1ex]a) -- (b) node[midway,fill=white] {50};}

\end{document}

在此处输入图片描述

答案2

下面是通过 create 实现效果的示例假的multicolumn将调用命令的列。

这是 MWE。

\documentclass{article}
\begin{document}
Create faux columns 2 and 3.

The hspaces in the first line are to make the centering work correctly.

\begin{tabular}[t]{cc|ccc}%
 1a & \hspace*{1em} & \hspace*{1em} & 3 & 4 \\
 1b & & & 3 & 4 \\
 1c & \multicolumn{2}{c}{value} & 3 & 4 \\
 1d & & & 3 & 4 \\
\end{tabular}


\end{document}

这就是你要找的东西吗?

在此处输入图片描述

相关内容