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

时间:2015-03-10 12:58:33

标签: pandoc

LaTex beamer的default.beamer pandoc默认模板有这一行:

$if(theme)$
\usetheme{$theme$}
$endif$

特定主题的测试是否也有效?类似的东西:

$if(theme)$
   \usetheme{$theme$}
   $if(Berlin)$
     \setbeamertemplate{headline}
     {}
   $endif$
 $endif$

Pandoc - Pandoc User Guide中,我发现了这个:

$if(variable)$
X
$else$
Y
$endif$
  

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

有关使用多个值循环变量的更多信息,但我似乎无法找到有关如何测试特定变量值的信息 - 不是truefalse,而是{ LaTex Beamer主题的具体示例中的{1}}或Darmstadt

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

2 个答案:

答案 0 :(得分:2)

您可以简单地使用类似条件的LaTeX

\usepackage{ifthen}

$if(theme)$
   \usetheme{$theme$}
   \expandafter\ifstrequal\expandafter{$theme$}{Berlin}{%
   \setbeamertemplate{headline}}{%
   % if false
   }}%
$endif$

答案 1 :(得分:1)

Pandoc本身并不允许开箱即用。

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

  1. 编写自定义过滤器或查找它。 Pandoc过滤器在输入和输出上都将文档序列化为JSON。有了这样的过滤器,您可以使用custom heading attributes标记部分。
  2. 使用提到的here之类的预处理器预处理Pandoc输入。
  3. 对我来说,第二种方法是首选,因为:

    • Pandoc中的所有内容都不能使用自定义属性进行注释;
    • 标题模型是平的,例如标题不是像section这样的属性,而只是文本中的一个位置。