Cuadro alrededor de los nodos para tener en cuenta la etiqueta de cada nodo tikzpicture

Cuadro alrededor de los nodos para tener en cuenta la etiqueta de cada nodo tikzpicture

El problema

Estoy dibujando cuadros fuera de los nodos etiquetados y los cuadros no tienen en cuenta las etiquetas sobre los nodos internos.

Aquí está el MWE de mi documento:

\documentclass[10pt]{article}
\ExpandArgs{c}\newcommand{new@fontshape}{anything}

\usepackage[russian,indonesian]{babel}
\usepackage{newtx}

\usepackage{linguex}
\usepackage[none]{hyphenat}
\usepackage{geometry}
\usepackage{setspace}
\usepackage{booktabs}
\usepackage{tikz}
\usepackage{tikz-qtree}
\usepackage{gb4e}
\usepackage{adjustbox}

\usetikzlibrary{shapes.geometric, arrows, chains, decorations.pathreplacing, positioning, fit}

\AtBeginDocument{%
  \DeclareFontFamilySubstitution{T2A}{\familydefault}{Tempora-TLF}%
}

\primebars
\let\emptyset\varnothing

\geometry{
 a4paper,
 margin=3cm
 }

\newcommand{\?}[1]{\foreignlanguage{russian}{#1}}
\noautomath


\begin{document}

\vspace{5mm}
\section*{Hubungan sintaksis}
\vspace{5mm}

\tikzstyle{startstop} = [rectangle, rounded corners, minimum width=3cm, minimum height=2.5cm, text centered, draw=black, text width=3cm]
\tikzstyle{io} = [trapezium, trapezium left angle=70, trapezium right angle=110, minimum width=3cm, minimum height=1cm, text centered, draw=black, fill=blue!30]
\tikzstyle{process} = [rectangle, minimum width=1cm, minimum height=1cm, text centered, draw=black, text width=2.5cm]
\tikzstyle{decision} = [diamond, minimum width=3cm, minimum height=1cm, text centered, draw=black, fill=green!30]
\tikzstyle{arrow} = [thick,->,>=stealth]
\tikzstyle{line} = [draw, -latex']

\def\layersep{2.5cm}
\begin{adjustbox}{width=\textwidth}
\begin{tikzpicture}[node distance=4cm, box/.style = {draw,black,inner sep=10pt,rounded corners=5pt}]
  \node (kr) [process, label=above:{Agen}] {Kerusiaan};
  \node (bn) [process, right of=kr, label=above:{Sasaran}] {Binan};

  \path [line] (kr) -- node [text width=2.5cm,midway,above,align=center ] {Aksi} (bn);

  \node[box,fit=(kr)(bn)] {};

\end{tikzpicture}\hspace{1cm}%
\begin{tikzpicture}[node distance=4cm, box/.style = {draw,black,inner sep=10pt,rounded corners=5pt}]
  \node (kr) [process, label=above:{Agen}] {Binan};
  \node (bn) [process, right of=kr, label=above:{Sasaran}] {Non-kerusiaan};

  \path [line] (kr) -- node [text width=2.5cm,midway,above,align=center ] {Aksi} (bn);

  \node[box,fit=(kr)(bn)] {};

\end{tikzpicture}\hspace{1cm}%
\begin{tikzpicture}[node distance=4cm, box/.style = {draw,black,inner sep=10pt,rounded corners=5pt}]
  \node (kr) [process, label=above:{Agen}] {Binan};
  \node (bn) [process, right of=kr, label=above:{Sasaran}] {Kerusiaan};

  \path [line] (kr) -- node [text width=2.5cm,midway,above,align=center ] {Aksi} (bn);

  \node[box,fit=(kr)(bn)] {};

\end{tikzpicture}
\end{adjustbox}

\end{document}

Aquí está la composición tipográfica del código: ingrese la descripción de la imagen aquí

El cuadro simplemente ignora que las etiquetas son parte de cada nodo; simplemente lo atraviesa y no deja espacio encima de las etiquetas.

Quiero que los cuadros no pasen por las etiquetas, con textos agregados encima de ellas. Aproximadamente así:

ingrese la descripción de la imagen aquí

¿Cómo puedo mejorar mi código?


Lo que he hecho hasta ahora

Sé que puedo cambiar el sepin {draw,black,inner sep=10pt,rounded corners=5pt}, pero crea espacios desiguales entre el espacio del cuadro superior e inferior:

\documentclass[10pt]{article}
\ExpandArgs{c}\newcommand{new@fontshape}{anything}

\usepackage[russian,indonesian]{babel}
\usepackage{newtx}

\usepackage{linguex}
\usepackage[none]{hyphenat}
\usepackage{geometry}
\usepackage{setspace}
\usepackage{booktabs}
\usepackage{tikz}
\usepackage{tikz-qtree}
\usepackage{gb4e}
\usepackage{adjustbox}

\usetikzlibrary{shapes.geometric, arrows, chains, decorations.pathreplacing, positioning, fit}

\AtBeginDocument{%
  \DeclareFontFamilySubstitution{T2A}{\familydefault}{Tempora-TLF}%
}

\primebars
\let\emptyset\varnothing

\geometry{
 a4paper,
 margin=3cm
 }

\newcommand{\?}[1]{\foreignlanguage{russian}{#1}}
\noautomath


\begin{document}

\vspace{5mm}
\section*{Hubungan sintaksis}
\vspace{5mm}

\tikzstyle{startstop} = [rectangle, rounded corners, minimum width=3cm, minimum height=2.5cm, text centered, draw=black, text width=3cm]
\tikzstyle{io} = [trapezium, trapezium left angle=70, trapezium right angle=110, minimum width=3cm, minimum height=1cm, text centered, draw=black, fill=blue!30]
\tikzstyle{process} = [rectangle, minimum width=1cm, minimum height=1cm, text centered, draw=black, text width=2.5cm]
\tikzstyle{decision} = [diamond, minimum width=3cm, minimum height=1cm, text centered, draw=black, fill=green!30]
\tikzstyle{arrow} = [thick,->,>=stealth]
\tikzstyle{line} = [draw, -latex']

\def\layersep{2.5cm}
\begin{adjustbox}{width=\textwidth}
\begin{tikzpicture}[node distance=4cm, box/.style = {draw,black,inner sep=18pt,rounded corners=5pt}]
  \node (kr) [process, label=above:{Agen}] {Kerusiaan};
  \node (bn) [process, right of=kr, label=above:{Sasaran}] {Binan};

  \path [line] (kr) -- node [text width=2.5cm,midway,above,align=center ] {Aksi} (bn);

  \node[box,fit=(kr)(bn)] {};

\end{tikzpicture}\hspace{1cm}%
\begin{tikzpicture}[node distance=4cm, box/.style = {draw,black,inner sep=18pt,rounded corners=5pt}]
  \node (kr) [process, label=above:{Agen}] {Binan};
  \node (bn) [process, right of=kr, label=above:{Sasaran}] {Non-kerusiaan};

  \path [line] (kr) -- node [text width=2.5cm,midway,above,align=center ] {Aksi} (bn);

  \node[box,fit=(kr)(bn)] {};

\end{tikzpicture}\hspace{1cm}%
\begin{tikzpicture}[node distance=4cm, box/.style = {draw,black,inner sep=18pt,rounded corners=5pt}]
  \node (kr) [process, label=above:{Agen}] {Binan};
  \node (bn) [process, right of=kr, label=above:{Sasaran}] {Kerusiaan};

  \path [line] (kr) -- node [text width=2.5cm,midway,above,align=center ] {Aksi} (bn);

  \node[box,fit=(kr)(bn)] {};

\end{tikzpicture}
\end{adjustbox}

\end{document}

ingrese la descripción de la imagen aquí

Lo quiero para que el espacio entre el cuadro superior de las etiquetas y el cuadro inferior de la parte inferior de los nodos sea igual. Con textos agregados encima del cuadro exterior. ¿Qué tengo que hacer?

Respuesta1

Lo hice funcionar a través de este código:

\documentclass[10pt]{article}
\ExpandArgs{c}\newcommand{new@fontshape}{anything}

\usepackage[russian,indonesian]{babel}
\usepackage{newtx}

\usepackage{linguex}
\usepackage[none]{hyphenat}
\usepackage{geometry}
\usepackage{setspace}
\usepackage{booktabs}
\usepackage{tikz}
\usepackage{tikz-qtree}
\usepackage{gb4e}
\usepackage{adjustbox}

\usetikzlibrary{shapes.geometric, arrows, chains, decorations.pathreplacing, positioning, fit}

\AtBeginDocument{%
  \DeclareFontFamilySubstitution{T2A}{\familydefault}{Tempora-TLF}%
}

\primebars
\let\emptyset\varnothing

\geometry{
 a4paper,
 margin=3cm
 }

\newcommand{\?}[1]{\foreignlanguage{russian}{#1}}
\noautomath


\begin{document}

\vspace{5mm}
\section*{Hubungan sintaksis}
\vspace{5mm}

\tikzstyle{startstop} = [rectangle, rounded corners, minimum width=3cm, minimum height=2.5cm, text centered, draw=black, text width=3cm]
\tikzstyle{io} = [trapezium, trapezium left angle=70, trapezium right angle=110, minimum width=3cm, minimum height=1cm, text centered, draw=black, fill=blue!30]
\tikzstyle{process} = [rectangle, minimum width=1cm, minimum height=1cm, text centered, draw=black, text width=2.5cm]
\tikzstyle{decision} = [diamond, minimum width=3cm, minimum height=1cm, text centered, draw=black, fill=green!30]
\tikzstyle{arrow} = [thick,->,>=stealth]
\tikzstyle{line} = [draw, -latex']

\def\layersep{2.5cm}
\begin{adjustbox}{width=\textwidth}
\begin{tikzpicture}[node distance=4cm, box/.style = {draw,black,inner sep=5pt,rounded corners=5pt}]
  \node (kr) [process, fill=gray!15,thin,rounded corners] {Kerusiaan};
  \node (bn) [process, fill=gray!60,thin,rounded corners, right of=kr] {Binan};
  \node (n1) [inner sep=0pt,draw=none,above=2pt of kr] {Agen};
  \node (n2) [inner sep=0pt,draw=none,above=3.5pt of bn] {Sasaran};

  \path [line] (kr) -- node [text width=2.5cm,midway,above,align=center] {Aksi} (bn);
  \path (kr) -- node[midway,draw=none,inner sep=2pt, above=12.5mm] {teks} (bn);

  \node[box,fit=(kr)(bn)(n1)(n2)] {};

\end{tikzpicture}\hspace{1cm}%
\begin{tikzpicture}[node distance=4cm, box/.style = {draw,black,inner sep=5pt,rounded corners=5pt}]
  \node (kr) [process, fill=gray!60,thin,rounded corners] {Binan};
  \node (bn) [process, fill=gray!5,draw,dashed, right of=kr] {Non-kerusiaan};
  \node (n1) [inner sep=0pt,draw=none,above=2pt of kr] {Agen};
  \node (n2) [inner sep=0pt,draw=none,above=3.5pt of bn] {Sasaran};

  \path [line] (kr) -- node [text width=2.5cm,midway,above,align=center ] {Aksi} (bn);
  \path (kr) -- node[midway,draw=none,inner sep=2pt, above=12.5mm] {teks} (bn);

  \node[box,fit=(kr)(bn)(n1)(n2)] {};

\end{tikzpicture}\hspace{1cm}%
\begin{tikzpicture}[node distance=4cm, box/.style = {draw,black,inner sep=5pt,rounded corners=5pt}]
  \node (kr) [process, fill=gray!60,thin,rounded corners] {Binan};
  \node (bn) [process, fill=gray!15,thin,rounded corners, right of=kr] {Kerusiaan};
  \node (n1) [inner sep=0pt,draw=none,above=2pt of kr] {Agen};
  \node (n2) [inner sep=0pt,draw=none,above=3.5pt of bn] {Sasaran};

  \path [line] (kr) -- node [text width=2.5cm,midway,above,align=center ] {Aksi} (bn);
  \path (kr) -- node[midway,draw=none,inner sep=2pt, above=12.5mm] {teks} (bn);

  \node[box,fit=(kr)(bn)(n1)(n2)] {};

\end{tikzpicture}
\end{adjustbox}

\end{document}

Resultando en esto: ingrese la descripción de la imagen aquí

¡Otras sugerencias son bienvenidas!

Respuesta2

En lugar de crear tres tikzpictureentornos, creo solo uno en el que cada una de tus 3 figuras está en un scopeentorno, lo que te permite posicionarlas con precisión entre sí.

Luego nombro cada etiqueta Agentan pronto como está definida.

\documentclass[10pt]{article}
\ExpandArgs{c}\newcommand{new@fontshape}{anything}

\usepackage[russian,indonesian]{babel}
\usepackage{newtx}

\usepackage{linguex}
\usepackage[none]{hyphenat}
\usepackage{geometry}
\usepackage{setspace}
\usepackage{booktabs}
\usepackage{tikz}
\usepackage{tikz-qtree}
\usepackage{gb4e}
\usepackage{adjustbox}

\usetikzlibrary{shapes.geometric, arrows, chains, decorations.pathreplacing, positioning, fit}

\AtBeginDocument{%
  \DeclareFontFamilySubstitution{T2A}{\familydefault}{Tempora-TLF}%
}

\primebars
\let\emptyset\varnothing

\geometry{
 a4paper,
 margin=3cm
 }

\newcommand{\?}[1]{\foreignlanguage{russian}{#1}}
\noautomath


\begin{document}

\vspace{5mm}
\section*{Hubungan sintaksis}
\vspace{5mm}

\tikzstyle{startstop} = [rectangle, rounded corners, minimum width=3cm, minimum height=2.5cm, text centered, draw=black, text width=3cm]
\tikzstyle{io} = [trapezium, trapezium left angle=70, trapezium right angle=110, minimum width=3cm, minimum height=1cm, text centered, draw=black, fill=blue!30]
\tikzstyle{process} = [rectangle, minimum width=1cm, minimum height=1cm, text centered, draw=black, text width=2.5cm]
\tikzstyle{decision} = [diamond, minimum width=3cm, minimum height=1cm, text centered, draw=black, fill=green!30]
\tikzstyle{arrow} = [thick,->,>=stealth]
\tikzstyle{line} = [draw, -latex']

\def\layersep{2.5cm}
\begin{adjustbox}{width=\textwidth}
\begin{tikzpicture}[node distance=4cm, box/.style = {draw,black,inner sep=5pt,rounded corners=5pt}]
  \node (kr) [process, label={[name=label 1]above:Agen}] {Kerusiaan};
  \node (bn) [process, right of=kr, label=above:Sasaran] {Binan};

  \path [line] (kr) -- node [text width=2.5cm,midway,above,align=center ] {Aksi} (bn);

  \node[fit=(bn)(label 1),inner sep=0pt] (fit 1){};
  \node[box,fit=(kr)(fit 1)] {};
    
\begin{scope}[xshift=8cm]
  \node (kr) [process, label={[name=label 2]above:Agen}] {Binan};
  \node (bn) [process, right of=kr, label=above:{Sasaran}] {Non-kerusiaan};

  \path [line] (kr) -- node [text width=2.5cm,midway,above,align=center ] {Aksi} (bn);
  \node[fit=(bn)(label 2),inner sep=0pt] (fit 2){};
  \node[box,fit=(kr)(fit 2)] {};
\end{scope}

\begin{scope}[xshift=16cm]
  \node (kr) [process, label={[name=label 3]above:Agen}] {Binan};
  \node (bn) [process, right of=kr, label=above:{Sasaran}] {Kerusiaan};

  \path [line] (kr) -- node [text width=2.5cm,midway,above,align=center ] {Aksi} (bn);
  \node[fit=(bn)(label 3),inner sep=0pt] (fit 3){};
  \node[box,fit=(kr)(fit 3)] {};
\end{scope}
\end{tikzpicture}
\end{adjustbox}

\end{document}

ingrese la descripción de la imagen aquí

información relacionada