如何在 LaTeX 中绘制以下图片,
我尝试使用下面的代码,但是它不起作用。
\begin{figure}[H]
\centering
\begin{tikzpicture}
\matrix[matrix of nodes,row sep=2em] (m)
{
$N$: & 1 & 2 & 3 & 4 &\ldots &n-1 &n \\
$N'$:& 2 & 3 & 4 & 5 &\ldots &n & n+1 \\
};
\foreach \y in {1,2,3,4,n-1,n} {
\foreach \x in {2,3,4,5,n,n+1} {
\draw[<->] (m-\y-\x) -- (m-2-\x);
}
}
\end{tikzpicture}
\captionsetup{labelformat=empty}
\caption{\label{fig:f4}Figure 1.4}
\end{figure}
答案1
TikZ 不会根据节点的内容来命名节点,因此您不能将节点称为 1、2、3、4、5、n、n+1。相反,您必须根据它们的位置来引用它们,因此您需要第 2、3、4(等等)个节点。您也只需要遍历列,因为您对每一列只做一件事,而不是对每行做任何事情。
\documentclass{article}
%\url{http://tex.stackexchange.com/q/303682/86}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}
\begin{tikzpicture}
\matrix[matrix of math nodes,row sep=1cm,column sep=.5cm] (m)
{
N: & 1 & 2 & 3 & 4 &\ldots &n-1 &n \\
N':& 2 & 3 & 4 & 5 &\ldots &n & n+1 \\
};
\foreach \x in {2,3,4,5,7,8} {
\draw[<->] (m-1-\x) -- (m-2-\x);
}
\end{tikzpicture}
\end{document}
由于所有节点实际上都是数学,因此您可以使用matrix of math nodes
。我还将列稍微隔开了一点。
(我撒了点谎。你能让 TikZ 随意命名节点。不过,在这种情况下,我认为使用位置是一种最简单的命名方案。)
答案2
表格的单元格应该用行号和列号进行编号,这是一个解决方案
请注意,你的源无法编译,下次,建议一个最小可编译源
\documentclass[10pt]{article}
\usepackage{tikz}
\usetikzlibrary{decorations, positioning, intersections, calc,matrix}%
\usepackage{amsmath,amssymb}
\usepackage{bodegraph}
%\usepackage{align}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}
\matrix[matrix of nodes,row sep=2em] (m)
{
$N$: & 1 & 2 & 3 & 4 &\ldots &n-1 &n \\
$N'$:& 2 & 3 & 4 & 5 &\ldots &n & n+1 \\
};
\foreach \y in {2,3,4,...,8} {
\draw[<->] (m-1-\y) -- (m-2-\y);
}
\end{tikzpicture}
\caption{\label{fig:f4}Figure 1.4}
\end{figure}
\end{document}