jgm / pandoc

Universal markup converter
https://pandoc.org
Other
34.67k stars 3.38k forks source link

\pno in citations in LaTeX exports #4739

Open adql opened 6 years ago

adql commented 6 years ago

When citing a resource with a comment following the page number, e.g. [@Jones_2010, 20, my emphasis], the resulting LaTeX export is \autocite[20, my emphasis]{Jones_2010}. This causes BibLaTeX to treat the entire postnote as raw text without automatic inclusion of a style-dependent page prefix. So when using a citation style that includes e.g. p. before the page number, the final result becomes

See for example (Jones 2010, 20).

while it should be

See for example (Jones 2010, p. 20).

BibLaTeX requires using \pno in such cases in order to trigger the page prefixing manually where the postnote string is too complex for automatic inclusion. Therefore, Pandoc should export such a citation as \autocite[\pno~20, my emphasis]{Jones_2010}. Respectively \ppno should be used for a page range.

Pandoc 2.2.1 with the command: pandoc --read=markdown --write=latex --output=FILENAME --biblatex --top-level-division=chapter --number-sections --standalone --table-of-contents --include-in-header=header-includes.tex --include-before-body=before-body-includes.tex --bibliography=zotero.bib (Note that an input file is missing because I use pandoc-mode in Emacs)

adql commented 6 years ago

Of course, in every citation p., pp., chap. etc. may be used. This is however inconsistent with a usage scheme in which the user chooses to omit these and rely on BibLaTeX mechanisms for adding the locator for whatever reason (BibLaTeX allows its customization on a per-entry basis).

jgm commented 5 years ago

The \pno should be added only when --biblatex output has been specified, and only when the citation suffix starts with a numeral.

seifferth commented 3 years ago

https://github.com/jgm/pandoc/pull/7220 might actually provide a solution for this issue. It works in line with pandoc-citeproc's citation locator braces, which were previously stripped. It converts:

[@something, {pages}, additional content]

into

\autocite[\pnfmt{pages}, additional content]{something}

I believe that this solution might be more robust (and a little less magical) than auto-detecting where to insert \pno (or \ppno?)