Tikz y variables

Tikz y variables

He definido dos variables

\def\aa{3}  \def\bb{1}

\def\qq{\multiply\aa by \bb}

pero cuando trato de usarlo \qqen un \matrixcomando como

\matrix[matrix of math nodes]{12 & \qq\\};

ktikz dice:

temptikzcode.pgf:60 You can't use `the character 3'

¿Qué estoy haciendo mal?

Sospecho que hay algún tipo de problema de variable, pero no pude solucionarlo mediante \print{\qq}o \string\qq.

Gracias

Respuesta1

A \def\aa{3}no asigna un registro de conteo. \multiplyrequiere un registro de conteo (una 'variable entera').

Utilice countregistros o \the\numexpr \aa *\bb, el último funciona solo para números enteros, mientras que \multiplytambién se puede utilizar para variables numéricas.

El ejemplo utiliza ambos sentidos.

\multiply\mynumberone by \mynumbertwomultiplicará el contenido de ambos registros de conteo y almacenará el resultado en \mynumberone, que debe imprimirse con \the\mynumberonethen o con \number\value{mynumberone}.

El \numexprenfoque - es más fácil, pero requiere e-TeX, pero esto no debería ser un problema hoy en día.

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}


\def\aa{3}  \def\bb{1}

\newcount\mynumberone
\newcount\mynumbertwo

\mynumberone=3
\mynumbertwo=2

\def\qq{\the\numexpr\aa * \bb\relax}

\def\ww{\multiply\mynumberone by \mynumbertwo}


\begin{tikzpicture}
  \matrix[matrix of math nodes]{12 & \qq\\ 15 & \ww\the\mynumberone\\};
\end{tikzpicture}

\end{document}

ingrese la descripción de la imagen aquí

Respuesta2

Un método de trabajo sería utilizar \pgfmathtruncatemacroen lugar de \multiply. Esto calculará el resultado y truncará los decimales. Si necesitas decimales, puedes utilizar \pgfmathsetmacro.

Además, una desventaja de usar \defen lugar de \newcommandes que no le dirá si está redefiniendo una macro existente. En este caso, \aaes la macro para imprimir un "å". En general, redefinir las macros existentes no es una buena práctica, a menos que usted, citando a CFR, "esté absolutamente seguro de saber lo que está haciendo y por qué".

Desafortunadamente, \pgfmathtruncatemacrotampoco \pgfmathsetmacroverifique la existencia de la macro.

\documentclass[border=2mm]{standalone}
\usepackage{tikz}
%\newcommand\aa{3}  % causes error, command \aa already defined
\newcommand\aaa{3} 
\newcommand\bb{1}
\pgfmathtruncatemacro{\qq}{\aaa*\bb}
\usetikzlibrary{matrix}
\begin{document} 
\begin{tikzpicture}
\matrix[matrix of math nodes]{12 & \qq\\};
\end{tikzpicture}
\end{document} 

Respuesta3

Es solo para comentar que mi problema original era poner dos matrices y realizar el producto de tres formas diferentes para generar una secuencia para hacer un video para mis alumnos. Se utilizaron intensamente fondos de nodos y flechas.

Creo que soluciono otro tema que quizás a alguien le interese:poner todas las entradas de una matriz a la derecha. (como\begin{array}{rrr}.... )

\pgfmathtruncatemacro{\qc}{\ha*\bc} \def\qct{{\color{c1}\ifthenelse{\qc<0}{\qc}{\D\qc}}}

donde \qc y \ha son variables calculadas, \bc es la entrada B(1,3) de mi segunda matriz (no tengo idea de por qué Tikz no acepta \b13 como variable) \qct es una versión de texto de \qc: if no negativo ponemos a \D = \phantom{-}.

Sería menos complicado definir un comando para calcular \qct directamente como una entrada de una matriz de nodos.

Gracias

información relacionada