From: John Carter Wood <woodjo-ZOsAvrTRSvuEhhMi0yms2Q@public.gmane.org>
To: pandoc-discuss <pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
Subject: Re: Divergent styling when using CSL in pandoc(?)
Date: Wed, 25 May 2022 10:25:25 -0700 (PDT) [thread overview]
Message-ID: <4217cb45-f6db-4b04-a598-20ac2422d02an@googlegroups.com> (raw)
In-Reply-To: <ae5227d7f2574c9ea33550a84d6e03e9-NSENcxR/0n0@public.gmane.org>
[-- Attachment #1.1: Type: text/plain, Size: 4331 bytes --]
Following up on my original post, I have tried to follow Bastien Dumont's
advice to get book titles in title case (i.e. 'add title-case="title" in
the relevant places') , however I am having no luck and running into what
seems to me to be a curious issue.
I have included my minimal Markdown file, minimal json bibliography and the
CSL file.
The problem: I cannot get book titles to appear in title case.
The relevant line in the CSL file would seem to be line 90.
- If I set text-case="uppercase" in line 90, then the book titles appear
as UPPERCASE in both citation and bibliography.
[image: Line-90-uppercase.png]
- If I set text-case="lowercase" in line 90, then the book titles appear
as lowercase in both citation and bibliography.
[image: Line-90-lowercase.png]
Those experiments suggest to me that line 90 is indeed the relevant line
for setting book title case.
However, if I set text-case="title" in line 90, then the book titles appear
in "capitalize-first" case.
[image: Line-90-title-case.png]
But, again, as in my original post, if I insert the citation directly in
LibreOffice using the Zotero plugin, the titles appear correctly, in
title-case.
[image: Insert-book-LibreOffice.png]
The issue only comes up when using pandoc for conversion.
If the issue is, as Denis suggests, something to do with nesting /
precedence, I would be grateful is someone could point out where my CSL
file is creating that conflict. I have tried to find something but without
any success.
But it seems odd to me if that is the case that I *can* set the titles to
"uppercase" and "lowercase" but *not* to "title" case when changing the
same line.
And, again, this only arises with pandoc conversion.
So is this something I can change in my CSL? Or is this a pandoc issue?
denis...-NSENcxR/0n0@public.gmane.org schrieb am Freitag, 20. Mai 2022 um 20:45:54 UTC+2:
> > -----Ursprüngliche Nachricht-----
> > Von: pandoc-...-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org <pandoc-
> > dis...-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org> Im Auftrag von Bastien DUMONT
> > Gesendet: Freitag, 20. Mai 2022 15:43
> > An: pandoc-...-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
> > Betreff: Re: Divergent styling when using CSL in pandoc(?)
> >
> > [...] On the other hand,
> > the specification does not define the expected behaviour for all cases.
> The
> > issue documented by your first screenshot is a good example of that. The
> > "title" macro is called on l. 332 with the attribute text-case="title",
> but the
> > <text> element on l. 117 included in this macro has
> text-case="lowercase":
> > which one should have the precedence? Unless I have missed something, the
> > CSL specification does not define that, so Pandoc applies the attribute
> value
> > set on the upper-most element and citeproc-js that of the inner-most
> > element. Neither is wrong, so the only solution is to avoid such
> conflicts in
> > your stylesheet (e.g. by removing the attribute on l. 332).
>
> Good catch. I'll open an issue on the CSL schema repo. But concerning
> precedence have a look at
> https://docs.citationstyles.org/en/stable/specification.html#inheritable-name-options
> where you'll find:
>
> > When an inheritable name attribute is set on cs:style, cs:citation or
> cs:bibliography, its value is used for all cs:names elements within the
> scope of the element carrying the attribute. If an attribute is set on
> multiple hierarchical levels, the value set at the lowest level is used.
>
> That's about inheritable name attributes, sure. But I'd infer from that
> that there seems to be a preference for settings at lower levels.
> Maybe we should prohibit the use of styles and text-casing with macros as
> these run somewhat against the purpose of macros...
>
> Denis
>
--
You received this message because you are subscribed to the Google Groups "pandoc-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pandoc-discuss+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To view this discussion on the web visit https://groups.google.com/d/msgid/pandoc-discuss/4217cb45-f6db-4b04-a598-20ac2422d02an%40googlegroups.com.
[-- Attachment #1.2: Type: text/html, Size: 6015 bytes --]
[-- Attachment #2: ieg-2-en-22.csl --]
[-- Type: application/octet-stream, Size: 12480 bytes --]
<?xml version="1.0" encoding="utf-8"?>
<style class="note" version="1.0" et-al-min="4" et-al-use-first="1" et-al-subsequent-min="4" et-al-subsequent-use-first="1" page-range-format="expanded" default-locale="en-GB" xmlns="http://purl.org/net/xbiblio/csl">
<!-- This style was edited with the Visual CSL Editor (https://editor.citationstyles.org/visualEditor/) -->
<info>
<title>IEG-2-en</title>
<id>http://www.zotero.org/styles/ieg-2-en</id>
<link rel="self" href="http://www.zotero.org/styles/ieg-2-en"/>
<category citation-format="note"/>
<category field="humanities"/>
<updated>2022-05-11T13:18:17+00: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">
<terms>
<term name="cited">op. cit.</term>
<term name="editor" form="short">
<single>ed.</single>
<multiple>eds.</multiple>
</term>
</terms>
</locale>
<macro name="author">
<choose>
<if variable="author">
<names variable="author">
<name font-style="normal" delimiter=" /" and="text" delimiter-precedes-last="never" sort-separator=" ">
<name-part name="family" font-variant="small-caps"/>
</name>
</names>
</if>
<else-if variable="editor">
<names variable="editor">
<name font-style="normal" delimiter=" / " delimiter-precedes-last="never" sort-separator=" ">
<name-part name="family" font-variant="small-caps"/>
</name>
<label form="short" text-case="lowercase" prefix=" (" suffix=".)"/>
</names>
</else-if>
</choose>
</macro>
<macro name="author-short">
<choose>
<if variable="author">
<names variable="author">
<name form="short" font-style="normal" and="text" delimiter-precedes-last="never" et-al-use-first="1" sort-separator=" ">
<name-part name="family" font-variant="small-caps"/>
</name>
</names>
</if>
<else-if variable="editor">
<names variable="editor">
<name font-style="normal" delimiter=" / " delimiter-precedes-last="never" sort-separator=" ">
<name-part name="family" font-variant="small-caps"/>
</name>
<label form="short" text-case="lowercase" prefix=" (" suffix=".)"/>
</names>
</else-if>
</choose>
</macro>
<macro name="author-bib">
<choose>
<if variable="author">
<names variable="author">
<name name-as-sort-order="all" form="long" and="symbol" delimiter-precedes-last="never" sort-separator=", " font-style="normal">
<name-part name="family" font-variant="small-caps"/>
</name>
</names>
</if>
<else-if variable="editor">
<names variable="editor">
<name name-as-sort-order="all" form="long" delimiter="/" delimiter-precedes-last="never" sort-separator=", " font-style="normal">
<name-part name="family" font-variant="small-caps"/>
</name>
<label form="short" prefix=" (" suffix=".)"/>
</names>
</else-if>
</choose>
</macro>
<macro name="translator">
<names variable="translator">
<name form="long" and="text" delimiter-precedes-last="never" sort-separator=" " font-style="normal" prefix=" traduit par ">
<name-part name="family" font-variant="small-caps"/>
</name>
</names>
</macro>
<macro name="title">
<choose>
<if type="bill book graphic legal_case motion_picture report song" match="any">
<group>
<text variable="title" text-case="title"/>
</group>
</if>
<else-if type="article-journal article-newspaper article-magazine" match="any">
<group delimiter=", ">
<text variable="title" text-case="title"/>
<text variable="container-title" prefix="in: "/>
</group>
</else-if>
<else-if type="thesis" match="any">
<group>
<text variable="title" text-case="title" suffix=", Diss."/>
</group>
</else-if>
<else-if type="manuscript">
<group delimiter=",">
<text variable="title" text-case="title"/>
<text variable="genre" prefix=" "/>
</group>
</else-if>
<else-if type="chapter entry-dictionary entry-encyclopedia" match="any">
<group>
<text variable="title" text-case="title" suffix=", "/>
<text value="in" suffix=": "/>
<names variable="editor">
<name font-style="normal" delimiter=" / " delimiter-precedes-last="never" sort-separator=" ">
<name-part name="family" font-variant="small-caps"/>
</name>
</names>
<text value=" (ed.), " text-case="lowercase"/>
<text variable="container-title" text-case="title"/>
</group>
</else-if>
<else-if type="webpage">
<group>
<text variable="title" text-case="title" suffix=", "/>
<text variable="container-title" prefix="unter: " suffix=", "/>
<text variable="URL" prefix="< " suffix=" >"/>
</group>
</else-if>
<else>
<text variable="title" text-case="title"/>
</else>
</choose>
</macro>
<macro name="title-short">
<choose>
<if type="bill book graphic legal_case motion_picture report song" match="any">
<text variable="title" form="short" text-case="title"/>
</if>
<else-if type="article-journal article-newspaper article-magazine" match="any">
<group delimiter=", ">
<text variable="title" form="short" text-case="title"/>
</group>
</else-if>
<else-if type="thesis" match="any">
<group>
<text variable="title" form="short" text-case="title" suffix=", Diss."/>
</group>
</else-if>
<else-if type="manuscript">
<group delimiter=",">
<text variable="title" form="short" text-case="title"/>
<text variable="genre" prefix=" "/>
</group>
</else-if>
<else-if type="chapter entry-dictionary entry-encyclopedia" match="any">
<group>
<text variable="title" form="short" text-case="title" suffix=", "/>
</group>
</else-if>
<else-if type="webpage">
<group>
<text variable="title" text-case="title" suffix=", "/>
<text variable="container-title" prefix="unter: " suffix=", "/>
<text variable="URL" prefix="< " suffix=" >"/>
</group>
</else-if>
<else>
<text variable="title" text-case="title"/>
</else>
</choose>
</macro>
<macro name="pub-place">
<choose>
<if type="bill book chapter entry-dictionary entry-encyclopedia thesis graphic legal_case manuscript motion_picture paper-conference report song" match="any">
<text variable="publisher-place"/>
</if>
</choose>
</macro>
<macro name="yearpage-bib">
<choose>
<if type="bill book graphic legal_case motion_picture paper-conference manuscript report song thesis" match="any">
<group delimiter=", ">
<group delimiter=", " font-style="normal">
<date variable="issued">
<date-part name="year"/>
</date>
</group>
</group>
</if>
<else-if type="chapter entry-dictionary entry-encyclopedia" match="any">
<group delimiter=", " font-style="normal">
<date form="numeric" variable="issued">
<date-part name="year"/>
</date>
<group>
<text term="volume" form="short" suffix="."/>
<text variable="number-of-volumes" prefix=". " suffix="/"/>
<text variable="volume"/>
</group>
<group>
<label variable="page" form="short"/>
<text variable="page" prefix=" "/>
</group>
</group>
</else-if>
<else-if type="article-journal chapter" match="any">
<group delimiter=" " font-style="normal">
<label variable="page" form="short"/>
<text variable="page"/>
</group>
</else-if>
<else-if type="article-newspaper article-magazine" match="any">
<group delimiter=" " font-style="normal">
<label variable="page" form="short"/>
<text variable="page"/>
</group>
</else-if>
<else-if type="webpage" match="any">
<group delimiter=" " font-style="normal">
<date variable="accessed" form="numeric" prefix="(" suffix=")">
<date-part name="day" form="numeric"/>
<date-part name="month" form="numeric"/>
<date-part name="year"/>
</date>
</group>
</else-if>
</choose>
<group>
<label prefix=", at " suffix=" " variable="locator" form="short"/>
<text variable="locator" form="short"/>
</group>
</macro>
<macro name="edition">
<choose>
<if type="bill book graphic legal_case motion_picture report song chapter paper-conference" match="any">
<choose>
<if is-numeric="edition">
<group delimiter=" ">
<number variable="edition" form="ordinal"/>
<text term="edition" form="short"/>
</group>
</if>
<else>
<text variable="edition" text-case="capitalize-first" suffix="."/>
</else>
</choose>
</if>
<else-if type="article-journal article-magazine" match="any">
<group>
<choose>
<if variable="issued">
<text macro="volume" suffix=" "/>
<group>
<date variable="issued">
<date-part name="year" prefix="(" suffix=")"/>
</date>
</group>
</if>
<else>
<text macro="volume" text-case="capitalize-first"/>
</else>
</choose>
</group>
</else-if>
</choose>
</macro>
<macro name="volume">
<choose>
<if is-numeric="volume">
<text variable="volume"/>
</if>
<else>
<text variable="volume"/>
</else>
</choose>
</macro>
<macro name="collection">
<choose>
<if is-numeric="collection-number">
<text variable="collection-title" prefix=" ("/>
<text variable="collection-number" prefix=", Vol. " suffix=") "/>
</if>
</choose>
</macro>
<citation>
<layout suffix="." delimiter="; ">
<choose>
<if position="ibid-with-locator">
<group delimiter=", ">
<text term="ibid" text-case="lowercase" font-style="normal" suffix="."/>
<group>
<label suffix=" " variable="locator" form="short"/>
<text variable="locator" form="short"/>
</group>
</group>
</if>
<else-if position="ibid">
<text term="ibid" text-case="lowercase" font-style="normal"/>
</else-if>
<else-if position="subsequent">
<group delimiter=", ">
<text macro="author-short"/>
<text macro="title-short" text-case="title"/>
<group>
<label suffix=" " variable="locator" form="short"/>
<text variable="locator" form="short"/>
</group>
</group>
</else-if>
<else>
<group delimiter=", " suffix=", ">
<text macro="author"/>
<text macro="title"/>
<text macro="translator"/>
<text macro="edition"/>
</group>
<group delimiter=" ">
<text macro="pub-place"/>
<text macro="yearpage-bib"/>
</group>
</else>
</choose>
</layout>
</citation>
<bibliography>
<sort>
<key macro="author" names-min="3" names-use-first="3"/>
<key variable="issued" sort="descending"/>
</sort>
<layout suffix=".">
<group delimiter=", " suffix=", ">
<text macro="author-bib"/>
<text macro="title"/>
<text macro="collection"/>
<text macro="translator"/>
<text macro="edition"/>
</group>
<group delimiter=" ">
<text macro="pub-place"/>
<text macro="yearpage-bib"/>
</group>
</layout>
</bibliography>
</style>
[-- Attachment #3: Insert-book-LibreOffice.png --]
[-- Type: image/png, Size: 5868 bytes --]
[-- Attachment #4: CSL-minimal-test.json --]
[-- Type: application/json, Size: 4029 bytes --]
[-- Attachment #5: Line-90-title-case.png --]
[-- Type: image/png, Size: 5628 bytes --]
[-- Attachment #6: Line-90-uppercase.png --]
[-- Type: image/png, Size: 6454 bytes --]
[-- Attachment #7: CSL-Test-3.md --]
[-- Type: text/markdown, Size: 432 bytes --]
---
title: CSL-Test-3
subtitle: Minimal CSL file
bibliography: CSL-minimal-test.json
csl: ieg-2-en-22.csl
lang: en-GB
header-includes:
- \usepackage{csquotes}
---
# Introduction
Nullam tristique diam non turpis. Cras placerat accumsan nulla. Nullam rutrum. Nam vestibulum accumsan nisl [@mumford_technics_1934, 45]. Lorem ipsum dolor sit amet, consectetuer adipiscing elit [@latourette_community_1938, 15].
# Bibliography
[-- Attachment #8: Line-90-lowercase.png --]
[-- Type: image/png, Size: 5495 bytes --]
next prev parent reply other threads:[~2022-05-25 17:25 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <AQHYbDjihMB6Uii56E23JjqNZrfiNK0npPkAgABzaCCAB6Z9gIAAY+Sw>
[not found] ` <AQHYbDjihMB6Uii56E23JjqNZrfiNK0npPkAgABzaCA=>
2022-05-20 11:00 ` John Carter Wood
[not found] ` <0daa1a20-d847-47f5-a465-708c7875ff8an-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
2022-05-20 11:32 ` John Carter Wood
2022-05-20 13:42 ` Bastien DUMONT
2022-05-20 14:56 ` John Carter Wood
[not found] ` <e4cef3f2-bf3f-4359-87b7-61f9f3309670n-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
2022-05-20 15:50 ` Bastien DUMONT
2022-05-20 16:06 ` John Carter Wood
[not found] ` <04626317-9c4b-4135-abfb-5ab0ae4909b5n-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
2022-05-20 16:15 ` Bastien DUMONT
2022-05-20 16:37 ` John Carter Wood
2022-05-20 18:45 ` AW: " denis.maier-NSENcxR/0n0
[not found] ` <ae5227d7f2574c9ea33550a84d6e03e9-NSENcxR/0n0@public.gmane.org>
2022-05-25 17:25 ` John Carter Wood [this message]
[not found] ` <4217cb45-f6db-4b04-a598-20ac2422d02an-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org>
2022-05-25 21:36 ` denis.maier-NSENcxR/0n0
[not found] ` <727f6fde7695493c8d44da2ed2cb52b1-NSENcxR/0n0@public.gmane.org>
2022-05-26 7:18 ` John Carter Wood
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4217cb45-f6db-4b04-a598-20ac2422d02an@googlegroups.com \
--to=woodjo-zosavrtrsvuehhmi0yms2q@public.gmane.org \
--cc=pandoc-discuss-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).