Hmm. A consistent rule would be then: “A variable rendering in the same form is suppressed. For the purposes of suppression, a title variable rendered with form=“full” is considered to be match all of form=“full”, form=“main”, and form=“sub”,
That would cover both rendering both long and short, as well as handle main+sub.
I think that makes sense. While form=“main” and form=“sub” are the constituent parts of form=“full”, form=“short” is not necessarily contained in form=“full”. title-short or title form=“short” should be treated as a variable in its own right.
Yeah, that makes sense as a general rule.
Will there still be cases where force="true" could be needed? Or would it hurt adding it anyway, just in case…?
I would quite strongly encourage you to add it: it’s not going to add materially to the cost of either parsing CSL or checking whether a variable should be rendered, and the logic here is getting confused enough that I wouldn’t be surprised if someone, sometime, needs a variable to be printed in a situation where left to itself the processor wouldn’t!
I don’t care hugely but (a) isn’t that potentially confusing (because suppression in a sense happens when the variable is printed for the first time not later, but I may be thinking this through from the processor point of view rather than the user’s) and (b) isn’t a positive statement clearer? Agree that “force” is computerspeak and best avoided. What about always-output="true" or repeat-output="true" or repeatable="true"?