public inbox archive for pandoc-discuss@googlegroups.com
 help / color / mirror / Atom feed
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="&lt; " suffix=" &gt;"/>
        </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="&lt; " suffix=" &gt;"/>
        </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 --]

  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).