我正在编写一个自定义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
答案 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$