
Alguém poderia me dizer como posso desenhar uma linha que passe por algumas colunas e linhas de uma tabela como a deste exemplo?
por exemplo, uma linha cruzando a linha 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}
Desde já, obrigado.
Responder1
Uma possibilidade é usar TikZ e 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}
Observe que a sintaxe de \tikzmarknode
is \tikzmarknode{<id>}{<content>}
, onde id
é um identificador e content
é o conteúdo. Então, se você quiser 1
, digamos, em vez de a
, você pode usar o mesmo identificador e alterar apenas o segundo argumento \tikzmarknode{a}{1}
,. Então haverá um 1 na tabela.
\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}
Este exemplo também serve para ilustrar que com TikZ você pode ir muito além das linhas monocromáticas.
Responder2
Com apenas ferramentas básicas:
\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}
Responder3
Outra maneira de fazer isso é a seguinte
\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}
Exibições
OBSERVAÇÃO. Neste caso não estou usando o ambiente table
como você fez. Tome isso como uma alternativa para exibir o mesmo resultado.
Eu fiz isso, inspirado na resposta do @JoséCarlosSantos na resposta à minha perguntaComo posso adicionar essas setas e números dentro de uma tabela?