
Estoy intentando alinear el texto de los elementos en el entorno itemize en los nodos tikz. También intenté usar el topsep
parámetro pero no funcionó como pensaba. El texto debe estar en la parte superior de los cuadros de texto en cada cuadro de texto para que todos los elementos estén en la misma línea de base. Quizás haya una buena solución para alinearlo en la parte superior, central o inferior del nodo tikz.
Aquí está el código
\documentclass[tikz, class=scrreprt, fontsize=10pt]{standalone}
\usepackage[T1]{fontenc}
\usepackage[lf, p, sflf, sfp]{libertine}
\usepackage{enumitem}
\usetikzlibrary{shapes, arrows.meta, positioning, calc, decorations.pathreplacing, calligraphy, intersections, backgrounds}
\tikzset{every picture/.style={/utils/exec={\sffamily\normalsize}}}
\definecolor{orange}{RGB}{252,141,89} % orange
\definecolor{yellow}{RGB}{253,204,138} % gelb
\definecolor{light}{RGB}{254,240,217} % hellgelb
\tikzstyle{framebox} = [rectangle, minimum width = 20cm, minimum height = 1cm, draw = black, fill = orange]
\tikzstyle{renderbox} = [rectangle, minimum width = 4cm, minimum height = 2cm, draw = black]
\tikzstyle{textbox} = [rectangle, minimum width = 4cm, minimum height = 2cm, draw = black, fill = light, text width = 3.8cm]
\tikzstyle{titlebox} = [rectangle, minimum height = 1cm]
\tikzstyle{subtitlebox} = [rectangle, minimum width = 4cm, minimum height = 0.5cm, draw = black, fill = yellow]
\setlist[itemize]{itemsep = -0.3em, topsep = 0em, wide = 0.1em, labelwidth = 0em, label = \small{$\bullet$}}
\begin{document}
\begin{tikzpicture}[node distance = 0cm and 3cm, outer sep = 0, inner sep = 0cm, rounded corners = 1pt, line width = 1pt, align = center]
\node [framebox, minimum width = 14cm, minimum height = 5cm] (subjektivbox) {};
\node [titlebox, below = 0cm of subjektivbox.north, minimum width = 14cm] (subjektivtitel) {\raisebox{-9pt}{\textbf{subjektive Messverfahren}}};
\node [renderbox, below right = 0cm and 0.5cm of subjektivtitel.south west] (renderbox1) {};
\node [renderbox, below = 0cm of subjektivtitel.south] (renderbox2) {};
\node [renderbox, below left = 0cm and 0.5cm of subjektivtitel.south east] (renderbox3) {};
\node [subtitlebox, below = 0cm of renderbox1.north] (merkmal) {\textbf{merkmalsorientiert}};
\node [subtitlebox, below = 0cm of renderbox2.north] (ereignis) {\raisebox{-9pt}{\textbf{ereignisorientiert}}};
\node [subtitlebox, below = 0cm of renderbox3.north] (problem) {\raisebox{-9pt}{\textbf{problemorientiert}}};
\node [textbox, below = 0cm of merkmal] () {
\begin{itemize}
\item Kundenbefragungen
\item Multiattribut
\item Dekompositionell
\end{itemize}};
\node [textbox, below = 0cm of ereignis] () {
\begin{itemize}
\item Sequenzielle Ereignisse
\item Critical Incidents
\end{itemize}};
\node [textbox, below = 0cm of problem] () {
\begin{itemize}
\item Problem Detecting
\item Frequenz-Relevanz
\end{itemize}};
\end{tikzpicture}
\end{document}
Respuesta1
Puede trabajar text depth
para alinear el texto en la parte superior. Agregué text depth=1.9cm
al textbox
estilo.
\documentclass[tikz, class=scrreprt, fontsize=10pt]{standalone}
\usepackage[T1]{fontenc}
\usepackage[lf, p, sflf, sfp]{libertine}
\usepackage{enumitem}
\usetikzlibrary{shapes, arrows.meta, positioning, calc, decorations.pathreplacing, calligraphy, intersections, backgrounds}
\tikzset{every picture/.style={/utils/exec={\sffamily\normalsize}}}
\definecolor{orange}{RGB}{252,141,89} % orange
\definecolor{yellow}{RGB}{253,204,138} % gelb
\definecolor{light}{RGB}{254,240,217} % hellgelb
\tikzstyle{framebox} = [rectangle, minimum width = 20cm, minimum height = 1cm, draw = black, fill = orange]
\tikzstyle{renderbox} = [rectangle, minimum width = 4cm, minimum height = 2cm, draw = black]
\tikzstyle{textbox} = [rectangle, minimum width = 4cm, minimum height = 2cm, draw = black, fill = light, text width = 3.8cm,text depth=1.9cm]
\tikzstyle{titlebox} = [rectangle, minimum height = 1cm]
\tikzstyle{subtitlebox} = [rectangle, minimum width = 4cm, minimum height = 0.5cm, draw = black, fill = yellow]
\setlist[itemize]{itemsep = -0.3em, topsep = 0em, wide = 0.1em, labelwidth = 0em, label = \small{$\bullet$}}
\begin{document}
\begin{tikzpicture}[node distance = 0cm and 3cm, outer sep = 0, inner sep = 0cm, rounded corners = 1pt, line width = 1pt, align = center]
\node [framebox, minimum width = 14cm, minimum height = 5cm] (subjektivbox) {};
\node [titlebox, below = 0cm of subjektivbox.north, minimum width = 14cm] (subjektivtitel) {\raisebox{-9pt}{\textbf{subjektive Messverfahren}}};
\node [renderbox, below right = 0cm and 0.5cm of subjektivtitel.south west] (renderbox1) {};
\node [renderbox, below = 0cm of subjektivtitel.south] (renderbox2) {};
\node [renderbox, below left = 0cm and 0.5cm of subjektivtitel.south east] (renderbox3) {};
\node [subtitlebox, below = 0cm of renderbox1.north] (merkmal) {\textbf{merkmalsorientiert}};
\node [subtitlebox, below = 0cm of renderbox2.north] (ereignis) {\raisebox{-9pt}{\textbf{ereignisorientiert}}};
\node [subtitlebox, below = 0cm of renderbox3.north] (problem) {\raisebox{-9pt}{\textbf{problemorientiert}}};
\node [textbox, below = 0cm of merkmal] () {
\begin{itemize}
\item Kundenbefragungen
\item Multiattribut
\item Dekompositionell
\end{itemize}};
\node [textbox, below = 0cm of ereignis] () {
\begin{itemize}
\item Sequenzielle Ereignisse
\item Critical Incidents
\end{itemize}};
\node [textbox, below = 0cm of problem] () {
\begin{itemize}
\item Problem Detecting
\item Frequenz-Relevanz
\end{itemize}};
\end{tikzpicture}
\end{document}
Respuesta2
Si su preocupación es solo cómo dibujar boxbox, el tcolorbox
paquete ofrece un código simple y más corto como pure tikz
, que también se puede usar en tikzpicture
:
\documentclass[border=3.141592, class=scrreprt]{standalone}
\usepackage[T1]{fontenc}
\usepackage[lf, p, sflf, sfp]{libertine}
\usepackage{enumitem}
\usepackage{etoolbox}
\AtBeginEnvironment{tcolorbox}{%
\setlist[itemize]{nosep,
leftmargin=*,
label=\textbullet,
before=\begin{minipage}[t]{\linewidth}, % <---
after=\end{minipage}} % <---
}
\usepackage[most]{tcolorbox}
\tcbuselibrary{raster}
\newtcolorbox{OuterBox}{colback=orange!80, colframe=black,
sharp corners,
halign=center,
}
\begin{document}
\begin{OuterBox}
\textbf{Subjektive Messverfahren}\par\medskip%
\begin{tcbitemize}[%
raster columns=3,
raster equal height,
before=, after=\hfill,
left=0pt,right=0mm,top=1mm,bottom=1mm,
sharp corners,
colframe=black, colback=yellow!30, colbacktitle=orange!40,
coltitle=black, fonttitle=\bfseries, center title,
after title=\vphantom{bg},
halign=left]
\tcbitem[title=merkmalsorientiert]
\begin{itemize}
\item Kundenbefragungen
\item Multiattribut
\item Dekompositionell
\end{itemize}
%
\tcbitem[title=ereignisorientiert]
\begin{itemize}
\item Sequenzielle Ereignisse
\item Critical Incidents
\end{itemize}
%
\tcbitem[title=problemorientiert]
\begin{itemize}
\item Problem Detecting
\item Frequenz-Relevanz
\end{itemize}
\end{tcbitemize}
\end{OuterBox}
\end{document}
Nota, tcolorbox
se puede insertar en el tikz
nodo de la siguiente manera:
\node [inner sep=0pt] at (<coordinate>)
{\begin{OuterBox}
% box code as above
\end{OuterBox}
};
Si es necesario, también puede asignar nombres a todas las casillas. Para esto solo necesita agregar a las definiciones de OuterBox enhanced, remember as=#1
y tcbitemize
mejorarlas, superponerlas y cambiarlas \tcbitem[title<0...]
a \tcbitem[title=..., remeber as=<name>]
.