我想知道如何移动箭头,使它们不与文本相交。最好能够将下箭头与第二行数字的顶部对齐,而不是与底部对齐。有什么想法可以做到这一点吗?
我正在使用以下代码来生成它
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\begin{document}
\caption{}
\begin{tabular}{|lrrrrrrrrrrrrrrrrrrrl}
\hline
\multicolumn{21}{|l|}{something}\\
\hline
-1 &
11 &
21 &
31 &
41 &
51 &
61 &
71 &
81 &
91 &
101 &
\tikzmark{a}111 &
121 &
131 &
141 &
151 &
161 &
171 &
181 &
191 &
\ldots\\
&\\
\multicolumn{21}{|l}{something\tikzmark{c}}\\
&\\
-1 &
11 &
21 &
31 &
41 &
51 &
61 &
71 &
81 &
91 &
101 &
\tikzmark{b}111 &
121 &
131 &
141 &
151 &
161 &
171 &
181 &
191 &
\ldots\\
\hline
\multicolumn{21}{|r|}{something}\\
\hline
\end{tabular}
\begin{tikzpicture}[overlay,
remember picture,
shorten >=2pt]
%
\draw [thick,->]({pic cs:c}) -- ({pic cs:a});
\draw [thick,->] ({pic cs:c}) -- ({pic cs:b});
\end{tikzpicture}
\end{document}
更新: 我面临另一个问题。我在文档中写了几个这样的表格,每个表格都有不同的数字和箭头集。这些箭头必须指向不同表格中的不同数字,例如,在表 1 中,箭头指向 (111,111),而在表 2 中,它们指向 (141,151)。
因此,在表 2 中,我将表 1 中的tikzmark{a}
和更改tikzmark{b}
为表 2 中包含和111, 111
的单元格。141
151
问题就在这里。当我重新编译文档时,表 1 和表 2 中的两组箭头都指向141
和151
。
看来remember picture
表 2 中包含的选项覆盖了表 1 中包含的标记。
我会用tikzmark{d}
、tikzmark{e}
、tikzmark{f}
来表示表格 2,然后按字母顺序表示表格 3、4 等。但很快字母就会用完,因为正如我之前所说,我在这一章中有几个表格。而且处理起来也会变得混乱。
有没有办法tikzmark
在每个表之后“刷新” ,以便我可以在每个表中使用tikzmark{a}
,tikzmark{b}
而tikzmark{c}
不必担心覆盖?
附言:为了完整起见,我可以说tabular
上面显示的环境在主文档中被调用-
\begin{table}[!h]
\setlength{\tabcolsep}{3pt}
\centering
\input{./path-to-tabular}
\label{3:tab:gnomon 1-1}
\end{table}
序言中提到
\newcommand*\ExpandableInput[1]{\@@input#1 }% to input tables
答案1
使用xshift
和yshift
例如:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\begin{document}
\begin{tabular}{|lrrrrrrrrrrrrrrrrrrrl}
\hline
\multicolumn{21}{|l|}{something}\\
\hline
-1 &
11 &
21 &
31 &
41 &
51 &
61 &
71 &
81 &
91 &
101 &
\tikzmark{a}111 &
121 &
131 &
141 &
151 &
161 &
171 &
181 &
191 &
\ldots\\
&\\
\multicolumn{21}{|l}{something\tikzmark{c}}\\
&\\
-1 &
11 &
21 &
31 &
41 &
51 &
61 &
71 &
81 &
91 &
101 &
\tikzmark{b}111 &
121 &
131 &
141 &
151 &
161 &
171 &
181 &
191 &
\ldots\\
\hline
\multicolumn{21}{|r|}{something}\\
\hline
\end{tabular}
\begin{tikzpicture}[overlay,
remember picture,
shorten >=2pt]
%
\draw [thick,->] ([yshift=.66ex,xshift=.25ex]{pic cs:c}) -- ([yshift=-.25ex]{pic cs:a});
\draw [thick,->] ([yshift=.66ex,xshift=.25ex]{pic cs:c}) -- ([yshift=1.75ex]{pic cs:b});
\end{tikzpicture}
\end{document}