Saltar al contenido

Dibujar un diagrama de flujo complicado (diagrama) en látex

Investigamos en diferentes foros para así tenerte la respuesta para tu inquietud, en caso de alguna inquietud déjanos tu inquietud y te responderemos sin falta, porque estamos para servirte.

Solución:

Esto es solo para explicar mi comentario anterior. Como dije, necesitas tres capas, como en esta publicación. Indico los pasos en el código, donde están en ámbitos separados.

  1. Organiza los nodos que desea organizar con una matriz (o chains o simplemente posicionamiento).
  2. Encajas y llenas los nodos blancos en una capa que está detrás main, llamado background aquí.
  3. Encaja y rellena en gris estos nodos en una capa debajo, que se llama behind aquí.
documentclass[tikz,border=3pt]standalone
usetikzlibrarypositioning,matrix,fit,calc
pgfdeclarelayerbehind
pgfdeclarelayerbackground
pgfdeclarelayerforeground
pgfsetlayersbehind,background,main,foreground
begindocument
begintikzpicture[T/.style=text width=10em,node font=bfseries,
 A/.style=align=center,B/.style=A,draw,C/.style=text width=10em,align=right,
 L/.style=node font=tiny,text=blue,
 F/.style=draw,dashed,fill=white,font=sffamily]
 matrix[matrix of nodes,nodes=minimum width=10.3em] (mat) Data\[2em]
  ;
 foreach X in 6,7,10
  draw[-latex] (mat-X-1.south-
 draw[-latex] (mat-2-1.south-|mat.center) -- (L2.north-|mat.center);
 draw[-latex] (L2.south-|mat.center) -- 
 (mat-6-1.north-|mat.center);
 draw[-latex] (L2.south-|mat.center) -- 
 (mat-6-1.north-|mat.center);
 beginscope% step 2
  beginpgfonlayerbackground
   node[F,fit=(mat-1-1)(mat-2-1)](F1);
   node[F,fit=(mat-3-1)(mat-8-1)](F2);
   node[F,fit=(mat-9-1)(mat-13-1)](F3);
  endpgfonlayer
  draw[-latex] (F3.west) -| ++(-3em,4em) node[above] (Actions) Actions;
  draw[-latex] (Actions.north) |- (mat-3-1-|F2.west)
  node[pos=0.75,align=left,font=tiny,below]Control\ interaction;
  draw[-latex] (Actions.north) |- (F1.west)
  node[pos=0.75,align=left,font=tiny,above]Collection\ Selection;
  node[above left=2em and 3em of mat.north east,node font=bfseries](title)
  Typical Sonification Data Flow;
 endscope
 beginscope% step 3
  beginpgfonlayerbehind
   node[fit=(mat)(title),draw,fill=gray!20,inner sep=1ex];
  endpgfonlayer
 endscope
endtikzpicture
enddocument

ingrese la descripción de la imagen aquí

O con su clase de documento y la flecha que falta.

documentclass[12pt,oneside]book usepackagetikz
usetikzlibrarypositioning,matrix,fit,calc
pgfdeclarelayerbehind
pgfdeclarelayerbackground
pgfdeclarelayerforeground
pgfsetlayersbehind,background,main,foreground
begindocument
begintikzpicture[T/.style=text width=10em,node font=bfseries,
 A/.style=align=center,B/.style=A,draw,C/.style=text width=10em,align=right,
 L/.style=node font=tiny,text=blue,
 F/.style=draw,dashed,fill=white,font=sffamily]
 matrix[matrix of nodes,nodes=minimum width=10.3em] (mat) Domain\[2em]
  ;
 foreach X in 6,7,10
  mat.center) -- 
  (mat-thenumexprX+1relax-1.north-
 draw[-latex] (mat-2-1.south-|mat.center) -- (L2.north-|mat.center);
 draw[-latex] (L2.south-|mat.center) -- 
 (mat-6-1.north-|mat.center);
 draw[-latex] (L2.south-|mat.center) -- 
 (mat-6-1.north-|mat.center);
 draw[-latex] (mat-8-1.south-|mat.center) -- (mat-10-1.north-|mat.center);
 beginscope% step 2
  beginpgfonlayerbackground
   node[F,fit=(mat-1-1)(mat-2-1)](F1);
   node[F,fit=(mat-3-1)(mat-8-1)](F2);
   node[F,fit=(mat-9-1)(mat-13-1)](F3);
  endpgfonlayer
  draw[-latex] (F3.west) -| ++(-3em,8em) node[above] (Actions) Actions;
  draw[-latex] (Actions.north) |- (mat-3-1-|F2.west)
  node[pos=0.75,align=left,font=tiny,below]Control\ interaction;
  draw[-latex] (Actions.north) |- (F1.west)
  node[pos=0.75,align=left,font=tiny,above]Collection\ Selection;
  node[above left=2em and 3em of mat.north east,node font=bfseries](title)
  Typical Sonification Data Flow;
 endscope
 beginscope% step 3
  beginpgfonlayerbehind
   node[fit=(mat)(title),draw,fill=gray!20,inner sep=1ex];
  endpgfonlayer
 endscope
endtikzpicture
enddocument

ingrese la descripción de la imagen aquí

Editar
Como punto de partida (ampliado y simplificado desde la primera versión mi respuesta).

documentclass[12pt, tikz, margin=3mm]standalone
usetikzlibraryarrows.meta,
                backgrounds,
                chains,
                fit,
                positioning

begindocument
    begintikzpicture[
node distance = 3mm and 0mm,
  start chain = going below,
   arr/.style = thick, -Triangle[angle=60:3pt 2], semithick,
   box/.style = draw, dashed, fill=white,
                 minimum height=#1, text width=64mm,
                 inner sep=2mm, font=smallsffamily,,
 sound/.style = box, solid,
                 text width=36mm,  
                 on chain, join=by arr,
   lbl/.style = font=scriptsizesffamily, 
                 text=blue, align=right,
                 below left, anchor=north east,
   FIT/.style = draw, fill=gray!30, inner xsep=2mm, 
                 inner ysep=6mm, yshift=3mm,
                 fit=#1,      
 title/.style = font=smallbfseriessffamily, below right,
                 anchor=north west  
                        ]
node (f1) [box=24mm] ;
    node (f1a) Dibujar un diagrama de flujo complicado (diagrama) en látex
 at (f1.north west) DOMAIN;
    node (f2b) [lbl] at (f1.north east)
                Information generator;
    node (f1c) [above=of f1.south]        Data;
node (f2) [box=52mm, below=of f1] ;
    node (f2a) Dibujar un diagrama de flujo complicado (diagrama) en látex
 at (f2.north west) SONIFICATION;
    node (f2b) [lbl] at (f2.north east)
                Comunicaption Medium;
    node (f2c) [below left=of f2b.south -| f2.east,
                 anchor=north east, align=right]
                                        Task\ Model;
    node (f2d) [sound,
                 below=of f2c.south -| f2]    Sound Representation;
    node (f2e) [sound]                 Sound ...;
    node (f2f) [sound]                 Sound ...;  
node (f3) [box=38mm, below=of f2] ;
    node (f3a) Dibujar un diagrama de flujo complicado (diagrama) en látex
 at (f3.north west) USER;
    node (f3b) [lbl] at (f3.north east)
                Information receiver;
    node (f3c) [below=of f3a.south -| f3]  Ear;
    node (f3d) [below=of f3c]  Sound Perception (Brain);
    node (f3e) [above left, align=right] at (f3.south east) 
                    Musical Knowledge\
                     Acoustic Memory;
%%
draw[arr]  (f1c) -- (f2d);
draw[arr]  (f2f) -- (f3c);
draw[arr]  (f3c) -- (f3d);
    node   (act) [left=11mm of f2f -| f2.west] Action;
draw[arr]  (f3) -| (act);
draw[arr]  (act) |- (f2a -| f2.west) 
                node[lbl,text=black] Control\ Interraction; 
draw[arr]  (act |- f2a) |- (f1.west)
                node[lbl,text=black] Colection\ Selection;
%%%%
    scoped[on background layer]
node (f) [FIT=(f1) (act) (f3)] ;
    node Dibujar un diagrama de flujo complicado (diagrama) en látex
 at (f.north west) Typical Sonification Data Flow;
endtikzpicture
enddocument

El código de imagen es bastante elemental (excepto el uso de `cadenas para nodos de” sonido “en el módulo de Sonificación). Necesita un pequeño ajuste de la altura de los módulos, suficiente es un nivel de capa de fondo.

ingrese la descripción de la imagen aquí

Editar (2) el MWE ahora se adopta para 12pt tamaño de fuente. Han cambiado los anchos de la sound nodos y alturas del box nodos. Estos cambios son necesarios ya que el tamaño de las formas de los nodos está codificado de forma rígida y se adoptaron para 10pt tamaño de fuente. En su pregunta, nos informa que utiliza el tamaño de fuente predeterminado de article clase de documento, que es 10pt.

Editar (3) en el MWE son los milímetros reemplazados por em (en el código los cambios se indican mediante % <---). El tamaño de esta distancia depende del tamaño de fuente utilizado (como sugiere el gato de @ Schrödinger en su comentario a continuación). También se considera su pregunta de seguimiento acerca de centrar los contenidos de sound nodos:

documentclass[12pt,tikz, margin=3mm]standalone
usetikzlibraryarrows.meta,
                backgrounds,
                chains,
                fit,
                positioning

begindocument
    begintikzpicture[
node distance = 0.8em and 0em,   % <---
  start chain = going below,
   arr/.style = thick, -Triangle[angle=45:3pt 3], semithick,    % <---   
   box/.style = draw, dashed, fill=white,
                 minimum height=#1, text width=18em,    % <---
                 inner sep=2mm, font=smallsffamily,,
   lbl/.style = font=scriptsizesffamily, text=blue, align=right,
                 below left, anchor=north east,
   FIT/.style = draw, fill=gray!30, inner xsep=0.5em,  % <---
                 inner ysep=1em, yshift=0.5em,          % <---
                 fit=#1,
 sound/.style = box, solid, text width=9em,            % <---
                 align=center, on chain, join=by arr,
 title/.style = font=smallbfseriessffamily, 
                 below right, anchor=north west
                        ]
node (f1) [box=4em] ;    % <---
    node (f1a) Dibujar un diagrama de flujo complicado (diagrama) en látex
 at (f1.north west) DOMAIN;
    node (f2b) [lbl] at (f1.north east)
                Information generator;
    node (f1c) [above=of f1.south]        Data;
node (f2) [box=13em,       % <---
            below=of f1] ;
    node (f2a) Dibujar un diagrama de flujo complicado (diagrama) en látex
 at (f2.north west) SONIFICATION;
    node (f2b) [lbl] at (f2.north east)
                Comunicaption Medium;
    node (f2c) [below left=of f2b.south -| f2.east,
                 anchor=north east, align=right]
                                        Task\ Model;
    node (f2d) [sound,
                 below=of f2c.south -| f2]    Sound Representation;
    node (f2e) [sound]                 Sound ...;
    node (f2f) [sound]                 Sound ...;
node (f3) [box=9em,        % <---
            below=of f2] ;
    node (f3a) Dibujar un diagrama de flujo complicado (diagrama) en látex
 at (f3.north west) USER;
    node (f3b) [lbl] at (f3.north east)
                Information receiver;
    node (f3c) [below=of f3a.south -| f3]  Ear;
    node (f3d) [below=of f3c]  Sound Perception (Brain);
    node (f3e) [above left, align=right] at (f3.south east)
                    Musical Knowledge\
                     Acoustic Memory;
%%
draw[arr]  (f1c) -- (f2d);
draw[arr]  (f2f) -- (f3c);
draw[arr]  (f3c) -- (f3d);
    node   (act) [left=3em of f2f -| f2.west] Action;
draw[arr]  (f3) -| (act);
draw[arr]  (act) |- (f2a -| f2.west)
                node[lbl,text=black] Control\ Interraction;
draw[arr]  (act |- f2a) |- (f1.west)
                node[lbl,text=black] Colection\ Selection;
%%%%
    scoped[on background layer]
node (f) [FIT=(f1) (act) (f3)] ;
    node Dibujar un diagrama de flujo complicado (diagrama) en látex
 at (f.north west) Typical Sonification Data Flow;
endtikzpicture
enddocument

enddocument

El resultado es similar al anterior, pero esta vez el cambio de tamaño de fuente no cambiará el aspecto de la imagen. Solo se escalará de acuerdo con el tamaño de fuente utilizado. Puede probar esto reemplazando el tamaño de fuente usado 12pt con 11pt o 10pt`. Con esta imagen se volverá solo proporcionalmente más pequeña.

ingrese la descripción de la imagen aquí
(tamaño de fuente 12 pt)
ingrese la descripción de la imagen aquí
(tamaño de fuente 10pt)

valoraciones y comentarios

Nos puedes favorecer nuestro ensayo exponiendo un comentario y dejando una puntuación te estamos agradecidos.

¡Haz clic para puntuar esta entrada!
(Votos: 2 Promedio: 5)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *