这是我要绘制指向表格特定列的箭头的代码,我对输出结果还算满意,但对制作方法不太满意: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}