如何绘制一条穿过表格的行和列的线?

如何绘制一条穿过表格的行和列的线?

有人能告诉我如何画一条穿过表格中某些列和行的线,就像这个例子中的线一样?

例如一条线穿过 a、b、c 行

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

\begin{table}[H]
    \centering
    \begin{tabular}{|c|c|c|}
\hline
        a & b & c \\
        \hline
        d & e & f \\
        \hline
        h & i & j \\
        \hline
    \end{tabular}

\end{table}

\end{document}

提前致谢。

答案1

一种可能性是使用 TiZ 和tikzmark

\documentclass{article}
\usepackage{float}
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\begin{document}

\begin{table}[H]
    \centering
    \begin{tabular}{|c|c|c|}
\hline
        \tikzmarknode{a}{a} & b & \tikzmarknode{c}{c} \\
        \hline
        d & e & f \\
        \hline
        h & i & j \\
        \hline
    \end{tabular}%
\begin{tikzpicture}[overlay,remember picture]
 \draw[thick,red,-stealth] ([xshift=-1ex]a.west) -- ([xshift=1ex]c.east);
\end{tikzpicture}%  

\end{table}
\end{document}

在此处输入图片描述

请注意,语法\tikzmarknode\tikzmarknode{<id>}{<content>},其中id是标识符,content是内容。因此,如果您想要一个1,而不是a,您可以使用相同的标识符,只更改第二个参数\tikzmarknode{a}{1}。然后表中将出现 1。

\documentclass{article}
\usepackage{float}
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\begin{document}

\begin{table}[H]
    \centering
    \begin{tabular}{|c|c|c|}
\hline
        \tikzmarknode{a}{1} & 2 & \tikzmarknode{c}{3} \\
        \hline
        \tikzmarknode{goat}{d} & e & f \\
        \hline
        \tikzmarknode{duck}{h} & i & j \\
        \hline
    \end{tabular}%
\begin{tikzpicture}[overlay,remember picture]
 \path[left color=blue,right color=red] 
  ([xshift=-1ex,yshift=-0.3pt]a.west) rectangle ([xshift=1ex,yshift=0.3pt]c.east);
 \draw[red,shorten >=-0.2ex,shorten <=-0.2ex]  (goat.north) -- (duck.south);
\end{tikzpicture}%  

\end{table}
\end{document}

在此处输入图片描述

这个例子也说明,对于 TiZ 你可以超越单色线条。

答案2

仅使用基本工具:

\documentclass{article}
\usepackage{float}
\usepackage[table, svgnames]{xcolor}
\usepackage{hhline, array}

\begin{document}

\begin{table}[H]
\centering\setlength{\extrarowheight}{1pt}
\begin{tabular}{|c|c|c|}
\hhline{|---|}
\noalign{\vskip \dimexpr1.5ex + 1pt-0.4pt\relax}
\hhline{>{\arrayrulecolor{Crimson}}--->{\arrayrulecolor{black}}|}
\noalign{\vskip\dimexpr-1.5ex- 1pt\relax}
    a & b & c \\
    \hhline{|---|}
    d & e & f \\
    \hhline{|---|}
    h & i & j \\
    \hhline{|---|}
\end{tabular}

\end{table}

\end{document} 

在此处输入图片描述

答案3

另一种方法是

\documentclass{article}
\usepackage{tikz}
\usepackage{xcolor}
\begin{document}
\begin{center}
  \begin{tikzpicture}
    \foreach \x in {0,2,...,6} \draw[thick] (\x,0)--(\x,6);
    \foreach \x in {0,2,...,6} \draw[thick] (0,\x)--(6,\x);

    \node at (1.5,1.5) {$g$};
   \node at (3.5,1.5) {$h$};
  \node at (5.5,1.5) {$i$};
   \node at (1.5,3.5) {$d$};
    \node at (3.5,3.5) {$e$};
   \node at (5.5,3.5) {$f$};
    \node at (1.5,5.5) {$a$};
   \node at (3.5,5.5) {$b$};
    \node at (5.5,5.5) {$c$};


    \color{magenta}
    \draw[thick,-] (8,2.5)--(0,2.5);

    \color{cyan}
    \draw[thick,-] (5,6)--(5,0);

    \color{green}
    \draw[thick,->] (.5,0)--(.5,7);

  \end{tikzpicture}
\end{center}
\end{document}

显示器

在此处输入图片描述

注意。在这种情况下,我没有像您一样使用环境table。将其作为显示相同结果的替代方法。


我这样做是受到@JoséCarlosSantos 回答我的问题的启发我如何在表格中添加箭头和数字?

相关内容