¿Cómo incrementar la variable usando la misma variable?

¿Cómo incrementar la variable usando la misma variable?

¿Cómo puedo incrementar una variable desde la misma variable?

\pgfmathsetmacro\S{5};
\pgfmathsetmacro\S{\S + 1};%   not working

¿Cómo puedo solucionar esto? Necesito contadores que utilizo como incremento de coordenadas de línea en determinadas condiciones.

Actualizar

\pgfmathsetmacro\cA{0}; 
\newcounter{cB}
\foreach \x in {1,...,10}
{ 
    \pgfmathtruncatemacro\cA{\cA+1)};
    \pgfmathaddtocounter{cB}{1};            
    \node at (\x,1) { \cA };
    \node at (\x,0) { \the\numexpr\value{cB} };         
}

imprimió esto

1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1 1

Necesito

1 2 3 4 ...

Sí, podría hacer esto en este ejemplo simple simplemente usando \xvariables, pero en mi diagrama real necesito incrementarlas de manera irregular. Entonces necesito una variable que pueda incrementarse dentro del ciclo sin reinicios. ¿O me falta algo y debería funcionar?

Respuesta1

Para usarlo en \foreachbucle, existen mejores opciones:

\documentclass[tikz,border=2pt]{standalone}
\begin{document}

\begin{tikzpicture}
\foreach \i [count=\S from 5] in {1,...,5}
    \node [draw, xshift=\i cm] {\S};
\end{tikzpicture}

\end{document}

ingrese la descripción de la imagen aquí

donde la sintaxis count=\S from 5se usa aquí para configurarla \Sy 5avanzarla 1en cada iteración. Otra sintaxis puede ser evaluate=\i as \S using \i+4, que logrará el mismo resultado.

Actualizar

El incremento se puede cambiar dentro del bucle según una condición como esta:

\newcounter{cA} 
\setcounter{cA}{0}
\newcounter{cB}
\setcounter{cB}{0}

\begin{tikzpicture}
\foreach \x in {1,...,10}{ 
    \addtocounter{cA}{1}
    \ifnum\x<6\addtocounter{cB}{1}\else\addtocounter{cB}{2}\fi            
    \node at (\x,1) { \thecA };
    \node at (\x,0) { \thecB };          
}
\end{tikzpicture}

ingrese la descripción de la imagen aquí

Respuesta2

No es necesario utilizar pgflas matemáticas para los contadores. Puedes simplemente usar \setcounter, \stepcountero \addtocounter. Con estos, el valor del contador se conserva después del \foreachciclo:

ingrese la descripción de la imagen aquí

No estoy seguro de entender completamente el fragmento de código de intención proporcionado, pero también se puede adaptar fácilmente para usar contadores TeX (como se muestra en el segundo MWE a continuación):

ingrese la descripción de la imagen aquí

Código:

\documentclass{article}
\usepackage{tikz}
\newcounter{foo}

\begin{document}
    \setcounter{foo}{0}
    After \verb|\setcounter|: foo=\arabic{foo}

    \stepcounter{foo}
    After \verb|\stepcounter|: foo=\arabic{foo}

    \addtocounter{foo}{4}
    After \verb|\addtocounter|: foo=\arabic{foo}

    \foreach \x in {1,...,20} {%
        \stepcounter{foo}%
    }%
    After \verb|\foreach|: foo=\arabic{foo}
\end{document}

Código:

\documentclass{article}
\usepackage{tikz}

\newcounter{cA}
\newcounter{cB}

\begin{document}
\begin{tikzpicture}
    \foreach \x in {1,...,10} {%
        \stepcounter{cA};
        \stepcounter{cB};            
        \node at (\x,1) { \the\value{cA} };
        \node at (\x,0) { \the\value{cB} };         
    }        
\end{tikzpicture}
\end{document}

Respuesta3

Funciona con pgf 3.0.1a:

\documentclass{article}
\usepackage{pgf}
\pgfmathsetmacro\S{5}
\pgfmathsetmacro\S{\S + 1}

\begin{document}
\S
\end{document}

Resultado

Observaciones:

  • \pgfmathsetmacrono es un comando de ruta, por lo tanto su sintaxis no conoce un punto y coma de cierre. En el preámbulo, el punto y coma adicional provoca un error (Falta \begin{document}).

  • Si desea tener un número entero como resultado, entonces \pgfmathtruncatemacroayuda:

    \documentclass{article}
    \usepackage{pgf}
    \pgfmathsetmacro\S{5}
    \pgfmathtruncatemacro\S{\S + 1}
    
    \begin{document}
    \S
    \end{document}
    

    Resultado con \pgfmathtruncatemacro

información relacionada