我希望解释清楚:我有一张有 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}
这就是你要找的东西吗?