
두 가지 변수를 정의했습니다.
\def\aa{3} \def\bb{1}
\def\qq{\multiply\aa by \bb}
하지만 다음과 같은 명령을 \qq
사용 하려고 하면\matrix
\matrix[matrix of math nodes]{12 & \qq\\};
ktikz 말한다:
temptikzcode.pgf:60 You can't use `the character 3'
내가 도대체 뭘 잘못하고있는 겁니까?
일종의 변수 문제가 있는 것 같은데, 수단 \print{\qq}
이나 방법으로는 해결이 안 됐어요 \string\qq
.
감사해요
답변1
A는 \def\aa{3}
카운트 레지스터를 할당하지 않습니다. \multiply
카운트 레지스터('정수 변수')가 필요합니다.
count
레지스터를 사용하거나 \the\numexpr \aa *\bb
나중에는 정수에만 작동하지만 \multiply
숫자 변수에도 사용할 수 있습니다.
이 예에서는 양방향을 모두 사용합니다.
\multiply\mynumberone by \mynumbertwo
두 카운트 레지스터의 내용을 곱하고 그 결과를 에 저장합니다 \mynumberone
. 이는 \the\mynumberone
then 또는 로 인쇄되어야 합니다 \number\value{mynumberone}
.
- 접근 방식 \numexpr
은 더 쉽지만 가 필요 e-TeX
하지만 요즘에는 문제가 되지 않습니다.
\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}
답변2
작업 방법 \pgfmathtruncatemacro
은 \multiply
. 그러면 결과가 계산되고 소수점 이하 자릿수가 잘립니다. 소수가 필요한 경우 를 사용할 수 있습니다 \pgfmathsetmacro
.
여담이지만, \def
반대를 사용하는 것의 한 가지 단점 \newcommand
은 기존 매크로를 재정의하는지 여부를 알려주지 않는다는 것입니다. 이 경우 \aa
"å"를 인쇄하기 위한 매크로입니다. 일반적으로 기존 매크로를 재정의하는 것은 좋은 습관이 아닙니다. 단, cfr의 말을 인용하면 "무엇을 하고 있는지, 왜 하는지 확실히 알고 있습니다"라고 할 수 있습니다.
불행하게도 \pgfmathtruncatemacro
매크로 \pgfmathsetmacro
가 있는지도 확인하지 마세요.
\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}
답변3
내 원래 문제는 학생들을 위한 비디오를 만들기 위한 시퀀스를 생성하기 위해 두 개의 매트릭스를 넣고 세 가지 다른 방식으로 제품을 수행하는 것이었습니다. 노드 배경과 화살표가 강렬하게 사용되었습니다.
누군가가 관심을 가질 만한 다른 문제를 해결했다고 생각합니다.행렬의 모든 항목을 오른쪽에 배치하려면. (like\begin{array}{rrr}... )
\pgfmathtruncatemacro{\qc}{\ha*\bc} \def\qct{{\color{c1}\ifthenelse{\qc<0}{\qc}{\D\qc}}}
여기서 \qc와 \ha는 계산된 변수이고, \bc는 두 번째 행렬의 B(1,3) 항목입니다(Tikz가 왜 \b13을 변수로 허용하지 않는지는 모르겠습니다). \qct는 \qc의 텍스트 버전입니다. 음수가 아닌 경우에는 \D = \phantom{-}을 넣습니다.
덜 복잡한 것은 \qct를 노드 행렬의 항목으로 직접 계산하는 명령을 정의하는 것입니다.
감사해요