Sylvester writes: "The spec says, the first element to return a
non-empty result is used for substitution. In this case, this is the
editor macro which actually prints the editor twice!"

The citeproc-ruby behaviour seems correct, I think. Shall we amend the test?

I'll probably leave the citeproc-js code as it is (and call it a bug),
unless this comes up as an issue in a running style.



On Sat, Jan 25, 2014 at 3:05 AM, Sebastian Karcher
<[email protected]> wrote:
> In reverse order:
>
> Like Sylvester I'm confused about 3) as well and would have expected this to
> produce duplicate editors (as the editor macro by itself does).
>
> FWIW, I just tested this in my Zotero install and it doesn't actually
> produce the test result. I always get "Jane-girl Doe editor" even for books.
>
> Re 2.) We've been writing all styles assuming that the label node is
> inherited. I assume that is an omission in the specs, I'd suggest just
> adding that.
>
> Re 1) I'd go with your original hunch and not inherit anything that's
> explicitly set in the child node. If people use macros in cs:substitute,
> that's presumably precisely because they want to _prevent_ inheriting
> attributes. Otherwise they could just use cs:names. Again, making this
> explicit in the specs would be a good idea.
>
> Sebastian
>
>
>
> On Fri, Jan 24, 2014 at 10:21 AM, Sylvester Keil <[email protected]>
> wrote:
>>
>> I have finally hit upon the issue noted by Frank below and, indeed, I
>> could need a little help understanding the specification in this case.
>>
>> Here I am referring to test case:
>>
>>
>> https://bitbucket.org/bdarcus/citeproc-test/src/ab136a6aa8f2/processor-tests/humans/substitute_SuppressOrdinaryVariable.txt
>>
>> When rendering the second item we have a book with an editor and a
>> title. Because there are no translators, the editor will be rendered
>> instead using the editor macro. But this macro is tricky.
>>
>> Since we have a book in this case, we could simplify it like this:
>>
>>   <macro name="editor">
>>     <names variable="editor">
>>       <name/>
>>       <label prefix=" " form="short"/>
>>     </names>
>>     <names variable="editor">
>>       <name/>
>>       <label prefix=" "/>
>>     </names>
>>   </macro>
>>
>> Now, this presents three questions to me:
>>
>> First, how should we deal with names nodes (when used as substitutions)
>> that have child nodes? (If I am not mistaken this is the question to
>> which Frank wanted to alert us) — I do agree that this should be stated
>> explicitly in the spec. My initial approach was to not inherit anything
>> from the original names node, thinking that if style authors added a
>> node there specifically, it should always be used. But then I thought of
>> macros and realized that it is very likely that macros could be used in
>> substitutions and in this case I think it makes more sense for the
>> formatting of the nodes being substituted for always taking precedence.
>> I am undecided what makes more sense here, and just wanted to know what
>> the consesus is on this point?
>>
>> The second question I have is about the label node. The spec says this
>> in the Substitute section:
>>
>> "A shorthand version of cs:names without child elements, which inherits
>> the attributes values set on the cs:name and cs:et-al child elements of
>> the original cs:names element, may also be used."
>>
>> Does that mean that the label node is never inherited?
>>
>> But there is a third issue with this test case. When rendering Item-2 ,
>> which is a book, the editor macro looks like the one I printed above
>> (unfolding the choose node and editor-short-label macro).
>>
>> citeproc-ruby renders this as "John-boy Doe ed.John-boy Doe editor." and
>> I can't say that I find any fault there. Here is what the spec says
>> about substitution and subsequent suppression:
>>
>> "If cs:substitute contains multiple child elements, the first element to
>> return a non-empty result is used for substitution. Substituted
>> variables are suppressed in the rest of the output to
>> prevent duplication."
>>
>> I have implemented it this way: when rendering substitutions, I start
>> rendering each child. Before the rendering starts, an observer object is
>> attached to the citation item that keeps track of all variables being
>> accessed. Now, if the child renders a non-empty result, this will be
>> used as the substiution. At this point can I mark all variables that
>> were used as suppressed (they are not deleted, but marked as suppressed,
>> so that conditional tests etc. still find the values, but at the same
>> time I can make sure they will not be printed again etc.). For this
>> reason, the output above makes a lot of sense to me.
>>
>> However, the expected test result is just: "John-boy Doe ed." — but this
>> does not seem right to me. The spec says, the first element to return a
>> non-empty result is used for substitution. In this case, this is the
>> editor macro which actually prints the editor twice!
>>
>> Obviously, this is a quite complicated example, so if I've made a
>> mistake, please do point me to it. In any case, I would be very
>> interested in your opinion on this, because as it stands I am reluctant
>> to change the way citeproc-ruby handles this.
>>
>> Thanks!
>>
>> Sylvester
>>
>>
>>
>>
>>
>>
>>
>> On Sat, 2012-09-08 at 18:03 +0900, Frank Bennett wrote:
>> > While looking into a error report from Sebastian, I found that
>> > citeproc-js was not coping gracefully with nested full-form cs:names
>> > nodes.
>> >
>> > While a cs:names node without children should inherit the labels from
>> > the preceding superior cs:name node on its parent, a full-form node
>> > should (I think) completely override all superior cs:label nodes.
>> >
>> > I suspect that other CSL implementations are likely to have cleaner
>> > internals than citeproc-js, and already behave in this way; but I
>> > thought I would mention it because I was a little surprised to find
>> > such a fundamental error in code that has been in service for so long.
>> > Here is a test that covers the issue:
>> >
>> >
>> > http://bitbucket.org/bdarcus/citeproc-test/src/ab136a6aa8f2/processor-tests/humans/substitute_SuppressOrdinaryVariable.txt
>> >
>> > (If I'm wrong and other implementations are tripped up on these nested
>> > structures, it might be worth mentioning the difference in behaviour
>> > explicitly in the specification.)
>> >
>> > Frank
>> >
>> >
>> > ------------------------------------------------------------------------------
>> > Live Security Virtual Conference
>> > Exclusive live event will cover all the ways today's security and
>> > threat landscape has changed and how IT managers can respond.
>> > Discussions
>> > will include endpoint security, mobile security and the latest in
>> > malware
>> > threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
>> > _______________________________________________
>> > xbiblio-devel mailing list
>> > [email protected]
>> > https://lists.sourceforge.net/lists/listinfo/xbiblio-devel
>>
>>
>>
>> ------------------------------------------------------------------------------
>> CenturyLink Cloud: The Leader in Enterprise Cloud Services.
>> Learn Why More Businesses Are Choosing CenturyLink Cloud For
>> Critical Workloads, Development Environments & Everything In Between.
>> Get a Quote or Start a Free Trial Today.
>>
>> http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk
>>
>> _______________________________________________
>> xbiblio-devel mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/xbiblio-devel
>>
>
>
>
> --
> Sebastian Karcher
> Ph.D. Candidate
> Department of Political Science
> Northwestern University
>
> ------------------------------------------------------------------------------
> CenturyLink Cloud: The Leader in Enterprise Cloud Services.
> Learn Why More Businesses Are Choosing CenturyLink Cloud For
> Critical Workloads, Development Environments & Everything In Between.
> Get a Quote or Start a Free Trial Today.
> http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk
> _______________________________________________
> xbiblio-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/xbiblio-devel
>

------------------------------------------------------------------------------
CenturyLink Cloud: The Leader in Enterprise Cloud Services.
Learn Why More Businesses Are Choosing CenturyLink Cloud For
Critical Workloads, Development Environments & Everything In Between.
Get a Quote or Start a Free Trial Today. 
http://pubads.g.doubleclick.net/gampad/clk?id=119420431&iu=/4140/ostg.clktrk
_______________________________________________
xbiblio-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xbiblio-devel

Reply via email to