循环项目记录

循环项目记录

答案是,有一个循环结构被使用,称为loop over item。我正在寻找它的文档以及它在哪个文件中定义的参考。

 \ifdate{workday} {
  \tikzset{every workday/.try, vacation name=,
    loop over item/.code args={##1/##2/##3}{%
      \ifdate{between=##1 and ##2}{%
        \tikzset{every vacation/.try, vacation name/.expanded=##3}%
      }{}},
    loop over item/.list/.expanded=\vacations}%
  }{}

我已经在 tikz 文档中搜索了它,并在我的 texlive 目录中搜索了它,但没有找到它。

答案1

我在这里要说的所有内容在 pgfmanual 的第 82 节中有更好的解释。loop over item本身,尽管其名称暗示,不是一个循环,而“只是”一个代码。然而,由于密钥.list,它变成了一个循环。为了更清楚地看到这一点,请考虑 MWE

\documentclass{article}
\usepackage{pgfkeys,pgffor} % .list requires pgffor
\begin{document}
\pgfkeys{/student/.cd, % switch to student
hello/.code={hello #1!}}
\pgfkeys{/student/hello=world}

\pgfkeys{/student/hello/.list={world,duck,koala,marmot}}
\end{document}

在此处输入图片描述

这里,hello只是一段打印 的简单代码hello <arg>!,其中arg是参数。(如果定义里面有定义,则需要增加 的数量#,如下所述这里#。这就是为什么的定义中有两个的原因\ifdate。)

现在重要的是,.list关键是使代码循环遍历参数,如(公认的愚蠢示例)所示\pgfkeys{/student/hello/.list={world,duck,koala,marmot}}。还要注意,.list需要pgffor库(在之上pgfkeys,这足以使 MWE 的第一部分工作)。

相关内容