一般来说:我需要从数组中检索值,以将这些值作为索引提交给函数。
更具体一点:我想创建包含子图的图形。这些子图是从 mysubfigures.pdf 加载的。子图的顺序保存在单独的列表中ggg
。我在下面举了一个最小的例子。
这是不起作用的部分,我需要您的帮助:page=\ggg(\subfigure)
我希望它像page=64
什么时候\subfigure
是1
,page=61
什么时候\subfigure
是2
,等等。
(我在 stackexchange 上看过一些类似的问题,但我不明白答案。)
\documentclass[class=minimal,border=0pt,tikz]{standalone}
\usepackage{tikz}
\usepackage{arrayjob}
\begin{document}
\newarray\ggg
\readarray{ggg}{64&61&41}
\ggg(1)
\foreach \subfig in {1,2,3}
{
%This is Figure \subfig
\includegraphics[page=\ggg(\subfig)]{./mysubfigures.pdf};
}
\end{document}
答案1
这里的问题是,arrayjob
做一些令人讨厌的事情来从数组中获取值,这与\includegraphics
处理其参数的方式不兼容。
有两种解决方案:
1. 展开然后使用
\documentclass[class=minimal,border=0pt,tikz]{standalone}
\usepackage{tikz}
\usepackage{arrayjob}
\begin{document}
\newarray\ggg
\readarray{ggg}{64&61&41}
\ggg(1)
\foreach \subfig in {1,2,3}
{
%This is Figure \subfig
\checkggg(\subfig)
\includegraphics[page=\cachedata]{mysubfigures};
}
\end{document}
这里\checkARRAYNAME(INDEX)
将保存宏中的值\cachedata
,以便我们可以在参数中正常使用它,因为不需要特殊处理来重写该值。
2. 使用 pgfmath 的数组
由于您使用的tikz
包pgfmath
已经加载,并且能够理解数组。只需执行以下操作:
\def\ggg{{64,61,41}} % <- your array is just a list
\foreach \i in {0,1,2} % 0-based indexes
{
%This is Figure \i
\pgfmathsetmacro{\pg}{\ggg[\i]} % <- array notation ARRAY[INDEX]
\includegraphics[page=\pg]{mysubfigures}
}
第三种方法
除非您确实需要文档中其他地方的数组,否则您不需要它们,因为您可以利用优秀的\foreach
语法:
\foreach[count=\i] \pg in {64,61,41} {
Subfigure~\i, Page~\pg:
\includegraphics[page=\pg]{mysubfigures}
}