
Хотите, чтобы следующие фигуры функционировали в TikZ?
\begin{tikzpicture}
\tikzstyle{every node}=[draw,shape=circle];
\draw (0,0) -- (0,1) node {1};
\draw (0,1) -- (1,1) node {2};
\draw (1,1) -- (1,0) node {3};
\draw (1,0) -- (0,0) node {4};
\end{tikzpicture}
\begin{tikzpicture}
\tikzstyle{every node}=[draw,shape=circle];
\draw (0,0) -- ++ (1,1) node {1};
\draw (1,1) -- ++ (1,-1) node {2};
\draw (0,0) -- ++ (2,0) node {3};
\end{tikzpicture}
решение1
Постарайтесь понять этот код, и вы будете знать, как нарисовать их все.
Начнем с определения координат.
\coordinate (1) at (0,0,2);
создает coordinate node
( node
без измерений) с именем 1
в точке (x,y,z)=(0,0,2)
. 2
означает 2cm
. Если вам нужно изменить некоторые конкретные единицы cm
на mm
, in
, ... Позже ссылка на точку (0,0,2) будет сделана с помощью (1)
. Нет необходимости запоминать ее конкретные координаты.
Во-вторых, разместите круги в каждой координате и добавьте к ним метки.
\fill (1) circle (1pt) node [below] {1};
нарисует и заполнит круг с радиусом 1pt
(1 точка) с центром в координате 1
. Под ним размещается узел с текстом 1
. Поскольку точки с 1 по 4 имеют метку снизу, а с 5 по 8 — сверху, можно использовать цикл foreach
.
Наконец, draw
линии между координатами:
\draw[dashed] (1)--(4)--(3) (4)--(8);
рисует dashed
линию от координаты 1 до 4 и 3. Затем помещает ручку на координату 4 и рисует еще одну линию до координаты 8.
Вы можете использовать nodes
( coordinates
являющиеся узлами) для позиционирования других узлов. JLDiaz объяснил в своих комментариях, как использовать calc
синтаксис (нужен \usetikzlibrary{calc} в преамбуле), чтобы сделать это:
\coordinate (17) at ($(1)!.5!(5)$);
определяет новую координату 17
для «точки на линии (1)-(5), которая находится на 50% расстояния от (1)» (!.5! означает, что 50%). После того, как вы определили координаты, 17
вы можете применить их снова \fill (17) circle (1pt) node [left] {17};
, чтобы нарисовать круг и метку.
Альтернативный синтаксис может быть таким:
\path (1) -- (5) coordinate[pos=0.5] (17);
что означает перемещение из 1
в 5
и pos=0.5
из этого пути, размещение координатного узла с именем 17. Этот синтаксис не использует calc
библиотеку.
В качестве упражнения: как вы думаете, что \coordinate (27) at ($(1)!.5!(7)$);
это значит?
Перед полным кодом небольшое предложение. Если вас пугает TiKZ
огромная документация, взгляните на некоторые из документов, рекомендованных в
Теперь полный код
\documentclass[tikz, border=2mm]{standalone}
\usetikzlibrary{calc}
\begin{document}
\begin{tikzpicture}
\coordinate (1) at (0,0,2);
\coordinate (2) at (2,0,2);
\coordinate (3) at (2,0,0);
\coordinate (4) at (0,0,0);
\coordinate (5) at (0,2,2);
\coordinate (6) at (2,2,2);
\coordinate (7) at (2,2,0);
\coordinate (8) at (0,2,0);
\coordinate (17) at ($(1)!.5!(5)$);
\coordinate (27) at ($(1)!.5!(7)$);
\foreach \i in {1,...,4}
\fill (\i) circle (1pt) node [below] {\i};
\foreach \i in {5,...,8}
\fill (\i) circle (1pt) node [above] {\i};
\fill (17) circle (1pt) node [left] {17};
\fill (27) circle (1pt) node [above] {27};
\draw (1) --(2) --(3) --(7) --(6)--(5)--(8)--(7);
\draw (1)--(5) (2)--(6);
\draw[dashed] (1)--(4) --(3) (4)--(8);
\end{tikzpicture}
\end{document}