Ideal API to expose for CSL processor? (and global citation affixes)

I have just had a quick try with pandoc. Take this input document (test.md):

[@doe]

[@doe, 4]

[cf. @doe]

[cf. @doe, 4]

[cf. @doe, 4 for many interesting comments]

[cf. @doe, for many interesting comments]

[-@doe, 4]

@doe argues ...

@doe [4] argues ..

[@doeA; @doeB]

Now, pandoc test.md -t native > pandoc-ast.txt gives me:

[Para [Cite [Citation {citationId = "doe", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 0}] [Str "[@doe]"]]
,Para [Cite [Citation {citationId = "doe", citationPrefix = [], citationSuffix = [Str ",",Space,Str "4"], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 0}] [Str "[@doe,",Space,Str "4]"]]
,Para [Cite [Citation {citationId = "doe", citationPrefix = [Str "cf.\160"], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 0}] [Str "[cf.",Space,Str "@doe]"]]
,Para [Cite [Citation {citationId = "doe", citationPrefix = [Str "cf.\160"], citationSuffix = [Str ",",Space,Str "4"], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 0}] [Str "[cf.",Space,Str "@doe,",Space,Str "4]"]]
,Para [Cite [Citation {citationId = "doe", citationPrefix = [Str "cf.\160"], citationSuffix = [Str ",",Space,Str "4",Space,Str "for",Space,Str "many",Space,Str "interesting",Space,Str "comments"], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 0}] [Str "[cf.",Space,Str "@doe,",Space,Str "4",Space,Str "for",Space,Str "many",Space,Str "interesting",Space,Str "comments]"]]
,Para [Cite [Citation {citationId = "doe", citationPrefix = [Str "cf.\160"], citationSuffix = [Str ",",Space,Str "for",Space,Str "many",Space,Str "interesting",Space,Str "comments"], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 0}] [Str "[cf.",Space,Str "@doe,",Space,Str "for",Space,Str "many",Space,Str "interesting",Space,Str "comments]"]]
,Para [Cite [Citation {citationId = "doe", citationPrefix = [], citationSuffix = [Str ",",Space,Str "4"], citationMode = SuppressAuthor, citationNoteNum = 0, citationHash = 0}] [Str "[-@doe,",Space,Str "4]"]]
,Para [Cite [Citation {citationId = "doe", citationPrefix = [], citationSuffix = [], citationMode = AuthorInText, citationNoteNum = 0, citationHash = 0}] [Str "@doe"],Space,Str "argues",Space,Str "\8230"]
,Para [Cite [Citation {citationId = "doe", citationPrefix = [], citationSuffix = [Str "4"], citationMode = AuthorInText, citationNoteNum = 0, citationHash = 0}] [Str "@doe",Space,Str "[4]"],Space,Str "argues",Space,Str ".."]
,Para [Cite [Citation {citationId = "doeA", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 0},Citation {citationId = "doeB", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 0}] [Str "[@doeA;",Space,Str "@doeB]"]]]

So, in pandoc each cite seems to be a list containing multiple citations. Each citation consists of the following keys:

  • citationID
  • citationPrefix
  • citationSuffix
  • citationMode
  • citationNoteNum
  • citationHash

After the list, there’s is also the original input as a string.

Now, concerning your suggestion.

  1. Pandoc uses citationMode instead of suppress_author. I guess this is a good choice as it does also allow for other citation modes, like narrative citations, or so.

  2. Pandoc does not explicitly use a key like locators. Instead, locators are inferred from the suffix, as the manual states:

    pandoc-citeproc will use heuristics to distinguish the locator from the suffix. In complex cases, the locator can be enclosed in curly braces (using pandoc-citeproc 0.15 and higher only):

    Like so:

    [@smith{ii, A, D-Z}, with a suffix]
    [@smith, {pp. iv, vi-xi, (xv)-(xvii)} with suffix here]
    
1 Like