Tikz e variáveis

Tikz e variáveis

Eu defini duas variáveis

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

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

mas quando tento usar \qqum \matrixcomando como

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

ktikz diz:

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

O que estou fazendo de errado?

Suspeito que exista algum tipo de problema de variável, mas não consegui resolver por meio \print{\qq}ou \string\qq.

Obrigado

Responder1

A \def\aa{3}não aloca um registrador de contagem. \multiplyrequer um registro de contagem (uma 'variável inteira').

Use countregistros ou \the\numexpr \aa *\bb, o último funciona apenas para números inteiros, mas \multiplytambém pode ser usado para variáveis ​​numéricas.

O exemplo usa os dois sentidos.

\multiply\mynumberone by \mynumbertwomultiplicará o conteúdo de ambos os registros de contagem e armazenará o resultado em \mynumberone, que deve ser impresso com \the\mynumberonethen ou com \number\value{mynumberone}.

A \numexprabordagem - é mais fácil, mas requer e-TeX, mas isso não deve ser um problema hoje em dia.

\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}

insira a descrição da imagem aqui

Responder2

Um método de trabalho seria usar \pgfmathtruncatemacroem vez de \multiply. Isso calculará o resultado e truncará os decimais. Se precisar de decimais, você pode usar \pgfmathsetmacro.

Além disso, uma desvantagem de usar \defem oposição a \newcommandé que ele não informa se você está redefinindo uma macro existente. Neste caso, \aaé a macro para imprimir um "å". Em geral, redefinir macros existentes não é uma boa prática, a menos que você, para citar o cfr, "tenha certeza absoluta de que sabe o que está fazendo e por quê".

Infelizmente, \pgfmathtruncatemacrotambém \pgfmathsetmacronão verifique a existência da 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} 

Responder3

Fica apenas para comentar que meu problema original era colocar duas matrizes e realizar o produto de três formas diferentes para gerar uma sequência para fazer um vídeo para meus alunos. Os fundos e setas dos nós foram usados ​​intensamente.

Acho que resolvo outra questão que talvez alguém tenha interesse:colocar todas as entradas de uma matriz à direita. (como\begin{array}{rrr}... )

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

onde \qc e \ha são variáveis ​​calculadas, \bc é a entrada B(1,3) da minha segunda matriz (não faço ideia porque o Tikz não aceita \b13 como variável) \qct é uma versão em texto de \qc: if não negativo colocamos um \D = \phantom{-}.

Menos complicado seria definir um comando para calcular \qct diretamente como uma entrada de uma matriz de nós.

Obrigado

informação relacionada