tapuscrit 样式和 bibtex 的问题

tapuscrit 样式和 bibtex 的问题

我正在用 markdown 写博士论文,并使用 Bibtex 和 Zotero。在将文档转换为 PDF 时,我使用的引用样式(tapuscrit 的略微修改版本)出现了一些问题。首先,当我引用一篇文章时,引号和标题之间有一个空格,但前者和后者之间的这个空格的长度不相等。其次,当我连续引用相同的参考文献时,会出现 ibid. 提及,但作者的名字再次被引用,而事实并非如此。第三,再次引用参考文献时,只会出现作者名字的首字母,但作者的两个名字之间缺少一个空格(如果有的话)。最后,当需要将引号放在带有法语引号的文章标题中时,我对引号有问题。即使在引用文本的开头也会出现两个结束引号。我附上了四张屏幕截图来说明这些问题:

在此处输入图片描述 在此处输入图片描述 在此处输入图片描述 在此处输入图片描述

以下是 Markdown 中的 MWE:

---
csl: le-tapuscrit-note-modified.csl
bibliography:[bibtex file]
link-citations: yes
lang: fr-FR
output: pdf_document
geometry: "margin=2.5cm"
fontfamily: libertine
fontsize: 12pt
documentclass: report
header-includes:
  - \usepackage[utf8]{inputenc}
  - \usepackage{csquotes}
  - \usepackage[bottom,hang,flushmargin]{footmisc}
  - \setlength{\skip\footins}{1.2pc plus 5pt minus 2pt}
  - \setlength{\footnotemargin}{0pt}
  - \renewcommand\footnotelayout{\hskip5pt}
---

[^1] [^2] [^3] [^4]

[^1]: @tarrowStrategyPairedComparison2010

[^2]: @margalitNationalSelfDetermination1990

[^3]: @hobsbawmInventionTradition2010

[^4]: @bertrandHistoireGlobaleHistoires2013

参考书目条目:

@incollection{bertrandHistoireGlobaleHistoires2013,
  title = {{Histoire globale, histoires connect\'ees : un "tournant" historiographique ?}},
  booktitle = {{Le "tournant global" des sciences sociales}},
  author = {Bertrand, Romain},
  editor = {Caill{\'e}, Alain and Dufoix, St{\'e}phane},
  year = {2013},
  pages = {44--66},
  publisher = {{La D\'ecouverte}},
  address = {{Paris}},
  langid = {french},
}

@book{hobsbawmInventionTradition2010,
  title = {The {{Invention}} of {{Tradition}}},
  editor = {Hobsbawm, Eric J. and Ranger, Terence O.},
  year = {2010},
  edition = {Second},
  publisher = {{Cambridge University Press}},
  address = {{Cambridge}},
}

@article{margalitNationalSelfDetermination1990,
  title = {National {{Self}}-{{Determination}}},
  author = {Margalit, Avishai and Raz, Joseph},
  year = {1990},
  journal = {Journal of Philosophy},
  volume = {87},
  number = {9},
  pages = {439--461},
}

@article{tarrowStrategyPairedComparison2010,
  title = {The Strategy of Paired Comparison: Toward a Theory of Practice},
  shorttitle = {The Strategy of Paired Comparison},
  author = {Tarrow, Sidney},
  year = {2010},
  month = feb,
  journal = {Comparative Political Studies},
  volume = {43},
  number = {2},
  pages = {230--259},
  issn = {0010-4140, 1552-3829},
  doi = {10.1177/0010414009350044},
  langid = {english},
}

如果有用的话,还有 CSL 代码:

<?xml version="1.0" encoding="utf-8"?>
<style xmlns="http://purl.org/net/xbiblio/csl" class="note" default-locale="fr-FR" version="1.0" page-range-format="expanded">
  <!-- This style was edited with the Visual CSL Editor (https://editor.citationstyles.org/visualEditor/) -->
  <info>
    <title>Le tapuscrit (École des hautes études en sciences sociales) (note, Français)</title>
    <title-short>Tapuscrit-EHESS</title-short>
    <id>http://www.zotero.org/styles/le-tapuscrit-ecole-des-hautes-etudes-en-sciences-sociales</id>
    <link href="http://www.zotero.org/styles/le-tapuscrit-ecole-des-hautes-etudes-en-sciences-sociales" rel="self"/>
    <link href="http://www.editions.ehess.fr/ouvrages/ouvrage/le-tapuscrit/" rel="documentation"/>
    <author>
      <name>Franziska Heimburger</name>
      <email>[email protected]</email>
    </author>
    <category citation-format="note"/>
    <category field="social_science"/>
    <category field="generic-base"/>
    <updated>2021-09-08T15:34:46+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="fr">
    <terms>
      <term name="ordinal-01">ère</term>
      <term name="ordinal-02">e</term>
      <term name="ordinal-03">e</term>
      <term name="ordinal-04">e</term>
      <term name="cited">op. cit.</term>
      <term name="page" form="short">p.</term>
      <term name="editor" form="short">
        <term name="issue" form="short">n°</term>
        <single>ed.</single>
        <multiple>eds.</multiple>
      </term>
      <term name="in">dans</term>
    </terms>
  </locale>
  <macro name="author">
    <names variable="author">
      <name form="long" and="text" delimiter-precedes-last="never" sort-separator=" "/>
      <label form="short" prefix=" (" suffix=".)"/>
      <substitute>
        <names variable="editor"/>
        <names variable="translator"/>
        <text macro="title"/>
      </substitute>
    </names>
  </macro>
  <macro name="author-bib">
    <names variable="author">
      <name name-as-sort-order="all" form="long" and="text" delimiter-precedes-last="never" sort-separator=" ">
        <name-part name="family" font-variant="small-caps"/>
      </name>
      <label form="short" prefix=" (" suffix=".)"/>
      <substitute>
        <names variable="editor"/>
        <names variable="translator"/>
        <text macro="title"/>
      </substitute>
    </names>
  </macro>
  <macro name="author-ibid">
    <names variable="author">
      <name and="text" initialize="true" initialize-with="." delimiter-precedes-last="never" sort-separator=" " font-style="normal"/>
      <label form="short" prefix=" (" suffix=".)"/>
      <substitute>
        <names variable="editor"/>
        <names variable="translator"/>
        <text macro="title"/>
      </substitute>
    </names>
  </macro>
  <macro name="editor">
    <names variable="editor">
      <name form="long" and="text" delimiter-precedes-last="never" sort-separator=" "/>
      <label form="short" prefix=" (" suffix=".)"/>
    </names>
  </macro>
  <macro name="translator">
    <names variable="translator">
      <name form="long" and="text" delimiter-precedes-last="never" sort-separator=" " prefix=" traduit par "/>
    </names>
  </macro>
  <macro name="title">
    <choose>
      <if type="bill book graphic legal_case motion_picture report song" match="any">
        <text variable="title" text-case="capitalize-first" font-style="italic"/>
      </if>
      <else-if type="article-journal article-newspaper article-magazine" match="any">
        <group delimiter=", ">
          <text variable="title" text-case="capitalize-first" strip-periods="true" quotes="true"/>
          <text variable="container-title" font-style="italic"/>
        </group>
      </else-if>
      <else-if type="thesis" match="any">
        <group delimiter="">
          <text variable="title" text-case="capitalize-first" font-style="italic" suffix=","/>
          <text variable="genre" suffix=", " prefix=" "/>
          <text variable="publisher"/>
        </group>
      </else-if>
      <else-if type="manuscript" match="any">
        <group delimiter=",">
          <text variable="title" text-case="capitalize-first" font-style="italic"/>
          <text variable="genre" prefix=" [" suffix="]"/>
        </group>
      </else-if>
      <else-if type="chapter entry-dictionary entry-encyclopedia" match="any">
        <group delimiter="">
          <text variable="title" text-case="capitalize-first" strip-periods="false" quotes="true"/>
          <text value="dans" suffix=" " prefix=" "/>
          <text macro="editor" suffix=", "/>
          <text variable="container-title" text-case="capitalize-first" font-style="italic"/>
        </group>
      </else-if>
      <else-if type="webpage post-weblog" match="any">
        <group delimiter="">
          <text variable="title" text-case="capitalize-first" font-style="italic" suffix=", "/>
          <text variable="URL"/>
          <group prefix=", ">
            <date variable="issued">
              <date-part name="day" suffix=" "/>
              <date-part name="month" suffix=" "/>
              <date-part name="year"/>
            </date>
          </group>
        </group>
      </else-if>
      <else>
        <text variable="title" quotes="true"/>
      </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">
        <choose>
          <if variable="publisher-place" match="any">
            <text variable="publisher-place"/>
          </if>
          <else>
            <text value="s.l."/>
          </else>
        </choose>
      </if>
    </choose>
  </macro>
  <macro name="publisher">
    <choose>
      <if type="bill book chapter entry-dictionary entry-encyclopedia graphic legal_case motion_picture paper-conference report song" match="any">
        <text variable="publisher"/>
      </if>
    </choose>
  </macro>
  <macro name="yearpage">
    <choose>
      <if type="bill book graphic legal_case motion_picture paper-conference manuscript report song thesis" match="any">
        <group delimiter=", ">
          <group delimiter=" ">
            <date variable="issued" form="numeric" date-parts="year"/>
            <date variable="original-date" form="numeric" date-parts="year" prefix="[" suffix="]"/>
          </group>
          <group>
            <text term="volume" form="short" suffix="."/>
            <text variable="number-of-volumes" prefix=". " suffix="/"/>
            <text variable="volume"/>
          </group>
          <choose>
            <if variable="locator" match="any">
              <group delimiter=" ">
                <label variable="locator" form="short"/>
                <text variable="locator"/>
              </group>
            </if>
            <else-if variable="locator" match="none"/>
          </choose>
        </group>
      </if>
      <else-if type="chapter entry-dictionary entry-encyclopedia" match="any">
        <group delimiter=" ">
          <group delimiter=" ">
            <date variable="issued" form="numeric" date-parts="year"/>
            <date variable="original-date" form="numeric" date-parts="year" prefix="[" suffix="]"/>
          </group>
          <group>
            <text term="volume" form="short" suffix="."/>
            <text variable="number-of-volumes" prefix=". " suffix="/"/>
            <text variable="volume" suffix=","/>
          </group>
          <choose>
            <if variable="locator" match="any">
              <group delimiter=" ">
                <label variable="locator" form="short"/>
                <text variable="locator"/>
              </group>
            </if>
          </choose>
        </group>
      </else-if>
      <else-if type="article-journal" match="any"/>
      <else-if type="article-newspaper article-magazine" match="any">
        <date variable="issued">
          <date-part name="day" suffix=" "/>
          <date-part name="month" form="short" suffix=" "/>
          <date-part name="year"/>
        </date>
        <group delimiter=" " font-style="normal">
          <label variable="page" form="short"/>
          <text variable="page"/>
        </group>
        <group delimiter=" " font-style="normal">
          <choose>
            <if variable="locator" match="any">
              <group delimiter=" ">
                <label variable="locator" form="short"/>
                <text variable="locator"/>
              </group>
            </if>
            <else-if variable="locator" match="none">
              <label variable="page" form="short"/>
            </else-if>
          </choose>
        </group>
      </else-if>
      <else-if type="webpage post-weblog" match="any">
        <group delimiter=" " prefix="(" suffix=")">
          <text value="consulté le"/>
          <date variable="accessed" form="text">
            <date-part name="day"/>
            <date-part name="month"/>
            <date-part name="year"/>
          </date>
        </group>
      </else-if>
    </choose>
  </macro>
  <macro name="yearpage-bib">
    <choose>
      <if type="bill book graphic legal_case motion_picture paper-conference report song thesis" match="any">
        <group delimiter=", ">
          <group delimiter=", ">
            <group delimiter=" ">
              <date variable="issued" form="numeric" date-parts="year"/>
              <date variable="original-date" form="numeric" date-parts="year" prefix="[" suffix="]"/>
            </group>
            <group>
              <text term="volume" form="short" suffix="."/>
              <text variable="number-of-volumes" prefix=". " suffix="/"/>
              <text variable="volume"/>
            </group>
          </group>
          <group>
            <label variable="locator" form="short"/>
            <text variable="locator"/>
          </group>
        </group>
      </if>
      <else-if type="chapter entry-dictionary entry-encyclopedia" match="any">
        <group delimiter=", ">
          <group delimiter=" ">
            <date variable="issued" form="numeric" date-parts="year"/>
            <date variable="original-date" form="numeric" date-parts="year" prefix="[" suffix="]"/>
          </group>
          <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" match="any">
        <group delimiter=" ">
          <label variable="page" form="short"/>
          <text variable="page"/>
        </group>
      </else-if>
      <else-if type="article-newspaper article-magazine" match="any">
        <group delimiter=" ">
          <date variable="issued">
            <date-part name="day" suffix=" "/>
            <date-part name="month" form="short" suffix=" "/>
            <date-part name="year"/>
          </date>
          <label variable="page" form="short"/>
          <text variable="page"/>
        </group>
      </else-if>
      <else-if type="manuscript">
        <group delimiter="" font-style="normal">
          <choose>
            <if variable="issued">
              <date variable="issued">
                <date-part name="day" suffix=" "/>
                <date-part name="month" suffix=" "/>
                <date-part name="year"/>
              </date>
            </if>
            <else>
              <text value="s. d."/>
            </else>
          </choose>
        </group>
      </else-if>
      <else-if type="webpage post-weblog" match="any">
        <group delimiter=" ">
          <text value="consulté le" suffix=" " prefix=" "/>
          <date variable="accessed" form="text">
            <date-part name="day"/>
            <date-part name="month"/>
            <date-part name="year"/>
          </date>
        </group>
      </else-if>
    </choose>
  </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 delimiter="">
          <choose>
            <if variable="issued">
              <date variable="issued">
                <date-part name="day" suffix=" "/>
                <date-part name="month" suffix=" "/>
                <date-part name="year"/>
              </date>
              <text macro="volume" prefix=", "/>
            </if>
            <else>
              <text macro="volume" text-case="capitalize-first"/>
            </else>
          </choose>
        </group>
      </else-if>
    </choose>
    <text macro="issue" prefix=", "/>
  </macro>
  <macro name="volume">
    <choose>
      <if is-numeric="volume">
        <text term="volume" form="short" suffix=". "/>
        <text variable="volume"/>
      </if>
      <else>
        <text variable="volume"/>
      </else>
    </choose>
  </macro>
  <macro name="issue">
    <choose>
      <if is-numeric="issue">
        <text term="issue" form="short" suffix=" "/>
        <text variable="issue"/>
      </if>
      <else>
        <text variable="issue"/>
      </else>
    </choose>
  </macro>
  <macro name="collection">
    <text variable="collection-title" quotes="true" prefix=" (coll. " suffix=")"/>
  </macro>
  <citation et-al-min="4" et-al-use-first="1">
    <layout suffix="." delimiter=" ; ">
      <choose>
        <if position="ibid-with-locator">
          <group delimiter=", ">
            <text term="ibid" text-case="capitalize-first" font-style="italic" suffix="."/>
            <text variable="locator" prefix="p. "/>
          </group>
        </if>
        <else-if position="ibid">
          <text term="ibid" text-case="capitalize-first" font-style="italic"/>
        </else-if>
        <else-if position="subsequent">
          <group delimiter=", ">
            <text macro="author-ibid"/>
            <choose>
              <if type="bill book graphic legal_case motion_picture report song thesis manuscript" match="any">
                <text variable="title" form="short" font-style="italic"/>
                <text term="cited" font-style="italic" suffix="."/>
              </if>
              <else>
                <text variable="title" text-case="capitalize-first" form="short" quotes="true"/>
                <text value="art cit"/>
              </else>
            </choose>
            <text variable="locator" prefix="p. "/>
          </group>
        </else-if>
        <else>
          <choose>
            <if type="manuscript">
              <group delimiter=", ">
                <text variable="archive"/>
                <text variable="archive_location"/>
                <text variable="call-number"/>
                <text macro="title"/>
                <text macro="yearpage-bib"/>
              </group>
            </if>
            <else>
              <group delimiter=", ">
                <text macro="author"/>
                <text macro="title"/>
                <text macro="translator"/>
                <text macro="edition"/>
                <text macro="pub-place"/>
                <text macro="publisher"/>
                <text macro="yearpage"/>
              </group>
            </else>
          </choose>
        </else>
      </choose>
    </layout>
  </citation>
  <bibliography>
    <sort>
      <key macro="author" names-min="3" names-use-first="3"/>
      <key variable="issued" sort="descending"/>
    </sort>
    <layout suffix=".">
      <choose>
        <if type="manuscript">
          <group delimiter=", ">
            <text variable="archive"/>
            <text variable="archive_location"/>
            <text variable="call-number"/>
            <text macro="title"/>
            <text macro="yearpage-bib"/>
          </group>
        </if>
        <else>
          <group delimiter=", ">
            <text macro="author-bib"/>
            <text macro="title"/>
            <text macro="translator"/>
            <text macro="edition"/>
            <text macro="pub-place"/>
            <group delimiter=" ">
              <text macro="publisher"/>
              <text macro="collection"/>
            </group>
            <text macro="yearpage-bib"/>
          </group>
        </else>
      </choose>
    </layout>
  </bibliography>
</style>

相关内容