Fragen:

Fragen:

Ich interessiere mich für das Einfärben bestimmter Zellen eines TikZ-Bildes. Es handelt sich um Folgendes:

Bild, das ich erstellt habe

Ich habe es gemacht, indem ich das Raster verwendet und die Zahlen erstellt habe. Ich stelle den Code vor, den ich oben erstellt habe:

\begin{tikzpicture}[scale = 0.7]   

\draw[lightgray] (0,0) grid (9,9);
\draw[blue] (2,2) grid (7,7);

%Ciclo de cuadrado auxiliar

\foreach \i in {0,1,2,3,4}{
    \foreach\j in {0,1,2,3,4}{
        \draw[red,thick,opacity = 0.5] (\i + \j,4 +\j - \i) rectangle (\i + \j + 1, 5 + \j - \i);
    }
}

%Cuadrado principal

\draw[blue,opacity = 0.5] (2,2) grid (7,7);              

%Ubicación de números 

\foreach \i in {0,1,2,3,4}{
    \foreach \j in {0,1,2,3,4}{
        
        \pgfmathtruncatemacro{\label}{\i + \j + 4*\i + 1};

        %\pgfmathparse[3 <= \i <= 5 && 0 <= j <= 1 ? int(1) : int(0)}
        
        %\ifnum\pgfmathresult = 1 
        %\node[teal] at (\i + \j + 0.5,4 +\j - \i + 0.5) {\label};
        %\else
        \node at (\i + \j + 0.5,4 +\j - \i + 0.5) {\label};
        %\fi
        
    }
} \end{tikzpicture}

Innerhalb des Zyklus gibt es einige kommentierte Zeilen. Der Punkt ist, dass ich nur die Zahlen einfärben möchte, die außerhalb des blauen Quadrats erscheinen, und zwar die, die darunter liegen (16,22,21). Allerdings habe ich mehrere Fehler erhalten! Es ist eine Liste mit bis zu 24 Fehlern. Ich vermute, dass ich ein Problem mit dem Schreiben der Bedingung habe.

Fragen:

Wissen Sie, welche Fehler in dieser Bedingung enthalten sind? Können Sie eine Referenz empfehlen, in der man mehr über diese Bedingungen lesen kann?

Aktualisieren

Entschuldigen Sie, dass ich weggegangen bin, aber ich bin wieder da. Die Antwort war sehr hilfreich, ich muss jedoch einige Änderungen vornehmen, um das gewünschte Ergebnis zu erzielen. Es gibt eine Instanz des Codes und das resultierende Bild

\begin{figure}[H]
    \centering
    \begin{tikzpicture}[scale=0.7]
        %\draw[lightgray] (0,0) grid (9,9);

        %Cuadrado auxiliar con desplazados resaltados
        \foreach \i in {0,...,4}{
            \foreach \j in {0,...,4}{
                \draw[red!50,thick] (\i+\j,4+\j-\i) rectangle +(1,1);
                \pgfmathparse{\i - \j > 2 ? 1 : 0}
                \ifnum\pgfmathresult = 1
                    \def\mycolor{white}
                    \node[\mycolor] at (\i+\j+0.5,4+\j-\i+0.5) {\inteval{5*\i+\j+1}};
                \else
                    \pgfmathparse{\j - \i > 2 ? 1 : 0}
                    \ifnum\pgfmathresult = 1
                        \def\mycolor{white}
                        \node[\mycolor] at (\i+\j+0.5,4+\j-\i+0.5) {\inteval{5*\i+\j+1}};
                    \else
                        \pgfmathparse{\i + \j < 2 ? 1 : 0}
                        \ifnum\pgfmathresult = 1
                            \def\mycolor{cyan}
                            \node[\mycolor] at (\i+\j+0.5,4+\j-\i+0.5) {\inteval{5*\i+\j+1}};    
                        \else
                            \def\mycolor{black}
                            \node[\mycolor] at (\i+\j+0.5,4+\j-\i+0.5) {\inteval{5*\i+\j+1}};
                        \fi
                    \fi
                \fi
                  
            }
        }
        %Cuadrado principal
        \draw[blue] (2,2) grid (7,7);

        %Resaltado en cuadrado principal de anteriores
        \node[teal] at (3.5,6.5) {$16$};
        \node[teal] at (4.5,5.5) {$21$};
        \node[teal] at (5.5,6.5) {$22$};
        \node[violet] at (3.5,2.5) {$4$};
        \node[violet] at (4.5,3.5) {$5$};
        \node[violet] at (5.5,2.5) {$10$};

        %Ubicacion de numeros nuevos 
        \draw[->,cyan!50,thick] (1.5,5.5) to (6.5,5.5);
        \node[cyan] at (6.5,5.5) {$2$};

        \draw[->,cyan!50,thick] (0.5,4.5) to (5.5,4.5);
        \node[cyan] at (5.5,4.5) {$1$};

        \draw[->,cyan!50,thick] (1.5,3.5) to (6.5,3.5);
        \node[cyan] at (6.5,3.5) {$6$};
        
        \end{tikzpicture}

Ein Schritt meiner Konstruktion

Ich habe für jeden Schritt eine andere Farbe verwendet und bin für die Hilfe sehr dankbar. Irgendwelche Ideen zu meiner zweiten Frage?

Antwort1

Bezüglich des Codes in der Frage:

  • Das [Nachher \pgfmathparsesollte sein {.
  • Die Verwendung mehrerer <=in einer Bedingung \pgfmathparsekann zu unerwarteten Ergebnissen führen.
  • Drinnen sollte \pgfmathparseman jsein \j.
  • Das int(1)kann nach 1und int(0)nach ersetzt werden 0.
  • Bei \foreachkann 0,1,2,3,4durch ersetzt werden 0,...,4.
  • Nach ist \pgfmathtruncatemacro„Nein“ ;erforderlich.

Der Zustand in \pgfmathparsewurde geändert.

Zuerst wird die Farbe definiert. Anschließend muss der Code für den Knoten nur einmal statt zweimal platziert werden.

Durch die Verwendung \intevalist eine Definition \labelmit nicht erforderlich \pgfmathtruncatemacro.

Der Code für die Quadrate kann mit vereinfacht werden rectangle +(1,1).

Bildbeschreibung hier eingeben

\documentclass[border=6pt]{standalone}
\usepackage{xfp}%not necessary from 2022-06-01: see https://ctan.org/pkg/xfp
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[scale=0.7]
\draw[lightgray] (0,0) grid (9,9);
\draw[blue] (2,2) grid (7,7);
\foreach \i in {0,...,4}{
  \foreach \j in {0,...,4}{
    \pgfmathparse{\i+\j<2||\i+\j>6||\i-\j>2||\j-\i>2?1:0}
    \ifnum\pgfmathresult=1
      \def\mycolor{teal}
      \draw[red!50,thick] (\i+\j,4+\j-\i) rectangle +(1,1);
    \else
      \def\mycolor{black}
    \fi
    \node[\mycolor] at (\i+\j+0.5,4+\j-\i+0.5) {\inteval{5*\i+\j+1}};
  }
}
\end{tikzpicture}
\end{document}

verwandte Informationen