ajustar el texto en el entorno detallado en un nodo tikz

ajustar el texto en el entorno detallado en un nodo tikz

Estoy intentando alinear el texto de los elementos en el entorno itemize en los nodos tikz. También intenté usar el topseppará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 depthpara alinear el texto en la parte superior. Agregué text depth=1.9cmal textboxestilo.

ingrese la descripción de la imagen aquí

\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 tcolorboxpaquete 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}

ingrese la descripción de la imagen aquí

Nota, tcolorboxse puede insertar en el tikznodo 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=#1y tcbitemizemejorarlas, superponerlas y cambiarlas \tcbitem[title<0...]a \tcbitem[title=..., remeber as=<name>].

información relacionada