是否可以基于变量值在pandoc模板中编写条件语句?

tma*_*ric 5 pandoc

default.beamer乳胶投影仪pandoc默认模板有这样一行:

$if(theme)$
\usetheme{$theme$}
$endif$
Run Code Online (Sandbox Code Playgroud)

特定主题的测试是否也有效?就像是:

$if(theme)$
   \usetheme{$theme$}
   $if(Berlin)$
     \setbeamertemplate{headline}
     {}
   $endif$
 $endif$
Run Code Online (Sandbox Code Playgroud)

Pandoc - Pandoc用户指南中,我发现了这个:

$if(variable)$
X
$else$
Y
$endif$
Run Code Online (Sandbox Code Playgroud)

如果变量具有非空值,则在模板中包含X. 否则它将包括Y.X和Y是任何有效模板文本的占位符,并且可能包括插值变量或其他条件.$ else $部分可能会被省略.

有关使用多个值循环变量的更多信息,但是我似乎无法找到有关如何测试特定变量值的信息 - 不是true或者false,Darmstadt或者Berlin在LaTex Beamer主题的特定示例中.

这可以以某种方式工作吗?

dlu*_*civ 2

Pandoc 本身不允许这样做。

有两种方法可以解决这个问题:

  1. 编写自定义过滤器或寻找它。Pandoc 过滤器在输入和输出上将文档序列化为 JSON。有了这样的过滤器,您可以使用自定义标题属性来标记部分。
  2. 使用此处提到的任何预处理器对 Pandoc 输入进行预处理。

对我来说,第二种方法是首选,因为:

  • 并非 Pandoc 中的所有内容都可以使用自定义属性进行注释;
  • 标题模型是扁平的,例如标题不是章节之类的属性,而只是文本中的一个位置。