Skip to content

Commit aa3124e

Browse files
pfranktestingclaude
andcommitted
Note alphabetical order in Citation multiple sources wording
Its expected-text/how-to-fix pointed only at the semicolon separator; added a note that sources must also be alphabetical, since that's now checked separately by Citation alphabetical order (v1.4.3). Also fixed its example, which was itself out of order: (Smith, 2020; Jones, 2021) -> (Jones, 2021; Smith, 2020). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
1 parent ec18022 commit aa3124e

3 files changed

Lines changed: 7 additions & 3 deletions

File tree

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@
88
- **Citation title format** (APA 8.14) — For a no-author citation, flags when the title's in-text formatting (italics vs. quotation marks) doesn't match how the title is formatted in its reference entry. A consistency check, not a correctness check — it never asserts which formatting is APA-correct, only that citation and reference agree; the independent "Reference italics" check flags a wrongly-italicized reference on its own. Only emitted when the paper contains at least one no-author citation with a resolvable reference match.
99
- **Second regression fixture**`scripts/test-citation-regression.js` now also asserts against `samples/testingperfect.docx` (a clean, well-formed paper), confirming neither new check fires a false positive when there's nothing to flag. The two fixtures' check sets are compared independently since checks that return null when inapplicable mean the sets aren't identical.
1010

11+
### Changed
12+
13+
- **"Citation multiple sources" now mentions alphabetical order** — Its expected-text/how-to-fix wording pointed only at the semicolon separator; added a note that sources must also appear in alphabetical order by author, since that's now checked separately by "Citation alphabetical order." Also fixed its example, which was itself out of alphabetical order: `(Smith, 2020; Jones, 2021)``(Jones, 2021; Smith, 2020)`.
14+
1115
### Notes
1216

1317
- `parseReferenceEntry` assumes a reference's title follows the year ("Author. (Year). Title."), which breaks for a no-author reference correctly formatted as "Title. Source. (Year)." — the title sits where the author would be. "Citation title format" works around this by reading the pre-year text `extractReferenceKey` already extracts, rather than fixing `parseReferenceEntry` itself (same reasoning as v1.4.2: avoid touching shared parsing logic with wide blast radius outside this pass's scope).

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,7 @@ See the [LICENSE](LICENSE) file for details.
147147
## Changelog
148148

149149
**v1.4.3** — July 24, 2026
150-
Added two new checks: Citation alphabetical order (APA 8.12 — flags multi-source parentheticals not sorted alphabetically by author, and shows the corrected order) and Citation title format (APA 8.14 — flags a no-author citation whose italics/quotation-mark formatting doesn't match its reference entry). Both are only emitted when the paper contains an applicable case. Extended the regression fixture to also cover `testingperfect.docx`, confirming neither new check produces a false positive on a clean paper.
150+
Added two new checks: Citation alphabetical order (APA 8.12 — flags multi-source parentheticals not sorted alphabetically by author, and shows the corrected order) and Citation title format (APA 8.14 — flags a no-author citation whose italics/quotation-mark formatting doesn't match its reference entry). Both are only emitted when the paper contains an applicable case. Extended the regression fixture to also cover `testingperfect.docx`, confirming neither new check produces a false positive on a clean paper. Updated "Citation multiple sources" to note that sources must also be alphabetical, and fixed its example, which was itself out of order.
151151

152152
**v1.4.2** — July 24, 2026
153153
Fixed citation/reference matching false positives: canonicalized name matching (diacritics, quotes, title-based keys, "et al." variants) so a malformed citation or a no-author title citation no longer produces a spurious unmatched/uncited result. Added an anchored fallback for references missing parentheses around the year, and fixed a reference-segmentation bug where such entries were silently merged into the previous entry. Added a year-mismatch message to Unmatched citations. Split Reference hanging indent into that check plus a new Reference completeness check. Added stable per-category issue numbering to the report. Added a regression fixture (wired into `npm test`) that locks in exact check counts for a sample paper and re-runs the pipeline 10x to guard determinism.

src/checks/checkApaFormatting.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -729,7 +729,7 @@ function getHowToFix(rule) {
729729

730730
if (rule === "Citation multiple sources") {
731731
return [
732-
"When citing multiple sources in one parenthetical, separate them with a semicolon: (Smith, 2020; Jones, 2021).",
732+
"When citing multiple sources in one parenthetical, separate them with a semicolon: (Jones, 2021; Smith, 2020).",
733733
"List multiple sources in alphabetical order by the first author's last name.",
734734
];
735735
}
@@ -3594,7 +3594,7 @@ function checkCitationPageFormat(extracted, referencesHeading) {
35943594

35953595
function checkCitationMultipleSources(extracted, referencesHeading) {
35963596
const rule = "Citation multiple sources";
3597-
const expected = "When citing multiple sources in one parenthetical, separate them with semicolons: (Smith, 2020; Jones, 2021).";
3597+
const expected = "When citing multiple sources in one parenthetical, separate them with semicolons: (Jones, 2021; Smith, 2020). They should also appear in alphabetical order by author.";
35983598
const bodyText = getBodyText(extracted, referencesHeading);
35993599
const issues = [];
36003600

0 commit comments

Comments
 (0)