如下图所示:
我尝试使用环境绘制它table
,但无法正确插入倾斜箭头!自定义这个有用的答案,我到达了:
\documentclass[a4paper,12pt]{book}
\usepackage{tikz}
\usepackage{graphicx}
\usetikzlibrary{positioning}
\begin{document}
\begin{figure}[htbp]
\centering
\begin{tikzpicture}
[
mydot/.style={circle, fill, inner sep=1pt }, >=latex, shorten >= 3pt, shorten <= 3pt
]
\node[mydot,label={left:8}] (a1) {};
\node[mydot,below=of a1,label={left:9}] (a2) {};
\node[mydot,below=of a2,label={left:10}] (a3) {};
\node[mydot,right=1cm of a1,label={right:0}] (b1) {};
\node[mydot,below=of b1,label={right:1}] (b2) {};
\node[mydot,below=of b2,label={right:2}] (b3) {};
\node[mydot,below=of b3,label={right:3}] (b4) {};
\path[->] (a1) edge (b1);
\path[->] (a2) edge (b2) edge (b3);
\path[->] (a3) edge (b4);
\end{tikzpicture}
\end{figure}
\end{document}
我可以以某种方式插入标题:Domain
并Range
在 MWE 上方内部吗?或者我应该以其他方式工作?在此 MWE 中,节点彼此并不像预期的那样靠近。
感谢您的时间!
答案1
看 如何在方程和矩阵中添加箭头?了解其工作原理。
\documentclass{article}
\usepackage{booktabs}
\usepackage{tikz}
\newcommand\tikznode[3][]{%
\tikz[remember picture,baseline=(#2.base)]
\node[minimum size=0pt,inner sep=0pt,#1](#2){#3};%
}
\begin{document}
\begin{tabular}{cc}
\toprule
Domain & Range \\
\midrule
\tikznode{n8}{8} & \tikznode{n0}{0}\\
\tikznode{n9}{9} & \tikznode{n1}{1}\\
& \tikznode{n2}{2}\\
\tikznode{n10}{10} & \tikznode{n3}{3}\\
\bottomrule
\end{tabular}
\begin{tikzpicture}[remember picture,overlay,
shorten <=2pt,shorten >=2pt,>=stealth]
\draw[->] (n8) -- (n0);
\draw[->] (n9) -- (n1);
\draw[->] (n9) -- (n2);
\draw[->] (n10) -- (n3);
\end{tikzpicture}
\end{document}
答案2
一个简单的答案tikz-cd。
\documentclass{article}
\usepackage{amsmath,tikz-cd}
\begin{document}
\begin{tikzcd}[row sep=0ex]
\hline
\text{Domain} & \text{Range} \\
\hline
8 \ar[r] & 0 \\
9 \ar[r] \ar[rd] & 1 \\
& 2 \\
10 \ar[r] & 3 \\
\hline
\end{tikzcd}
\end{document}
答案3
这里有一个替代方案nicematrix
。
\documentclass{article}
\usepackage{nicematrix, tikz}
\begin{document}
\begin{NiceTabular}{cc}
\hline
Domain & Range\\ \hline
8 & 0\\
9 & 1\\
& 2\\
10 & 3\\ \hline
\CodeAfter
\tikz{
\draw[-stealth](2-1)--(2-2);
\draw[-stealth](3-1)--(3-2);
\draw[-stealth](3-1)--(4-2);
\draw[-stealth](5-1)--(5-2);
}
\end{NiceTabular}
\end{document}
booktabs
您可以使用命令\toprule
、\bottomrule
和来增加间距\midrule
。
\documentclass{article}
\usepackage{nicematrix, booktabs, tikz}
\begin{document}
\begin{NiceTabular}{cc}
\toprule
Domain & Range\\ \midrule
8 & 0\\
9 & 1\\
& 2\\
10 & 3\\ \bottomrule
\CodeAfter
\tikz{
\draw[-stealth](2-1)--(2-2);
\draw[-stealth](3-1)--(3-2);
\draw[-stealth](3-1)--(4-2);
\draw[-stealth](5-1)--(5-2);
}
\end{NiceTabular}
\end{document}
答案4
还有另一个 Tikz 解决方案matrix
:
\documentclass[tikz,border=2mm]{standalone}
\usetikzlibrary{matrix}
\begin{document}
\begin{tikzpicture}
\matrix (A) [matrix of nodes]
{ \hline
Domain & Range \\
\hline
8 & 0 \\
9 & 1 \\
& 2 \\
10 & 3 \\
\hline \\
};
\draw[->] (A-2-1) -- (A-2-2);
\draw[->] (A-3-1) -- (A-3-2);
\draw[->] (A-3-1) -- (A-4-2);
\draw[->] (A-5-1) -- (A-5-2);
\end{tikzpicture}
\end{document}