我必须标记以下立体(立方体)的顶点,以便标签不与立体的边界重叠。
\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\foreach \n/\x/\l/\p in{
1/{( 0 , 0)}/{$x_1y_1z_1$}/below,
2/{( 4, 0)}/{$x_1y_2z_1$}/below,
3/{( .8, 1)}/{$x_1y_2z_2$}/right,
4/{( 4.8, 1)}/{$x_1y_1z_2$}/right,
5/{( 0, 4)}/{$x_2y_2z_1$}/above,
6/{( 4, 4)}/{$x_2y_1z_1$}/above,
7/{( 0.8, 4.8)}/{$x_2y_1z_2$}/above,
8/{( 4.8, 4.8)}/{$x_2y_2z_2$}/above
}
{
\node[inner sep=2pt,circle,draw,fill,label={\p:\l}] (\n) at \x {};
}
\draw (1) -- (2) -- (6) -- (5) -- (1);
\draw (5) -- (6) -- (8) -- (7) -- (5);
\draw (2) -- (4) -- (8) -- (6) -- (2);
\draw[dashed] (1) -- (3) -- (4);
\draw[dashed] (3) -- (7);
\end{tikzpicture}
\end{document}
答案1
贴上“不重叠边界”的标签可能是主观的。这样就足够了吗?
这是通过对代码进行以下小改动实现的:
\documentclass[border=5mm,tikz]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\foreach \n/\x/\l/\p in{
1/{( 0 , 0)}/{$x_1y_1z_1$}/below,
2/{( 4, 0)}/{$x_1y_2z_1$}/below,
3/{( .8, 1)}/{$x_1y_2z_2$}/south east,
4/{( 4.8, 1)}/{$x_1y_1z_2$}/right,
5/{( 0, 4)}/{$x_2y_2z_1$}/left,
6/{( 4, 4)}/{$x_2y_1z_1$}/south west,
7/{( 0.8, 4.8)}/{$x_2y_1z_2$}/above,
8/{( 4.8, 4.8)}/{$x_2y_2z_2$}/above
}
{
\node[inner sep=2pt,circle,draw,fill,label={\p:\l}] (\n) at \x {};
}
\draw (1) -- (2) -- (6) -- (5) -- (1);
\draw (5) -- (6) -- (8) -- (7) -- (5);
\draw (2) -- (4) -- (8) -- (6) -- (2);
\draw[dashed] (1) -- (3) -- (4);
\draw[dashed] (3) -- (7);
\end{tikzpicture}
\end{document}
\p
我只更改了循环中的部分值,在几个地方使用south east
和south west
,而above
不是below
。如果这不是您想要的,请提供有关您希望如何放置标签的更多详细信息。
顺便说一句,画一个蒂克兹立方体,如果你使用 3D 坐标。例如,代码
\documentclass[border=5mm,tikz]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw[thick](2,2,0)--(0,2,0)--(0,2,2)--(2,2,2)--(2,2,0)--(2,0,0)--(2,0,2)--(0,0,2)--(0,2,2);
\draw[thick](2,2,2)--(2,0,2);
\draw[gray](2,0,0)--(0,0,0)--(0,2,0);
\draw[gray](0,0,0)--(0,0,2);
\end{tikzpicture}
\end{document}
生产