In part as a result of earlier comments from Andrea about his
implementation, it occurs to me we could drop the substitute element
in favor of the generic cs:choose IF we agree on one simple rule: a
variable may only print once?
The result would be more consistent and simpler.
Is this worth considering? Any arguments against?
guess what I’m wanting to ask next is … whether the ability to
print variables twice, if the first one has no names element in its
ancestry, is definitely necessary?
Such, such were the joys.
In citeproc-js, I’ve already adopted one-time-only suppression as a
general principle, regardless of where the first rendering element is
located. This general suppression behavior was the topic of an
exchange with Simon a couple of weeks ago, in connection with Zotero
deployment. He noticed the difference in behavior, I asked for an
example where multiple renderings are needed, and he provided one.
***** Simon *****
Well, one case is:
from APA style. I’m not sure if I can think of any cases where text
variables need to be printed twice, but date variables certainly
***** /Simon *****
I’ve kept the general block in place, but made date variables a
general exception to it; choose statements and substitute work in
exactly the same way (in fact they’re exactly the same under the
At the moment, the only foundation for this design choice is my casual
bystander’s assumption that it won’t hurt anything. It’s probably a
good idea to let citeproc-js run interference for you on this one, and
proceed with remangling all of the styles in the repository only if no
problems arise in the wild.