指向表格某一列的箭头

指向表格某一列的箭头

这是我要绘制指向表格特定列的箭头的代码,我对输出结果还算满意,但对制作方法不太满意:xshift 和 yshift 数值完全是通过盲目试错选择的,而我要绘制的表格太多了!有什么更有效、更优雅的方式来定位这个箭头?

我可能可以完全用 tikz 绘制表格,但那是另一回事:表格已经创建,然后我决定添加箭头来突出显示某些行。

代码:

\documentclass{article}
\usepackage{tikz}
\usepackage{colortbl}
\usetikzlibrary{matrix}
\newcommand{\tikzmark}[1]{\tikz[overlay, remember picture] \coordinate (#1);}
\definecolor{Gray}{gray}{0.9}
\newcolumntype{g}{>{\columncolor{Gray}}c}
\begin{document}
  \begin{table}[h]
    \centering
\begin{tabular}{ccgcccc|c}
      & 1     & 3/2   & 1/2   & 1/2   & 0     & 0     & 5/2 \\
      & 0     & -5    & 0     & -2    & 1     & 0     & 1 \\ \rowcolor{Gray}
      & 0     & -1/2  & 1/2   & -3/2  & 0     & 1     & 1/2 \\ \hline
$z$   & 0     & \tikzmark{here} -7/2  & 1/2   & -5/2  & 0     & 0     & -25/2 \\
\end{tabular}%
    \end{table}
\tikz[overlay,remember picture] {
  \draw[->,>=stealth] ([xshift=12pt,yshift=-25pt]here) -- ([xshift=12pt,yshift=-5pt]here);
}
\end{document}

输出:

在此处输入图片描述

答案1

在这种情况下,最好改变tikzmark定义并使用常规node代替coordinate。这样您就可以引用它的中心。

\documentclass{article}
\usepackage{tikz}
\usepackage{colortbl}
\usetikzlibrary{matrix}
\newcommand{\tikzmark}[2]{\tikz[overlay, remember picture] \node[inner sep=0pt, outer sep=0pt, anchor=base] (#1) {#2};}
\definecolor{Gray}{gray}{0.9}
\newcolumntype{g}{>{\columncolor{Gray}}c}
\begin{document}
  \begin{table}[h]
    \centering
\begin{tabular}{ccgcccc|c}
      & 1     & 3/2   & 1/2   & 1/2   & 0     & 0     & 5/2 \\
      & 0     & -5    & 0     & -2    & 1     & 0     & 1 \\ \rowcolor{Gray}
      & 0     & -1/2  & 1/2   & -3/2  & 0     & 1     & 1/2 \\ \hline
$z$   & 0     & \tikzmark{here}{-7/2}  & 1/2   & -5/2  & 0     & 0     & -25/2 \\
\end{tabular}%
    \end{table}
\tikz[overlay,remember picture] {
  \draw[<-,>=stealth] (here) -- ++(-90:1cm);
}
\end{document}

在此处输入图片描述

答案2

\vector您可以使用带有默认单位的简单宏pt。可以通过设置来更改它\unitlength=...

\documentclass{article}
\usepackage[table]{xcolor}
\definecolor{Gray}{gray}{0.9}
\newcolumntype{g}{>{\columncolor{Gray}}c}    
\begin{document}

\begin{center}
\begin{tabular}{ccgcccc|c}
      & 1     & 3/2   & 1/2   & 1/2   & 0     & 0     & 5/2 \\
      & 0     & -5    & 0     & -2    & 1     & 0     & 1 \\ \rowcolor{Gray}
      & 0     & -1/2  & 1/2   & -3/2  & 0     & 1     & 1/2 \\ \hline
$z$   & 0     & -7/2  & 1/2   & -5/2  & 0     & 0     & -25/2 \\
      &       &  \put(0,-10){\vector(0,1){20}}
\end{tabular}%
\end{center}

\end{document}

在此处输入图片描述

相关内容