citation-style-language / schema

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

Limiter for cs:name: suppress-min #30

Closed bdarcus closed 13 years ago

bdarcus commented 13 years ago

Another user has asked for a way of truncating a name variable without applying et al. In his case, the first author should be listed at the front of the citation, but only for works that don't have lots of authors. The leading label does not affect the full list of authors, which appears later in the citation.

http://forums.zotero.org/discussion/9141?page=1#Item_6

This can be addressed fairly simply with an end-name attribute to limit the number of authors that are listed, and a max-name attribute, to quash rendering if the varaible contains over a certain number of authors. Both of these options should specially permit the name variable to be used again. Accordingly, they should be available only on the name element itself, and not on style, bibliography, or citation.

There is running code for this in citeproc-js. A schema patch is attached. The CSL used for testing the code validates against the patched schema.


bdarcus commented 13 years ago

Purely aesthetic change here. Rintze has floated proposals as assigned to "nobody", changing this ticket to conform.


Original Comment By: Frank Bennett
bdarcus commented 13 years ago

Original Comment By: Frank Bennett
bdarcus commented 13 years ago

Rintze suggested changing the names of the attributes to make their respective functions more clear. He also suggested that counts should start from 1 rather than 0 for consistency. I've adopted his suggestions in the code, and in the attached "rev1" schema patch.


Original Comment By: Frank Bennett
bdarcus commented 13 years ago

Not having read through all this, if the requirement is really "a way of truncating a name variable without applying et al,"isn't the simplest solution to allow the et al substitution term to be empty?


Original Comment By: Bruce D'Arcus
bdarcus commented 13 years ago

That might eliminate the need for truncate-min, but not for suppress-min. Right, Frank? If we take this alternative route, we could either:

1) decide that when the term attribute on cs:et-al isn't set, no et-al substitution term will be used. If cs:et-al isn't used, the term should probably still default to "et-al".

## term to use for et al substitution; if the attribute is not set no

substitution term is used

attribute term { "et-al" | "and others" }?,

2) explicitly introduce an empty term (which would have to be added to csl- terms.rnc) as the third possible value of the term-attribute of cs:et-al (in this case the default term could remain "et-al")

## term to use for et al substitution; "et-al" is default

attribute term { "et-al" | "and others" | "empty" }?,

I think option 1 is the cleanest.


Original Comment By: Rintze Zelle
bdarcus commented 13 years ago

It's taking me awhile to catch up with possibilities after the recent changes to the cs:name options. Agree that truncate-min is not necessary. Am now working up modified tests, which have turned up bugs in the way the term= attribute is handled on the et-al element -- which is a very good thing to know about now, rather than later.

When I get things fixed and have something to look at, I'll post again.


Original Comment By: Frank Bennett
bdarcus commented 13 years ago

Original Comment By: Frank Bennett
bdarcus commented 13 years ago

Revised proposal ...

To add only one option, suppress-min, which operates as described in the attached rev2 patch. Empty terms can be set of et-al, and et-al params can be set on a macro, so the truncate-min attribute is not needed, as both Bruce and Rintze have pointed out.

Tests are here:

http://bitbucket.org/fbennett/citeproc- js/src/tip/std/humans/name_StartAndAtOrMoreThanMax.txt http://bitbucket.org/fbennett/citeproc- js/src/tip/std/humans/name_StartAndLessThanMax.txt

In a peripherally related item, it came home to me during discussions over this that suppression of second-renderings of a variable should only occur for variables rendered through a substitute element. I have fixed this in the citeproc-js processor. This makes it unnecessary for this attribute to quash substitution suppression. Even explaining what that means, with all the double negatives that are packed into it, is a pain, so I have dropped it from the code, and from the comment in the schema patch.

js/src/tip/std/humans/name_StartAndAtOrMoreThanMax.txt

js/src/tip/std/humans/name_StartAndLessThanMax.txt


Original Comment By: Frank Bennett
bdarcus commented 13 years ago

Of course, WRT to my previous comment, option 3 (an ugly one) is to not change anything to CSL, but abuse the "and others"-term and set it to an empty string. The biggest problem here is that it is not currently possible to redefine a term for all locales (perhaps we should allow this anyway, e.g., if a locale element in a style lacks a xml:lang attribute, maybe it should affect all locales?).


Original Comment By: Rintze Zelle
bdarcus commented 13 years ago

Using a locale element with no xml:lang attribute to lay down locale-wide defaults of specific values is (a good idea and) a separate issue, so I'll open a separate ticket for it.


Original Comment By: Frank Bennett
bdarcus commented 13 years ago

The last time I checked, the 1.0 tickets were almost closed. Now we've got a bunch of them again, and some of these are new feature requests (like this one). I have to say I'm inclined to reject this.


Original Comment By: Bruce D'Arcus
bdarcus commented 13 years ago

Pushing this item to 1.1.


Original Comment By: Frank Bennett
bdarcus commented 13 years ago

The original use case can be addressed implicitly in a processor, and citeproc-js implements behavior that would suffice. Would have no complaints if this were pushed to "wontfix".


Original Comment By: Frank Bennett
fbennett commented 13 years ago

Closing this ticket.