citation-style-language / schema

Citation Style Language schema
https://citationstyles.org/
MIT License
184 stars 61 forks source link

Suppress Ibid when first on page #68

Open avram opened 13 years ago

avram commented 13 years ago

There is a documented requirement for some ibid-using styles to suppress ibid (and, presumably, idem, etc.) and show an ordinary footnote when the footnote is the first on the page. This was most recently noted on the Zotero forums: http://forums.zotero.org/discussion/17812

Doing this would require changes to CSL-- I'm not sure how this would be best implemented, but the ibid suppression behaviors should be collected and standardized to be added as a new option. I don't remember for sure, but I seem to recall Frank mentioning that cite distance (and therefore citation form) in legal styles could also be affected by intervening page breaks. But I could be wrong on that.

[If I'm in the wrong forum, and this should be hashed out on XBIBLIO first, please feel free to close the issue.]

bdarcus commented 13 years ago

The problem with such a request from a CSL perspective is, what's a page to an output-format-agnostic spec (HTML has no pages), and how is a processor to know?

I do recall biblatex does some of this, so if people wanted to explore more, I'd start there.

avram commented 13 years ago

In some sense, that's for the processor and the code interfacing with the processor to determine. There are plenty of paged environments in the world, and there's no way to support this unless the CSL reflects that the style wants such a behavior.

In the familiar case of citeproc-js and Zotero, I imagine Zotero informing citeproc-js of the page position of citations-- perhaps by grouping them into something like the citation clusters that it currently uses. Such larger clusters might also prove useful for other use cases, like chapter-by-chapter endnotes, that are also currently hard to work with.

bdarcus commented 13 years ago

Fair enough. This thread from awhile back raises the issue of per-page scoping of ibidem.

http://groups.google.com/group/comp.text.tex/msg/17288db36f672a7f

I later suggested in that thread a new attribute: ibid-scope. But I think this case is a little different.

Like I said, though, biblatex is the place to look for guidance in my view. But looking through the manual [1], I can't figure out how they deal with this.

[1] see e.g. p54 http://mirrors.med.harvard.edu/ctan/macros/latex/contrib/biblatex/doc/biblatex.pdf

bdarcus commented 13 years ago

I had an email chat with biblatex author Philipp Lehman, and am reproducing his pretty definitive list of related use cases below (reformatted for markdown):

General Implementation Notes

Basically, there are two approaches to this:

  1. Provide some kind of variable/indicator (as in: first_on_page=true) for use by the citation processor. The citation processor would combine that with other indicators to choose the citation format, e.g.: if ibidem = "true" and first_on_page = "false" then (print "ibidem") else (print full citation) endif
  2. Integrate the reset mechanism into the "ibidem" indicator, i.e., the citation processor only tests for ibidem=true and it's up to the formatter to reset that condition at the beginning of a certain physical or logical unit.

You probably need a bidirectional data flow between the citation processor and the formatter in both cases.

Use Cases

Typically, things like "ibidem" or "idem" may require a reset at a certain physical or logical boundary. In addition to that, there may be other types of scoping restrictions. Some random examples drawn from real-life citation styles:

  1. Replace recurrent citations by "ibidem" unless the citation is the first one on the page, double-page spread, in the part, chapter, section, etc.
  2. When replacing recurrent author names by a dash in the list of references, suppress the dash for the first reference on the page or double-page spread. This is conceptually similar to case 1.
  3. Only use "ibidem" if it refers to the immediately preceding footnote. If there's a discursive footnote in-between two citations rendered as footnotes, restart the "ibidem" tracking. This may be combined with other restrictions such as case 1.
  4. Replace recurrent citations by a pointer to the footnote where they have been initially cited, but only if the initial citation is a stand-alone reference. If not, use a different citation format or add more information (title, year, etc.):
  5. Like 4, but with ibidem. This may also be combined with other restrictions such as 1.

There are numerous other cases along those lines. Note that you may need to deal with them even though CSL is not tied to a specific medium because:

  1. concepts like chapters or notes are very generic and not limited to works printed on paper, and
  2. a medium which does not have a certain phyiscal property may still emulate that property simply because the underlying concept is familiar and well-established. For example, a long text available in HTML may not only be divided into chapters or sections, it may even by broken up into smaller units which are pretty similar to pages as far as citations are concerned.

Case Examples

For case 2:

---------- page n ----------
Doe, John (1995), Title A, ...
--- (1998) Title B, ...
--- (2001) Title C, ...
--------- page n+1 ---------
Doe, John, (2003) Title D, ...
--- (2005) Title E, ...

For case 3:

1  Doe 1995, p. 34.
2  Ibid., p. 67.
3  A generic footnote not handled by the citation processor.
4  Doe 1995, p. 84.
5  Ibid., p. 54.

For case 4:

1  Doe, Title A, Location: Publisher, 1995.
2  Smith, Title A, Location: Publisher, 1998 and Smith, Title B,
  Location: Publisher, 1998
3  Doe, see note 1.
4  Smith, Title A, see note 2.

For case 5:

1  Doe, Title A, Location: Publisher, 1995.
2  Ibid., p. 45.
3  Smith, Title A, Location: Publisher, 1998 and Smith, Title B,
  Location: Publisher, 1998
4  Smith, Title A, p. 56.
denismaier commented 4 years ago

The general idea is good, yes.

I am not sure this can be resolved in CSL alone. The necessary tracking mechanism most likely involves some extension to the current API as the processor must know about the page numbers somehow. So that's perhaps also an API question. Also, nothing we can deal with now.

Perhaps something for CSL 2.0, and an API question.

bwiernik commented 4 years ago

There isn't really a way for this to be handled at all in Word processors like Word, Google Docs, or LibreOffice. As far as I understand Adomas's comments on this issue, these programs don't provide an interface to determine where an automatically-inserted page boundary is. So, short of providing a manual switch for users to specify that the citation should be treated as subsequent instead of ibid, then I am not sure there is anything that CSL can do here.

If we do want to implement something, allowing user override of position to force subsequent or initial formatting would be an option, but this may be fairly messy in terms of manual upkeep of formatting in a document.

bdarcus commented 4 years ago

Maybe this is an example of a request we reject?

If people need this functionality, they should use biblatex.

bwiernik commented 4 years ago

I think we can reject this. This behavior is the provenance of implementing clients integrating with the document-creation programs. If a implementing client has a way to determine if the citation is the first on a page, I think they could manipulate citations to use subsequent or initial position behavior within the current spec behavior. But I think that is outside the scope of CSL.

denismaier commented 4 years ago

There isn't really a way for this to be handled at all in Word processors like Word, Google Docs, or LibreOffice. As far as I understand Adomas's comments on this issue, these programs don't provide an interface to determine where an automatically-inserted page boundary is. So, short of providing a manual switch for users to specify that the citation should be treated as subsequent instead of ibid, then I am not sure there is anything that CSL can do here.

I don't think that's correct. Citavi has this feature in recent versions. So it must be possible somehow.

I agree with you though that this is more a feature request for client applications. I guess the CSL changes would we rather trivial. Perhaps a new attribute ibid-reset, force-subsequent or something similar to be set at the citation element. Or a new condition like <if position=ibid-not-first-on-page>. But for this to work information about page numbers must somehow be delivered to the citeproc.

So, my take on this would be to wait if there is some demand from client applications. I wouldn't want to reject it outright.

denismaier commented 4 years ago

If we do want to implement something, allowing user override of position to force subsequent or initial formatting would be an option, but this may be fairly messy in terms of manual upkeep of formatting in a document.

That's actually an interesting idea. MLA for example has the following requirement: if you cite from one source more than one time in a row, use a short citation first and then only page numbers. But in a new paragraph use a short citation again. Currently, mla.csl does not support this. You are expected to just add those page numbers on recurring citations manually. There are two problems with this approach:

  1. You cannot switch citation styles easily.
  2. Things break if you add citations manually (like the Bible).

I think APA and CMoS author-date have similar rules.

bwiernik commented 4 years ago

@adomasven would need to comment more about Word's limitations for detecting page and paragraph breaks here. It's also possible that this is a feature introduced into Word's newer Office Add-in system, rather than the older system that Zotero uses (and that Mendeley's older citation interface used).

I suppose that we could allow user's to enter citations and program into the style to just show the page number when `position="ibid-with-locator", permitting a user-override for a new paragraph. But that is potentially asking for a lot of manual configuration of references and potentially has some potentially surprising and frustrating hidden behavior.

adomasven commented 4 years ago

We could maybe get the page info on LibreOffice and Word, but I don't think it's a very good idea to perform any custom formatting of citations based on such document-specific info. Aside from things like margin adjustments making existing citations wrong until a refresh, there's also the fact that even minor changes to any text (citation or not) at the beginning of a long document can have profound layout effects at the end of it (as the change cascades through the pages, pushing out tables, figures, etc. out of their original positions), which could also lead to a really bad situation where multiple citeproc passes would be required over the document as you update the text and layout shifts ever so slightly, reintroducing or removing the need to suppress ibids. Citation updates and document scans are slow with Zotero and a significant amount of time has been spent in trying to reduce how much we do that to improve integration speed.

Citavi implementation is probably not safe from layout issues fully, and I have not thoroughly examined their plugin, but as far as I've looked, they have a much tighter integration with Word than Zotero with any of its word processors. Citavi is probably monitoring many more document changes as the document is being worked with and can rectify any such things faster and more easily. Zotero does not have that sort of capabilities, as a sacrifice for its generality (working in with LO, Google Docs and others).

bwiernik commented 4 years ago

We could implement this in a straightforward way by expanding position="near-note" to be usable with author-date citations and adding near-note-distance="paragraph", near-note-distance="page", and near-note-distance="section". That wouldn't require manual intervention on users' parts, and implementing clients could choose to use them or not (e.g., citeproc-pandoc probably could, maybe Mendeley could in their new Mendeley Cite interface).

bdarcus commented 4 years ago

This latest suggestion, to be clear, involves no new attributes, but simply a couple of attribute values; correct?

Obviously this would be a good path forward, if we did support it.

bwiernik commented 4 years ago

Yes. I don't see a downside to adding attribute values.

denismaier commented 4 years ago

We could implement this in a straightforward way by expanding position="near-note" to be usable with author-date citations and adding near-note-distance="paragraph", near-note-distance="page", and near-note-distance="section". That wouldn't require manual intervention on users' parts, and implementing clients could choose to use them or not (e.g., citeproc-pandoc probably could, maybe Mendeley could in their new Mendeley Cite interface).

Good suggestion. Pandoc will probably be able to use near-note-distance="paragraph", and near-note-distance="section", but not near-note-distance="page". Don't know about Mendeley.

denismaier commented 4 years ago

So, is this still rejected or shall we move this back to under discussion?

bwiernik commented 4 years ago

Let’s put it back to discussion maybe

bdarcus commented 4 years ago

If anyone feels strongly about it, put it back in discussion?

denismaier commented 4 years ago

I really like @bwiernik's suggestion. We'd have to work out the details of course, but I'd be really in favor of adding this. Objections anywhere?