es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo hacer una enumeración en un comando foreach junto con su posicionamiento en TikZ?

Estoy usando TikZ en LaTeX. Quiero hacer un foreach para enumerar texto en varias posiciones. Ejemplo;

Texto ‘Statement 1’ en la coordenada A;
Texto ‘Statement 2’ en la coordenada B;
Texto ‘Statement 3’ en la coordenada C;
Texto ‘Statement 4’ en la coordenada D;

Aquí está mi código

\documentclass[12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{tikz}
\usetikzlibrary{intersections, angles, quotes}
\usepackage{pgffor}
\usepackage{amsfonts}
\usepackage{amsmath}
\usepackage{amssymb}

\begin{document}
\begin{center}
\begin{tikzpicture}
\draw[very thick] (7,5) rectangle (11,6.5);
\coordinate (A) at (9,5.75);
\node at (A) {IF-CONDICIONAL};
\draw[very thick, ->] (9,5)–(9,3);
\foreach \s in {3, -2.5, -8, -13.5} \draw[very thick]
(9,\s)–(6,{\s-2})–(9,{\s-4})–(12,{\s-2})–cycle;
\node at (9,1) {Condition 1 (\textit{verdad?})};
\node at (9,-4.5) {Condition 2 (\textit{verdad?})};
\node at (9,-10){Condition … (\textit{verdad?})};
\node at (9,-15.5){Else (\textit{verdad?})};
\foreach \s in {-1, -6.5, -12} \draw[very thick, ->] (9,\s)–(9,{\s-1.5})
node[fill=white, midway]{NO};
\foreach \s in {1, -4.5, -10, -15.5} \draw[very thick, ->] (12,\s)–(14,\s)
node[fill=white, midway]{SI};
\foreach \s in {1, -4.5, -10, -15.5} \draw[very thick, ->] (19, \s)–(20, \s);
\foreach \x in {0,-5.5, -11, -16.5} \draw[very thick] (14,\x) rectangle (19,{\x+2});
\draw[very thick, ->] (9, -17.5)–(9,-19)–(20, -19);
\node[fill=white] at (9, -18.25){NO};
\draw[very thick, ->] (20, 1)–(20, -21);
\node at (16.5,1){Statement 1};
\end{tikzpicture}
\end{center}
\end{document}

Este código produce la siguiente salida

A chartflow of conditional-algorithm

¿Cómo escribir el texto ‘Statement 1/2/3/4’ en los cuadros en blanco usando foreach?

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para agregar el texto ‘Statement 1/2/3/4’ en los espacios en blanco utilizando foreach, puedes definir un array de declaraciones y sus coordenadas correspondientes, y luego usar un bucle para iterar sobre el array y colocar el texto en las coordenadas especificadas. Aquí tienes un ejemplo de código:

    \documentclass[12pt]{article}
    \usepackage{tikz}
    
    \begin{document}
    \begin{center}
    \begin{tikzpicture}
    % Define array of statements and their coordinates
    \def\statements{{"Statement 1", "(15,-2)", "Statement 2", "(9,-9)", "Statement 3", "(9,-14)", "Statement 4", "(15,-16)"}}
    % Iterate over array and place text at specified coordinates
    \foreach \i in {0,2,...,6} \node at \statements[\i+1] {\statements[\i]};
    \end{tikzpicture}
    \end{center}
    \end{document}
    

    En este código, definimos el array de declaraciones y coordenadas utilizando el comando \def. El array contiene elementos alternados de declaraciones de texto y sus coordenadas correspondientes, representados como cadenas de texto. Luego usamos un bucle para iterar sobre cada otro elemento del array (es decir, las coordenadas), y colocar la declaración correspondiente en esa coordenada utilizando el comando \node. El índice [ \i + 1 ] selecciona el elemento de coordenadas del array correspondiente a la iteración actual del bucle, mientras que el índice [ \i ] selecciona el elemento de declaración.

    Ten en cuenta que debes ajustar las coordenadas en el array para que coincidan con las ubicaciones específicas de los espacios en blanco en tu diagrama de flujo.

Comments are closed.