我想实现这张图片。中间的标签是任意的,但东北角的标签是一个升序整数。我的 MWE 是我能做的最好的。
这是我的 MWE。
\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\foreach \i in {1,...,9}
{
\pgfmathtruncatemacro{\y}{(\i - 1) / 3};
\pgfmathtruncatemacro{\x}{\i - 3 * \y};
\pgfmathtruncatemacro{\label}{\x + 3 * (2 - \y)};
\node[circle,draw=black,fill=white!80!black,minimum size=20]
(\label) at (1.5*\x,1.5*\y) {\label};
}
\draw (1) -- (2);
\draw (2) -- (3);
\draw (4) -- (5);
\draw (5) -- (6);
\draw (7) -- (8);
\draw (8) -- (9);
\draw (1) -- (4);
\draw (2) -- (5);
\draw (3) -- (6);
\draw (4) -- (7);
\draw (5) -- (8);
\draw (6) -- (9);
\end{tikzpicture}
\end{document}
答案1
您可以调用\usetikzlibrary{positioning}
来指定放置标签的位置。在本例中,您希望它位于东北部,因此您可以将其指定为\node[above right=
<距离> of \label]
。我发现距离 0 看起来不错,但您可以根据需要进行调整。
\begin{tikzpicture}
\foreach \i in {1,...,9}
{
\pgfmathtruncatemacro{\y}{(\i - 1) / 3};
\pgfmathtruncatemacro{\x}{\i - 3 * \y};
\pgfmathtruncatemacro{\label}{\x + 3 * (2 - \y)};
\node[circle,draw=black,fill=white!80!black,minimum size=20]
(\label) at (1.5*\x,1.5*\y) {\label};
\node[above right=0mm of \label] {\scriptsize\label};
}