Pandoc模板中的布尔运算符使用方法
Pandoc模板实现布尔逻辑运算的方法
Pandoc模板支持基础的if条件判断和for循环,比如常见的分支写法:
$if(foo)$ part one $else$ part two $endif$
但原生模板语法不直接支持AND/OR这类布尔运算符,我们可以通过嵌套判断或预处理变量的方式实现对应的逻辑:
实现AND逻辑(同时满足foo和bar)
通过嵌套两层if语句,先判断foo存在,再在其内部判断bar,只有两者都存在时才执行对应内容:
$if(foo)$ $if(bar)$ both $endif$ $endif$
实现OR逻辑(满足foo或bar任意一个)
可以用if-else嵌套,先判断foo,若不存在则再判断bar,只要其中一个存在就执行内容:
$if(foo)$ either or both $else$ $if(bar)$ either or both $endif$ $endif$
如果追求简洁,也可以用紧凑写法(可读性稍弱):
$if(foo)$either or both$else$$if(bar)$either or both$endif$$endif$
另一种思路:预处理组合变量
在调用Pandoc时,提前通过命令行定义组合后的布尔变量,比如实现AND逻辑:
pandoc -V has_both=$( [ -n "$foo" ] && [ -n "$bar" ] && echo true ) input.md -o output.pdf
之后在模板中直接使用$if(has_both)$即可判断是否同时满足foo和bar的条件。
内容的提问来源于stack exchange,提问作者Raniere Silva
相关产品推荐
相关产品推荐

