This was originally posted at https://tex.stackexchange.com/q/756102/82731 and I simplified it to the following test.
The spec of subsequent-author-substitute-rule="complete-all" says:
“complete-all” - (default), when all names of the name variable match those in the preceding bibliographic entry, the value of subsequent-author-substitute replaces the entire name list (including punctuation and terms like “et al” and “and”), except for the affixes set on the cs:names element.
In the following test, the names "Ulrich Luz et al." in the first entry do not match "Ulrich Luz" in the second entry, and thus the substitution should not happen. However, the current citeproc-js (c3a03eb) incorrectly substitutes the name in the second entry with dashes.
+ expected - actual
<div class="csl-bib-body">
<div class="csl-entry">Ulrich Luz et al.</div>
- <div class="csl-entry">---</div>
+ <div class="csl-entry">Ulrich Luz</div>
>>===== MODE =====>>
bibliography
<<===== MODE =====<<
>>===== DESCRIPTION =====>>
<https://tex.stackexchange.com/q/756102/82731>
<<===== DESCRIPTION =====<<
>>===== RESULT =====>>
<div class="csl-bib-body">
<div class="csl-entry">Ulrich Luz et al.</div>
<div class="csl-entry">Ulrich Luz</div>
</div>
<<===== RESULT =====<<
>>===== CSL =====>>
<style xmlns="http://purl.org/net/xbiblio/csl" class="note" version="1.0">
<info>
<id />
<title />
<updated>2026-03-16T15:15:16+00:00</updated>
</info>
<citation>
<layout>
<text value="dummy"/>
</layout>
</citation>
<bibliography et-al-min="3" et-al-use-first="1" subsequent-author-substitute="---" subsequent-author-substitute-rule="complete-all">
<layout>
<names variable="author"/>
</layout>
</bibliography>
</style>
<<===== CSL =====<<
>>===== INPUT =====>>
[
{
"id": "LuzEtAl_NachfolgeTRE",
"type": "entry-encyclopedia",
"author": [
{
"family": "Luz",
"given": "Ulrich"
},
{
"family": "Frank",
"given": "Karl Suso"
},
{
"family": "Riches",
"given": "John K."
},
{
"family": "Klimkeit",
"given": "Hans-Joachim"
}
]
},
{
"id": "Luz_TRE23Nachfolge",
"type": "entry-encyclopedia",
"author": [
{
"family": "Luz",
"given": "Ulrich"
}
]
}
]
<<===== INPUT =====<<
>>===== VERSION =====>>
1.0
<<===== VERSION =====<<
This was originally posted at https://tex.stackexchange.com/q/756102/82731 and I simplified it to the following test.
The spec of
subsequent-author-substitute-rule="complete-all"says:In the following test, the names "Ulrich Luz et al." in the first entry do not match "Ulrich Luz" in the second entry, and thus the substitution should not happen. However, the current
citeproc-js(c3a03eb) incorrectly substitutes the name in the second entry with dashes.