我正在尝试使用 TikZ 重新实现我使用 PSTricks 制作的图表,但我认为我的思维模型一定是错误的。以下是我解决问题的方法:
整体图表布局是由
tabular
环境决定的。布局内的典型单元
tabular
需要是 TikZ 节点,这样我就可以绘制指向它的曲线。有时单元格包含项目符号,这需要起源绘制到另一个单元格边缘的曲线。
一些真正令人兴奋的单元格将文本堆叠在另一个小图表的顶部,该小图表本身包含两个项目符号,每个项目符号都源自绘制到另一个节点的箭头。
以下是我尝试解决该问题的方法:
表格中的每个单元格都有自己的
\begin{tikzpicture}
...\end{tikzpicture
,并带有remember picture
选项。每个单元都是我可以指向的一个节点。
如果单元格的内容只是文本,那么它只是文本。
如果单元格的内容比较复杂,我会把其他
\begin{tikzpicture}
...\end{tikzpicture}
在节点的内容中。每条曲线或多或少都有其自身的
\begin{tikzpicture}
……\end{tikzpicture}
我正在努力让它工作,主要是通过overlay
或多或少随机地投入。但我没有一个心理模型。我从搜索 TeX.se 和其他地方学到的是“不要这样做”。什么应该我会做什么?
我应该读些什么才能建立合适的心理模型指定TeX 中的图表,TeX 中的图表?等等?
答案1
下面是一个使用的示例tikzmark
。绘制连接的图片需要有键remember picture,overlay
。
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\tikzset{bullet/.style={circle,inner sep=0.2ex,fill}}
\begin{document}
\begin{table}[htb]
% note that the table borders are just for illustration
% this works with bookmarks, too
\centering
\begin{tabular}{|l|c|l|}
\hline
\tikzmarknode{bla}{bla} & \tikzmarknode{bla2}{bla} & \tikzmarknode{blub}{blub}\\
\hline
\tikzmarknode[bullet]{b1}{} &
\begin{tikzpicture}[remember picture,baseline={(0,0)}]
\draw[thick,blue] plot[variable=\x,domain=0:3] (\x,{sin(\x*120)});
\path (0.5,1.2) node[bullet] (b3){} (1.5,1.2) node[bullet] (b4){}
(0,1.4) (0,-1.2);
\end{tikzpicture}
& \tikzmarknode[bullet]{b2}{} \\
\hline
\end{tabular}
\begin{tikzpicture}[overlay,remember picture]
\draw[red,-stealth] (bla) to[bend left] (bla2);
\draw[red,-stealth] (bla2) to[bend left] (blub);
\draw[red,-stealth] (bla) to[bend left] (b1);
\draw[red,-stealth] (bla) to[bend left] (b3);
\draw[red,-stealth] (blub) to[bend left] (b2);
\draw[red,-stealth] (blub) to[bend left] (b4);
\end{tikzpicture}
\caption{A table with \texttt{\textbackslash tikzmarknode}s,
\texttt{tikzpicture}s and Ti\emph{k}Z annotations.}
\end{table}
\end{document}