使用该arrayjob
包,我可以从数组中提取字符串,例如,获取蒂克兹打印该文本:
\documentclass{standalone}
\usepackage{tikz}
\usepackage{arrayjob}
\newarray\colours
\readarray{colours}{red&orange&yellow&green&blue&purple}
\begin{document}
\begin{tikzpicture}
\foreach \i in {1,2,5} {
\draw (0,\i) node{\colours(\i)};
}
\end{tikzpicture}
\end{document}
但是,我想以相同的方式为线条着色,颜色各不相同。我天真地尝试了以下代码,但不起作用:
\documentclass{standalone}
\usepackage{tikz}
\usepackage{arrayjob}
\newarray\colours
\readarray{colours}{red&orange&yellow&green&blue&purple}
\begin{document}
\begin{tikzpicture}
\foreach \i in {1,2,5} {
\draw[\colours(\i)] (0,\i)--++(1,0);
}
\end{tikzpicture}
\end{document}
这是一个玩具示例,用于说明我想要什么。在这个小示例中,有明显的方法可以做到这一点,但不是我的应用程序。我想通过索引从数组中提取颜色,并使用该颜色为线条着色。
编辑: 感谢 SebGlav,我找到了一些方法。我将在下面留下答案。现在答案中有三个好的解决方案,谢谢大家!
答案1
按照建议,使用 Ti 的数组功能钾Z你可以获得:
\documentclass{standalone}
\usepackage{tikz}
%\usepackage{arrayjob}
%\newarray\colours
%\readarray{colours}{red&orange&yellow&green&blue&purple}
\def\mycolours{{"red","orange","yellow","green","blue","purple"}}
\begin{document}
\begin{tikzpicture}
\foreach \i [evaluate=\i as \usecolor using {\mycolours[\i]}]in {1,2,5} {
\draw[color=\usecolor] (0,\i)--++(1,0);
}
\end{tikzpicture}
\end{document}
答案2
pgfkeys 可以是你的数组
\documentclass[tikz]{standalone}
\pgfkeys{
/benis/.cd,
1/.initial=red,
2/.initial=orange,
3/.initial=yellow,
4/.initial=green,
5/.initial=blue,
6/.initial=purple,
}
\begin{document}
\begin{tikzpicture}
\foreach \i in {1,2,5} {
\pgfkeysgetvalue{/benis/\i}\thiscolor
\draw (\i,\i/2)node[circle,draw=\thiscolor]{\thiscolor};
}
\end{tikzpicture}
\end{document}
答案3
感谢 SebGlav,我终于可以开始工作了。我必须输入我想要的颜色的 RGB 代码,但没问题。以下代码有效:
\documentclass{standalone}
\usepackage{tikz}
\usepackage{xcolor}
\begin{document}
\newcommand{\colours}{{"FF0000","FFA500","FFFF00","008000","0000FF","800080"}}
\begin{tikzpicture}
\foreach \i in {1,2,5} {
\pgfmathsetmacro{\currentcolour}{\colours[\i]}
\definecolor{currentcolour}{HTML}{\currentcolour}
\draw[currentcolour] (0,\i)--++(1,0);
}
\end{tikzpicture}
\end{document}
答案4
TeX(因此,TikZ)的数组操作相当不方便。数字、文本(包括颜色)、点(作为 2 个坐标对)数组的简单使用如下。
\documentclass[tikz,border=5mm]{standalone}
\begin{document}
% array of numbers a[i], i=0,1,2,3
\def\a{{6,8,11,12}}
% array of texts b[i], i=0,1,2,3
\def\b{{"blue","red","orange","teal"}}
% array of points (coordinates) c[i], i=0,1,2,3
\def\c{{"(1,2)","(1.5,1.5)","(3,2.5)","(5,3)"}}
\begin{tikzpicture}
\draw (0,.5) rectangle (6.5,3.5);
\foreach \i in {0,...,3}{
\pgfmathsetmacro{\ii}{int(\i+1)}
\pgfmathsetmacro{\tmpa}{\a[\i]}
\pgfmathsetmacro{\tmpb}{\b[\i]}
\pgfmathsetmacro{\tmpc}{\c[\i]}
\path (0,-\i) node[right,\tmpb,align=left]
{The \ii-th element is $\tmpa{}$ with \tmpb{} color\\
associated with the point $\tmpc$};
\fill[\tmpb] \tmpc node[above]{\tmpa} circle(2pt);
}
\end{tikzpicture}
\end{document}