summaryrefslogtreecommitdiff
path: root/biblio/citation-style-language/apa.csl
diff options
context:
space:
mode:
Diffstat (limited to 'biblio/citation-style-language/apa.csl')
-rw-r--r--biblio/citation-style-language/apa.csl480
1 files changed, 321 insertions, 159 deletions
diff --git a/biblio/citation-style-language/apa.csl b/biblio/citation-style-language/apa.csl
index 3734d8d76e..ad86a91b7f 100644
--- a/biblio/citation-style-language/apa.csl
+++ b/biblio/citation-style-language/apa.csl
@@ -14,7 +14,7 @@
<category citation-format="author-date"/>
<category field="psychology"/>
<category field="generic-base"/>
- <updated>2023-07-16T18:56:49-04:00</updated>
+ <updated>2024-02-12T22:12:55-05:00</updated>
<rights license="http://creativecommons.org/licenses/by-sa/3.0/">This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License</rights>
</info>
<locale xml:lang="en">
@@ -40,6 +40,8 @@
<multiple>issues</multiple>
</term>
<term name="software">computer software</term>
+ <term name="at" form="long">before the</term>
+ <term name="hearing" form="verb">testimony of</term>
</terms>
</locale>
<locale xml:lang="da">
@@ -176,7 +178,7 @@
<!-- TODO: New creator roles -->
<!-- TODO: Add new item types -->
<choose>
- <if type="bill legal_case legislation treaty" match="any">
+ <if type="bill hearing legal_case legislation regulation treaty" match="any">
<text macro="title-intext"/>
</if>
<else-if type="interview personal_communication" match="any">
@@ -228,6 +230,16 @@
</else>
</choose>
</macro>
+ <macro name="author-sort">
+ <choose>
+ <if type="bill hearing legal_case legislation regulation treaty" match="any">
+ <text macro="title-legal"/>
+ </if>
+ <else>
+ <text macro="author-bib"/>
+ </else>
+ </choose>
+ </macro>
<macro name="date-bib">
<!-- TODO: Add new item types -->
<group delimiter=" " prefix="(" suffix=")">
@@ -239,32 +251,34 @@
<group>
<choose>
<if variable="issued">
- <date variable="issued">
- <date-part name="year"/>
- </date>
- <text variable="year-suffix"/>
- <choose>
- <if type="article-magazine article-newspaper broadcast interview motion_picture pamphlet personal_communication post post-weblog song speech webpage" match="any">
- <!-- Many video and audio examples in manual give full dates. Err on the side of too much information. -->
- <date variable="issued">
- <date-part prefix=", " name="month"/>
- <date-part prefix=" " name="day"/>
- </date>
- </if>
- <else-if type="paper-conference">
- <!-- Capture 'speech' stored as 'paper-conference' -->
- <choose>
- <if variable="collection-editor editor editorial-director issue page volume" match="none">
- <date variable="issued">
- <date-part prefix=", " name="month"/>
- <date-part prefix=" " name="day"/>
- </date>
- </if>
- </choose>
- </else-if>
- <!-- Only year: article article-journal book chapter entry entry-dictionary entry-encyclopedia dataset figure graphic
- manuscript map musical_score paper-conference[published] patent report review review-book thesis -->
- </choose>
+ <group delimiter=", ">
+ <group>
+ <date variable="issued" date-parts="year" form="numeric"/>
+ <text variable="year-suffix"/>
+ </group>
+ <choose>
+ <if type="article-magazine article-newspaper broadcast interview motion_picture pamphlet personal_communication post post-weblog song speech webpage" match="any">
+ <!-- Many video and audio examples in manual give full dates. Err on the side of too much information. -->
+ <date variable="issued">
+ <date-part name="month"/>
+ <date-part name="day" prefix=" "/>
+ </date>
+ </if>
+ <else-if type="paper-conference">
+ <!-- Capture 'speech' stored as 'paper-conference' -->
+ <choose>
+ <if variable="collection-editor editor editorial-director issue page volume" match="none">
+ <date variable="issued">
+ <date-part name="month"/>
+ <date-part name="day" prefix=" "/>
+ </date>
+ </if>
+ </choose>
+ </else-if>
+ <!-- Only year: article article-journal book chapter entry entry-dictionary entry-encyclopedia dataset figure graphic
+ manuscript map musical_score paper-conference[published] patent report review review-book thesis -->
+ </choose>
+ </group>
</if>
<else-if variable="status">
<group>
@@ -281,6 +295,35 @@
</group>
</group>
</macro>
+ <macro name="date-sort">
+ <choose>
+ <if type="article article-journal book chapter entry entry-dictionary entry-encyclopedia dataset figure graphic manuscript map musical_score patent report review review-book thesis" match="any">
+ <date variable="issued" date-parts="year" form="numeric"/>
+ </if>
+ <else-if type="paper-conference">
+ <!-- Capture 'speech' stored as 'paper-conference' -->
+ <choose>
+ <if variable="collection-editor editor editorial-director issue page volume" match="any">
+ <date variable="issued" date-parts="year" form="numeric"/>
+ </if>
+ <else>
+ <date variable="issued">
+ <date-part name="year" form="long"/>
+ <date-part name="month" form="numeric-leading-zeros"/>
+ <date-part name="day" form="numeric-leading-zeros"/>
+ </date>
+ </else>
+ </choose>
+ </else-if>
+ <else>
+ <date variable="issued">
+ <date-part name="year" form="long"/>
+ <date-part name="month" form="numeric-leading-zeros"/>
+ <date-part name="day" form="numeric-leading-zeros"/>
+ </date>
+ </else>
+ </choose>
+ </macro>
<macro name="date-sort-group">
<!-- APA sorts 1. no-date items, 2. items with dates, 3. in-press (status) items -->
<choose>
@@ -366,10 +409,22 @@
</group>
</if>
<else>
- <group delimiter=" ">
- <text macro="bracketed"/>
- <text macro="parenthetical"/>
- </group>
+ <choose>
+ <if type="bill report" match="any">
+ <!-- Bills, resolutions, and congressional reports are not italicized and substitute bill number if no title. -->
+ <!-- Can't distinguish congressional reports from other reports,
+ but giving the genre and number seems fine for other reports too. -->
+ <text macro="number"/>
+ <text macro="bracketed"/>
+ <text macro="parenthetical"/>
+ </if>
+ <else>
+ <group delimiter=" ">
+ <text macro="bracketed"/>
+ <text macro="parenthetical"/>
+ </group>
+ </else>
+ </choose>
</else>
</choose>
</macro>
@@ -433,15 +488,10 @@
<macro name="title-intext">
<!-- TODO: Add new item types -->
<choose>
- <if variable="title" match="none">
- <text macro="bracketed-intext" prefix="[" suffix="]"/>
- </if>
- <else-if type="hearing">
- <!-- Hearings are italicized -->
- <text variable="title" form="short" font-style="italic" text-case="title"/>
- </else-if>
- <else-if type="bill">
- <!-- Bills are not italicized and substitute bill number if no title. -->
+ <if type="bill report">
+ <!-- Bills, resolutions, and congressional reports are not italicized and substitute bill number if no title. -->
+ <!-- Can't distinguish congressional reports from other reports,
+ but giving the genre and number seems fine for other reports too. -->
<choose>
<if variable="title">
<text variable="title" form="short" text-case="title"/>
@@ -452,7 +502,7 @@
<group delimiter=" ">
<choose>
<if variable="chapter-number container-title" match="none">
- <label variable="number" form="short"/>
+ <label variable="number" form="short" text-case="capitalize-first"/>
</if>
</choose>
<text variable="number"/>
@@ -460,25 +510,36 @@
</group>
</else>
</choose>
- </else-if>
- <else-if type="legal_case" match="any">
- <!-- Cases are italicized -->
- <text variable="title" font-style="italic"/>
- </else-if>
- <else-if type="legislation treaty" match="any">
- <!-- Legislation and treaties not italicized or quoted -->
- <text variable="title" form="short" text-case="title"/>
- </else-if>
- <else-if type="post webpage" match="any">
- <!-- Webpages are always italicized -->
- <text variable="title" form="short" font-style="italic" text-case="title"/>
- </else-if>
- <else-if variable="container-title" match="any">
- <!-- Other types are italicized or quoted based on presence of container-title. As in title macro. -->
- <text variable="title" form="short" quotes="true" text-case="title"/>
- </else-if>
+ </if>
<else>
- <text variable="title" form="short" font-style="italic" text-case="title"/>
+ <choose>
+ <if variable="title" match="none">
+ <text macro="bracketed-intext"/>
+ </if>
+ <else-if type="hearing">
+ <!-- Hearings are italicized -->
+ <text variable="title" form="short" font-style="italic" text-case="title"/>
+ </else-if>
+ <else-if type="legal_case" match="any">
+ <!-- Cases are italicized -->
+ <text variable="title" font-style="italic"/>
+ </else-if>
+ <else-if type="legislation regulation treaty" match="any">
+ <!-- Legislation, regulations, and treaties not italicized or quoted -->
+ <text variable="title" form="short" text-case="title"/>
+ </else-if>
+ <else-if type="post webpage" match="any">
+ <!-- Webpages are always italicized -->
+ <text variable="title" form="short" font-style="italic" text-case="title"/>
+ </else-if>
+ <else-if variable="container-title" match="any">
+ <!-- Other types are italicized or quoted based on presence of container-title. As in title macro. -->
+ <text variable="title" form="short" quotes="true" text-case="title"/>
+ </else-if>
+ <else>
+ <text variable="title" form="short" font-style="italic" text-case="title"/>
+ </else>
+ </choose>
</else>
</choose>
</macro>
@@ -514,6 +575,30 @@
<text macro="locators-booklike"/>
</group>
</else-if>
+ <else-if type="report" match="any">
+ <choose>
+ <if variable="title" match="none">
+ <!-- If there is no title, then genre and number are already printed as the title. -->
+ <group delimiter="; ">
+ <text macro="secondary-contributors"/>
+ <text macro="database-location"/>
+ <text macro="locators-booklike"/>
+ </group>
+ </if>
+ <!-- If the report is a chapter in a larger report, then most parenthetical information is printed after the container. -->
+ <else-if variable="container-title">
+ <text macro="secondary-contributors"/>
+ </else-if>
+ <else>
+ <group delimiter="; ">
+ <text macro="secondary-contributors"/>
+ <text macro="database-location"/>
+ <text macro="number"/>
+ <text macro="locators-booklike"/>
+ </group>
+ </else>
+ </choose>
+ </else-if>
<else-if variable="container-title">
<group delimiter="; ">
<text macro="secondary-contributors"/>
@@ -974,15 +1059,10 @@
<group delimiter=", ">
<group delimiter=" ">
<text variable="genre" text-case="title"/>
- <choose>
- <if is-numeric="number">
- <label variable="number" form="short" text-case="capitalize-first"/>
- <text variable="number"/>
- </if>
- <else>
- <text variable="number"/>
- </else>
- </choose>
+ <group delimiter=" ">
+ <label variable="number" form="short" text-case="capitalize-first"/>
+ <text variable="number"/>
+ </group>
</group>
<choose>
<if type="thesis">
@@ -1427,62 +1507,83 @@
</macro>
<!-- Legal citations have their own rules -->
<macro name="legal-cites">
- <!-- TODO: Add new item types -->
+ <!-- `treaty`: for treaties -->
+ <!-- `legal_case`: for all legal and court cases -->
+ <!-- `bill`: for bills, resolutions, federal reports -->
+ <!-- `hearing`: TODO for hearings and testimony -->
+ <!-- `legislation`: for statutes, constitutional items, and charters -->
+ <!-- `regulation`: TODO codified regulations, uncodified regulations, executive orders -->
+ <group delimiter=" ">
+ <choose>
+ <if type="treaty">
+ <group delimiter=", " suffix=".">
+ <!-- APA generally defers to Bluebook for legal citations, but diverges without
+ explanation for treaty items. We follow the Bluebook format that was used
+ in APA 6th ed. -->
+ <!-- APA manual omits treaty parties/authors, but per Bluebook
+ they should be included at least for bilateral treaties. -->
+ <names variable="author">
+ <name initialize-with="." form="short" delimiter="-"/>
+ </names>
+ <text macro="date-legal"/>
+ <!-- APA manual omits treaty source/report called for by Bluebook in favor of just URL.
+ Both are included here, following the APA style used for all other item types
+ to end the reference with a period, then give the URL afterward. -->
+ <text macro="container-legal"/>
+ </group>
+ </if>
+ <else>
+ <group delimiter=" " suffix=".">
+ <group delimiter=", ">
+ <text macro="title-legal"/>
+ <text macro="container-legal"/>
+ </group>
+ <text macro="date-legal"/>
+ <text macro="parenthetical-legal"/>
+ </group>
+ </else>
+ </choose>
+ <text variable="references"/>
+ <text macro="access"/>
+ </group>
+ </macro>
+ <macro name="title-legal">
<choose>
- <if type="treaty">
- <!-- APA generally defers to Bluebook for legal citations, but diverges without
- explanation for treaty items. The Bluebook format that was used in APA 6th
- ed. is used here. -->
- <group delimiter=", ">
- <text variable="title" text-case="title"/>
- <names variable="author">
- <name initialize-with="." form="short" delimiter="-"/>
- </names>
- <text macro="date-legal"/>
- <text macro="container-legal"/>
- <text macro="access"/>
- </group>
+ <if type="bill legal_case legislation regulation treaty" match="any">
+ <text variable="title" text-case="title"/>
</if>
- <else>
- <!-- For `bill`: currently designed to handle bills, resolutions, federal reports. -->
- <!-- For `legislation`: currently designed to handle statutes, codified regulations, executive orders. -->
- <group delimiter=". ">
- <group delimiter=", ">
- <choose>
- <if type="bill legal_case legislation" match="any">
- <text variable="title"/>
- </if>
- <else-if type="hearing">
- <text variable="title" font-style="italic"/>
- </else-if>
- </choose>
+ <else-if type="hearing">
+ <!-- APA uses a comma delimiter and omits "hearing before the" for hearings with testimony,
+ but follows Bluebook rules (colon delimiter, prefix before the committee name) for
+ references to the whole hearing. We simply follow the Bluebook rules for both, but
+ use APA style capitalization (not capitalizing "Before" or the title of the hearing). -->
+ <group delimiter=": " font-style="italic">
+ <text variable="title" text-case="capitalize-first"/>
+ <group delimiter=" ">
+ <text term="hearing" form="long" text-case="capitalize-first"/>
<group delimiter=" ">
- <text macro="container-legal"/>
- <text macro="date-legal"/>
- <choose>
- <if type="hearing">
- <names variable="author" prefix="(testimony of " suffix=")">
- <!-- TODO: Localize this with the hearing term. -->
- <name and="symbol" delimiter=", "/>
- </names>
- </if>
- <else-if type="bill legislation" match="any">
- <!-- `legislation`: For uncodified regulations, assume future code section is in status. -->
- <text variable="status" prefix="(" suffix=")"/>
- </else-if>
- </choose>
+ <group delimiter=" ">
+ <!-- APA manual omits the bill number, but it should be included per Bluebook if relevant -->
+ <text term="on"/>
+ <text variable="number"/>
+ </group>
+ <group delimiter=" ">
+ <!-- Use the `at` term to hold "before the" -->
+ <text term="at" form="long"/>
+ <text variable="section"/>
+ </group>
</group>
- <text variable="references"/>
</group>
- <text macro="access"/>
</group>
- </else>
+ </else-if>
</choose>
</macro>
<macro name="date-legal">
- <!-- TODO: Add new item types -->
<choose>
- <if type="legal_case">
+ <if type="treaty">
+ <date variable="issued" form="text"/>
+ </if>
+ <else-if type="legal_case">
<group prefix="(" suffix=")" delimiter=" ">
<text variable="authority"/>
<choose>
@@ -1491,12 +1592,14 @@
<date variable="issued" form="numeric" date-parts="year"/>
</if>
<else>
+ <!-- APA manual doesn't include examples of cases not yet
+ published in a reporter, but this is Bluebook style. -->
<date variable="issued" form="text"/>
</else>
</choose>
</group>
- </if>
- <else-if type="bill legislation hearing" match="any">
+ </else-if>
+ <else-if type="bill hearing legislation regulation" match="any">
<group prefix="(" suffix=")" delimiter=" ">
<group delimiter=" ">
<date variable="original-date">
@@ -1504,21 +1607,46 @@
</date>
<text term="and" form="symbol"/>
</group>
- <date variable="issued">
- <date-part name="year"/>
- </date>
+ <choose>
+ <if variable="issued">
+ <!-- APA manual includes "rev." before the revision year,
+ but this isn't part of the Bluebook rules. -->
+ <date variable="issued">
+ <date-part name="year"/>
+ </date>
+ </if>
+ <else>
+ <!-- Show proposal date for uncodified regualtions.
+ Assume date is entered literally ala "proposed May 23, 2016".
+ TODO: Add 'proposed' term here if that becomes available -->
+ <date variable="submitted" form="text"/>
+ </else>
+ </choose>
</group>
</else-if>
- <else-if type="treaty">
- <date variable="issued" form="text"/>
- </else-if>
</choose>
</macro>
<macro name="container-legal">
- <!-- TODO: Add new item types -->
<!-- Expect legal item container-titles to be stored in short form -->
<choose>
- <if type="legal_case">
+ <if type="treaty">
+ <group delimiter=" ">
+ <number variable="volume"/>
+ <text variable="container-title"/>
+ <choose>
+ <if variable="page page-first" match="any">
+ <text variable="page-first"/>
+ </if>
+ <else>
+ <group delimiter=" ">
+ <label variable="number" form="short" text-case="capitalize-first"/>
+ <text variable="number"/>
+ </group>
+ </else>
+ </choose>
+ </group>
+ </if>
+ <else-if type="legal_case">
<group delimiter=" ">
<choose>
<if variable="container-title">
@@ -1541,32 +1669,34 @@
</if>
<else>
<group delimiter=" ">
- <choose>
- <if is-numeric="number">
- <label variable="number" form="short" text-case="capitalize-first"/>
- </if>
- </choose>
+ <label variable="number" form="short" text-case="capitalize-first"/>
<text variable="number"/>
</group>
</else>
</choose>
</group>
- </if>
+ </else-if>
<else-if type="bill">
<group delimiter=", ">
<group delimiter=" ">
<text variable="genre"/>
<group delimiter=" ">
<choose>
+ <!-- TODO: What was the logic for this? Do we still need this? -->
+ <!-- If there is no session number or code/record title, print number.
+ Is that trying to capture congressional reports/documents? -->
<if variable="chapter-number container-title" match="none">
- <label variable="number" form="short"/>
+ <label variable="number" form="short" text-case="capitalize-first"/>
</if>
</choose>
<text variable="number"/>
</group>
</group>
- <text variable="authority"/>
- <text variable="chapter-number"/>
+ <group delimiter=" ">
+ <text variable="authority"/>
+ <!-- 'session' is `chapter-number` -->
+ <text variable="chapter-number"/>
+ </group>
<group delimiter=" ">
<text variable="volume"/>
<text variable="container-title"/>
@@ -1574,10 +1704,17 @@
</group>
</group>
</else-if>
+ <else-if type="hearing">
+ <group delimiter=" ">
+ <text variable="authority"/>
+ <!-- 'session' is `chapter-number` -->
+ <text variable="chapter-number"/>
+ </group>
+ </else-if>
<else-if type="legislation">
<choose>
<if variable="number">
- <!--There's a public law number-->
+ <!-- There's a public law number. -->
<group delimiter=", ">
<text variable="number" prefix="Pub. L. No. "/>
<group delimiter=" ">
@@ -1594,8 +1731,7 @@
<choose>
<if variable="section">
<group delimiter=" ">
- <!-- TODO: Change to label variable="section" -->
- <text term="section" form="symbol"/>
+ <label variable="section" form="symbol"/>
<text variable="section"/>
</group>
</if>
@@ -1607,25 +1743,51 @@
</else>
</choose>
</else-if>
- <else-if type="treaty">
- <group delimiter=" ">
- <number variable="volume"/>
- <text variable="container-title"/>
- <choose>
- <if variable="page page-first" match="any">
- <text variable="page-first"/>
- </if>
- <else>
- <group delimiter=" ">
- <label variable="number" form="short" text-case="capitalize-first"/>
- <text variable="number"/>
- </group>
- </else>
- </choose>
+ <else-if type="regulation">
+ <group delimiter=", ">
+ <group delimiter=" ">
+ <text variable="genre"/>
+ <group delimiter=" ">
+ <label variable="number" form="short" text-case="capitalize-first"/>
+ <text variable="number"/>
+ </group>
+ </group>
+ <group delimiter=" ">
+ <text variable="volume"/>
+ <text variable="container-title"/>
+ <choose>
+ <if variable="section">
+ <group delimiter=" ">
+ <label variable="section" form="symbol"/>
+ <text variable="section"/>
+ </group>
+ </if>
+ <else>
+ <text variable="page-first"/>
+ </else>
+ </choose>
+ </group>
</group>
</else-if>
</choose>
</macro>
+ <macro name="parenthetical-legal">
+ <choose>
+ <if type="hearing">
+ <group prefix="(" suffix=")" delimiter=" ">
+ <!-- Use the 'verb' form of the hearing term to hold 'testimony of' -->
+ <text term="hearing" form="verb"/>
+ <names variable="author">
+ <name and="symbol" delimiter=", "/>
+ </names>
+ </group>
+ </if>
+ <else-if type="bill legislation regulation" match="any">
+ <!-- For uncodified regulations, assume future code section is in `status`. -->
+ <text variable="status" prefix="(" suffix=")"/>
+ </else-if>
+ </choose>
+ </macro>
<macro name="citation-locator">
<!-- TODO: Add new locator types? -->
<group delimiter=" ">
@@ -1642,9 +1804,9 @@
</macro>
<citation et-al-min="3" et-al-use-first="1" disambiguate-add-year-suffix="true" disambiguate-add-names="true" disambiguate-add-givenname="true" collapse="year" givenname-disambiguation-rule="primary-name-with-initials">
<sort>
- <key macro="author-bib" names-min="3" names-use-first="1"/>
- <key macro="date-sort-group"/>
- <key macro="date-bib" sort="ascending"/>
+ <key macro="author-sort" names-min="3" names-use-first="1"/>
+ <key macro="date-sort-group" sort="ascending"/>
+ <key macro="date-sort" sort="ascending"/>
<key variable="status"/>
</sort>
<layout prefix="(" suffix=")" delimiter="; ">
@@ -1657,16 +1819,16 @@
</citation>
<bibliography hanging-indent="true" et-al-min="21" et-al-use-first="19" et-al-use-last="true" entry-spacing="0" line-spacing="2">
<sort>
- <key macro="author-bib"/>
- <key macro="date-sort-group"/>
- <key macro="date-bib" sort="ascending"/>
+ <key macro="author-sort"/>
+ <key macro="date-sort-group" sort="ascending"/>
+ <key macro="date-sort" sort="ascending"/>
<key variable="status"/>
<key macro="title"/>
</sort>
<layout>
<choose>
<!-- TODO: Add new item types -->
- <if type="bill legal_case legislation treaty" match="any">
+ <if type="bill hearing legal_case legislation regulation treaty" match="any">
<!-- Legal items have different orders and delimiters -->
<choose>
<if variable="DOI URL" match="any">