Pandoc模板:最后一项的不同分隔符

时间:2017-02-20 21:47:04

标签: templates pandoc

我正在编写一个自定义Pandoc模板,并希望它打印作者列表,以便所有作者用“,”分隔,除了最后一位用“和”分隔的作者。可以这样做吗?

我们说这是我的模板:

$if(title)$
$title$
$endif$
$if(author)$
$for(author)$$author$$sep$, $endfor$
$endif$
$body$

哪个输出:

My title
Author 1, Author 2, Author 3
Document body

但我希望它输出:

My title
Author 1, Author 2 and Author 3
Document body

1 个答案:

答案 0 :(得分:2)

您必须使用 Pandoc 模板语法中所谓的“管道”(请参阅​​ https://pandoc.org/MANUAL.html)。

我们将为数组中的所有-but-last 项创建一个 for 循环(it 被视为循环内的代词,指的是 authors/allbutlast 中的值)。对于 authors 数组的那些元素,我们将使用“,”作为分隔符,但在循环之外,我们将简单地将“最终分隔符”(“and”放在在这种情况下),以及 authors 数组的最后一个元素(~ 代表牢不可破的空间,如果您要输出到 LaTeX)。

$for(authors/allbutlast)$$it$$sep$, $endfor$ and~$authors/last$

编辑: 如果只有一位作者,请使用以下内容:

$if(author/allbutlast)$
$for (author/allbutlast)$
${it}$sep$, 
$endfor$
and ${author/last}
$else$
${author/last}
$endif$