TikZ / pgfmath:如何获取多个编号变量?

TikZ / pgfmath:如何获取多个编号变量?

有没有办法\x1, \x2,..在循环中创建多个编号变量(如)?

\usetikzlibrary{math}顺便说一句:如果存在没有库的解决方案,我就不需要使用math

\documentclass[a4paper]{article} 
\usepackage{tikz}
\usetikzlibrary{math} 

\begin{document}
\foreach \N in {1,...,5}{%%
\pgfmathsetmacro\tmp{random(1,52)}  Test: \tmp ~ 
%
\tikzmath{\x\N = \tmp;}  % Does not work
\tikzset{ declare function={ x(\N) = \tmp; },    } % Does not work
}%%

\section{Does not work}
%\pgfmathprint{\x3} % Does not work
%\pgfmathprint{x(3)} % Does not work
\end{document}

在此处输入图片描述

答案1

正常\foreach循环会创建一个组。除非进行全局定义,否则您在其中执行的所有操作之后都会丢失。

使用 PGFKeys 和 PGFFor 的基本工具,我们可以定义一些宏作为函数的结果random。A在内部.list使用\foreach(允许...符号),但不在循环组内执行键。

为了访问这些数字,我们使用\cisNum宏(只是名称不同\x)。

代码

\documentclass{article}
\usepackage{pgfmath, pgffor, pgfkeys}
\pgfkeys{/cis/.cd,
  create random numbers/.style n args={3}{
    /cis/temp/.code=%
      \expandafter\pgfmathsetmacro\csname cis_num_##1\endcsname{random(#1,#2)},
    /cis/temp/.list={#3}}}
\newcommand*\cisNum[1]{\csname cis_num_#1\endcsname}
\begin{document}
\pgfmathsetseed{687855}
\pgfkeys{/cis/create random numbers={1}{52}{1, ..., 5}}
\pgfkeys{/cis/create random numbers={53}{104}{6, ..., 10}}

\foreach \N in {1, ..., 5} {Test: \pgfmathprint{\cisNum{\N}}\quad}\par
\foreach \N in {6, ..., 10}{Test: \pgfmathprint{\cisNum{\N}}\quad}
\end{document}

输出

测试:22 测试:32 测试:34 测试:49 测试:42
测试:60 测试:53 测试:65 测试:91 测试:83

答案2

通过使用数学库循环得到它:

在此处输入图片描述

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{math}
\begin{document}
\tikzmath{
  int \N; 
  for \N in {1,...,5}{%
  \x\N=random(1,52);     };%
}

Test:
\foreach \j in {1,...,5}{x\j =\x\j,~}
\end{document}

相关内容