我正在研究arara
使用items
标识符的规则
% arara: myrule: {items: [lions, zebras]}
\documentclass{article}
\begin{document}
hello world
\end{document}
该规则myrule.yaml
如下所示:
!config
identifier: myrule
name: myrule
commands:
- <arara> @{ isTrue( myswitch, isWindows( "cmd /c echo", "echo" ) ) } @{item}
# can I toggle myswitch here?
arguments:
- identifier: myswitch
flag: <arara> @{parameters.myswitch}
default: true
我想将myswitch
标识符切换至false
规则内 - 我该怎么做?:)
(原因是我为如何创建单独章节的 PDF)。
答案1
遗憾的是,在规则上下文中无法进行切换。
当使用像items/@{item}
或 这样的迭代器时files/@{file}
,规则会被复制到每个项目;上下文是无状态的,它没有过去扩展的记忆。
一种可能的肮脏的黑客行为是将当前值@{item}
与指令提供的变量进行比较,并且当且仅当它们相等时才执行其中一个命令:
!config
identifier: myrule
name: myrule
commands:
- <arara> @{ isTrue( item == element, isWindows( "cmd /c echo", "echo" ) ) } @{item}
arguments:
- identifier: element
flag: <arara> @{parameters.element}
在指令中:
% arara: myrule: { items: [ lions, zebras ], element: lions }
请注意,这element
适用于列表的第一项。
在即将推出的版本中arara
,我们可能能够使用我们称之为条件语句。我们仍在努力,但目前看来,一切看起来都很好。
我会考虑添加一个内部地图,其中包含一些对规则制定者有用的信息,例如项目数量、当前项目和其他有用信息。当然,它会被妥善记录下来。:)