
пгф/тикз: Я пытаюсь создать шестиугольник с фиксированной высотой. Используя скошенный прямоугольник. Я могу превратить прямоугольник в шестиугольник, но когда я пытаюсь применить опцию минимальной высоты, это, кажется, мешает настройке xsep.
Кто-нибудь знает, как это обойти?
Вот макрос, который я пытаюсь сделать.
\documentclass[a4paper, 12pt]{report}
\usepackage{tikz}
\usetikzlibrary{arrows}
\usetikzlibrary{shapes.geometric}
\usetikzlibrary{shapes.symbols}
\usetikzlibrary{shapes.multipart}
\usetikzlibrary{shapes.misc}
\usetikzlibrary{shapes.arrows}
\usetikzlibrary{positioning}
\usetikzlibrary{matrix}
\newcommand{\Task}[2]{|[chamfered rectangle, chamfered rectangle angle=50, thick, draw, text centered, text width=1.5cm, minimum width=3cm, minimum height=1.3cm, chamfered rectangle xsep=5cm, scale=0.5](#1)|{#2}}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}
\matrix (grlplay) [matrix of nodes, row sep = 0mm] %grlFlow-row-column
{
&\Task{label}{name} & \\
};
\end{tikzpicture}
\end{figure}
\end{document}
Спасибо.
решение1
Если я правильно понимаю, что вам нужно в качестве окончательной формы, то это проще получить с помощью signal
формы, чем с помощью chamfered rectangle
. Это обеспечивает шестиугольник, независимый от желаемой высоты текста:
Для рисунка выше я расширяю вашу матрицу и изменяю способ определения ее ячеек:
\documentclass[a4paper, 12pt]{report}
\usepackage{tikz}
\usetikzlibrary{arrows,matrix,shapes.symbols}
% for show only figure
\usepackage[active,floats,tightpage]{preview}
\setlength\PreviewBorder{1em}
\begin{document}
\begin{figure}[h]
\centering
\begin{tikzpicture}[
task/.style = {signal, draw, thick,
signal to=west and east,
text width=22mm, minimum height=9mm, align=center}
]
\matrix (grlplay) [matrix of nodes, row sep = 1mm] %grlFlow-row-column
{
left & \node[task] {name}; & right \\
left & \node[task] {name}; & right \\
};
%\draw[red,->] (grlplay-1-1) -- (grlplay-1-3);
\end{tikzpicture}
\end{figure}
\end{document}