andras-simonyi / citeproc-el

A CSL 1.0.2 Citation Processor for Emacs.
GNU General Public License v3.0
85 stars 9 forks source link

position="first" match not properly evaluated #63

Closed Quintus closed 2 years ago

Quintus commented 2 years ago

Hi there,

since I suppose it's an issue in citeproc.el rather than org-mode, I'll re-post my original org-mode ml posting below:


the CSL style I use has footnotes. When a book is cited, it is once cited with the full bibliographic information, and later footnotes then reference the footnote in which this information first appeared, shortening the later footnotes to the format "Author, (o. Fn. ), ...". (the spurious comma I will look into later, it's probably an error in the CSL file). Now take this org file:

#+TITLE: Test
#+AUTHOR: testauthor
#+LANGUAGE: de
#+cite_export: csl  /tmp/mwe/juristische-schulung.csl
#+bibliography: /tmp/mwe/mwe.bib

Das ist ein Test mit dem ersten Zitat [cite:@knuth1997tacp1 p. 55].
Dasselbe Zitat mit einer anderen Seite [cite:@knuth1997tacp1 p. 70].

mwe.bib:

@Book{knuth1997tacp1,
author       = {Donald E. Knuth},
maintitle        = {The Art of Computer Programming},
title = {Fundamental Algorithms},
year      = {1997},
edition   = {3},
publisher = {Addison-Wesley},
location  = {Reading, Harlow, Menlo Park, Berkeley, Don Mills, Sydney, Bonn, Amsterdam, Tokyo, Mexico City},
langid    = {english},
volume    = {1}}

juristische-schulung.csl is https://github.com/citation-style-language/styles/blob/e22b8a566bad9b4c7f52720f60dd875057a5d210/juristische-schulung.csl

Exporting this gives these two footnotes:

1 Knuth, The Art of Computer Programming, 3. Aufl. (1997), 55
2 Knuth, , 70

The second footnote is incomplete. It lacks the "o. Fn." mark and the footnote referenced. If I export the equivalent pandoc-markdown document with pandoc:

---
title: Test
author: Testauthor
lang: de
---

Das ist ein Test mit dem ersten Zitat [@knuth1997tacp1, p. 55].
Dasselbe Zitat mit einer anderen Seite [@knuth1997tacp1, p. 70].

Then both footnotes are proper:

1. Knuth, The Art of Computer Programming, 3. Aufl. (1997), p. 55
2. Knuth, (o. Fn. 1), p. 70

So it’s not an error in the CSL file. The CSL file uses this construct to differenciate the two cases:

<text macro="autor-editor-note" suffix=", "/>
<choose>
  <if match="none" position="first">
    <group delimiter=" " prefix="(" suffix="), ">
      <text value="o. Fn."/>
      <text variable="first-reference-note-number"/>
    </group>
  </if>
  <else>
    <text variable="title" form="short" suffix=", "/>
    <text macro="edition"/>
  </else>
</choose>

This is probably a bug.

Org mode version 9.5 (release_9.5-104-g2b1fc6 @ /home/quintus/.emacs.d/org-mode/lisp/) citeproc.el at 34e66583d95a8d80fb5b9f2960f3382ca0e6d3ab

-quintus

andras-simonyi commented 2 years ago

Thanks for reporting this! I was able to reproduce the problem but the error in this case seems to be on the Org side: the citation structures passed to citeproc-el have their note-index field set to nil indicating that these citations do not occur in footnotes which is obviously an error. I will try to fix the problem in org-cite.

andras-simonyi commented 2 years ago

I think I've managed to track it down in oc-csl.el -- I'm going to send a fix to the Org mailing list shortly.

Quintus commented 2 years ago

Very nice! Thank you. I can confirm that it works now as expected (org-mode at 2e99997830c78dbf4df62be22391491fe88337f2).

-quintus