
Я пытаюсь перевести графику в книге, и мне нужно соединить несколько прямоугольников, чтобы сделать это. Вот что у меня есть на данный момент:
Как вы видите, положение стрелки выглядит не очень приятно, поскольку стрелки не соединяются с краями прямоугольников. Код, который сгенерировал эту графику:
\begin{tikzpicture}
\draw [rounded corners, fill=lightgray] (3,0) rectangle (6,-1) node (1) [pos=.5] {\textit{Output} gráfico} ;
\draw [rounded corners, fill=lightgray] (3,-2.5) rectangle (6,-3.5) node (2) [pos=.5] {\textit{Game Manager}};
\draw [rounded corners, fill=lightgray] (3,-5) rectangle (6,-6) node (3) [pos=.5] {Jogador};
\draw (-0.5,-1) rectangle (2,-2.5) node (4) [pos=.5, align=center] {Descrições de \\ jogos};
\draw (-0.5,-3) rectangle (2,-4.5) node (5) [pos=.5, align=center] {Registro de \\ partidas};
\draw (7,-2.5) rectangle (9,-3.5) node (6) [pos=.5, align=center] {Registro de \\ partidas};
\draw[black, thick, ->] (2) -- (1.south);
\end{tikzpicture}
Я думаю, что было бы лучше сделать это с узлами, поскольку узлы соединяются с границами, но я не могу заставить узлы выглядеть как прямоугольники на картинке выше. Они маленькие и не имеют границ. Вот пример:
И код, сгенерировавший график выше:
\begin{tikzpicture}
\node [ rounded corners, fill=lightgray] at (4.5,0) (1) {\textit{Output} gráfico};
\end{tikzpicture}
Итак, мои вопросы: как соединить два прямоугольника стрелками, которые начинаются и заканчиваются на краях? Если это невозможно, как можно сгенерировать более крупные узлы с видимыми границами (но размер шрифта останется прежним)?
решение1
Сейчас у меня нет времени переделывать весь MWE, но первый прямоугольник можно заменить на:
\node (1) [rounded corners, draw, fill=lightgray,minimum width=3cm,minimum height=1cm]
at (4.5,-.5) {\textit{Output} gr\'afico} ;
решение2
Используйте ключи minimum height
и minimum width
для размера узлов, и используйте библиотеку positioning
для их размещения. Затем используйте стили для каждого типа узла.
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}
\begin{document}
\begin{tikzpicture}[node distance=15 mm and 15 mm,
every node/.style={draw},
central/.style={fill=lightgray,rounded corners,minimum
width=3cm,minimum height=1cm},
other/.style={text width=2.2 cm,text centered,minimum
width=2.5cm,,minimum height=1.5cm}]
\node[central] (output){\textit{Output} gr\'afico};
\node[central] (manager) [below=of output] {\textit{Game Manager}};
\node[central] (jogador) [below=of manager] {Jogador};
\node[text width= 2cm,text centered] [right=of manager] {Registro de \\ partidas};
\node[other,yshift=-1cm] [left=of manager]{Registro de \\ partidas};
\node[other,yshift=1.2cm] [left=of manager]{Descri\c c\=oes de \\ jogos};
\draw[->] (manager)--(output);
\end{tikzpicture}
\end{document}