因此,随着我论文的最后期限即将到来,我想通了:我正在使用 pandoc 学者和一个 makefile 来指导文件创建。我还没有弄清楚所有细节,但是有一些 pandoc 学者正在调用 citeproc。现在由于 citeproc 和 crossref 使用类似的表示法,需要首先调用 crossref (我似乎无法做到这一点,因为再次,pandoc 学者中的某处某处)
解决方案:在 makefile 中,先调用 crossref,然后再调用 citeproc。它仍然会从第一次 citeproc 调用中抛出错误,并且需要更长的时间,但它可以工作。
编辑:一些话
编辑2:这是我所做的一个例子。请注意,我将 FILTERS = XXXXXX 行重复了两次。开始时一次,然后在声明 ARTICLE_FILE、BIB、PDFENGINE 等详细信息后再次。可能不是最好的方法,但它有效,而且我不会在提交后修复我的论文!
TEMPLATE = uni-thesis
FILTERS = --filter pandoc-crossref --filter pandoc-citeproc --lua-filter=short-captions.lua
EXTENSIONS := simple_tables+table_captions+yaml_metadata_block+smart
PDFENGINE=pdflatex
## CSL stylesheet (usually located in ~/.csl)
CSL = elsevier-harvard-thesis
ARTICLE_FILE = THESIS-name.md
OUTFILE_PREFIX = THESIS-name
DEFAULT_EXTENSIONS = pdf
BIB = ../citations.bib
PDFENGINE=pdflatex
FILTERS = --filter=pandoc-crossref --filter=pandoc-citeproc --lua-filter=short-captions.lua
EXTENSIONS := simple_tables+table_captions+yaml_metadata_block+smart
PANDOC_LATEX_OPTIONS = --pdf-engine=$(PDFENGINE)
LUA_FILTERS += $(LUA_FILTERS_PATH)/pagebreak/pagebreak.lua
OS := $(shell uname)