arara:规则中的切换标识符

arara:规则中的切换标识符

我正在研究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,我们可能能够使用我们称之为条件语句。我们仍在努力,但目前看来,一切看起来都很好。

我会考虑添加一个内部地图,其中包含一些对规则制定者有用的信息,例如项目数量、当前项目和其他有用信息。当然,它会被妥善记录下来。:)

相关内容