我在 Markdown 中撰写了一篇论文,然后通过 Pandoc 和 Latex 将其转换为 PDF,使用以下命令获取 Latex(以及 BibLatex)的默认引用和参考书目样式:
pandoc -s --bibliography=foo.bib --biblatex -o foo.tex foo.md
pdflatex foo.tex
bibtex foo.aux
pdflatex foo.tex
pdflatex foo.tex
当然,我可以让 Pandoc 直接生成 PDF 文件,如下所示:
pandoc --bibliography=foo.bib --csl=foo.csl -o foo.pdf foo.md
然而,尽管广泛搜索zotero.org/styles我没有找到一个 CSL 风格
- 与 Latex 的默认引用样式“plain”非常接近(带有内联引用,如“blah blah [1]”),并且
- 生成适合德语文档的书目条目(页码缩写为“S.”而不是“pp.”,出版商缩写为“Hrsg.”而不是“Eds.”等)没有缩写后缺少点等错误。
我的问题是:
有没有比上述命令更简单的方法通过 Pandoc 使用原生 Latex 引文和参考书目内容?我不关心输入更多或更少的命令(Makefile ftw),我只是想知道是否有必要创建一个中间 Latex 文件。
或者,有人可以告诉我一个适合德语(计算机科学)文本的 CSL 文件吗?
答案1
经过更多的实验和阅读文档后,我确信如果想要使用原生 Latex 引用和参考书目功能,就无法避免创建中间 Latex 文件。
原因是,使用 Pandoc 我们显然可以使用两种可能的技术之一来生成书目参考:CSL 文件(使用设置--csl
)或 Latex 引文(使用--biblatex
或--natbib
设置)。CSL 文件可以与每种输出格式一起使用,而 Latex 引文只能在输出格式为 Latex 时使用。
但为什么呢?因为当使用--biblatex
或--natbib
设置创建 Latex 输出时,Pandoc 会将 Markdown 引用转换[@foo, p. 20]
为 Latex 命令,例如\autocites[p. 20]{foo}
。将 Latex 文件转换为 PDF 时,这些命令将由 pdflatex 处理,从而产生我想要的漂亮输出。显然,在任何其他输出格式中创建这样的 Latex 命令都是徒劳的。
另一方面,当使用该--csl
选项调用时,Pandoc 会根据 CSL 样式直接将上述 Markdown 引用转换为文本,例如“(Knuth 1970, p. 20)”。这实际上非常酷,因为这样引用将被“硬编码”,因此看起来就像在每种输出格式中都在 CSL 文件中指定了它们一样。当然,缺点是,如果我找不到适合我需要的 CSL 文件,我必须采用 Markdown -> Latex -> PDF 的方式。
我仍然感到疑惑的是,为什么在创建 PDF 输出时不能使用--biblatex
和--natbib
设置。如果我没记错的话,Pandoc 无论如何都会通过 Latex 生成 PDF,那么为什么不充分利用 Latex 的功能呢?但无论如何,我认为我完全可以接受我的问题中描述的方式 ;-)
答案2
我也是德国人。你试过“Deutsche Gesellschaft für Psychologie”吗?它似乎能满足你的要求。否则,你可以在这里编辑它: