This project is read-only.

Different format for first citation?

Dec 11, 2014 at 9:23 AM
I'm writing my thesis and have been modifying a BibWord HarvardLeeds-based style to comply with referencing guidelines our university.

Now I've run into a problem, as our guide requires that if there are more than two authors on first occurrence the citation authors are written out fully and in the rest of citations only first author is cited and rest truncated with et al.

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Sed posuere interdum sem. Quisque ligula eros ullamcorper quis, lacinia quis facilisis sed sapien. (Author & Author  2000; Author, Author & Author 2001.)

Aliquam erat volutpat. Sed congue augue vitae neque. Nulla consectetuer porttitor pede. Fusce purus morbi tortor magna condimentum vel, placerat id blandit sit amet tortor. (Author & Author 2000; Author et al. 2001.)
Dec 11, 2014 at 2:09 PM
What I have done is to create another citation form to cater for et al citations on the second mention of a multi-author source. This is enabled by a variation made to the ‘Suppress’ feature in the ‘Edit Citation’ box.

First you need to create another subsection for an et al citation in the <citation> section of the stylesheet. You also have to identify the ordinary, full form citation and the et al form of citation. For example, in the <source type="Book"> subsection:
<source type="Book">
<format type="full">{%CitationPrefix%}{%Author:1|Editor:1|Title%}{, %Year%{%YearSuffix%}}{, %CitationVolume%}{, %CitationPages:p.:pp.%}{%CitationSuffix%}</format>
<format type="EtAl">{%CitationPrefix%}{%Author:20|Editor:20|Title%}{, %Year%{%YearSuffix%}}{, %CitationVolume%}{, %CitationPages:p.:pp.%}{%CitationSuffix%}</format>
You then need to add another subsection in the <namelists> section to use in the et al form citation. I happened to use “shortauthor”, ‘Author:20’. In this subsection, you will have to set up your required style for the ‘et al’ output.

<list name="shortauthor" id="20">
    <!-- Used for et al. citations, set to show 1. -->
    <separator_between_if_two> &amp; </separator_between_if_two>
    <separator_between_if_more_than_two>, </separator_between_if_more_than_two>
    <separator_before_last> &amp; </separator_before_last>
    <overflow> et al.</overflow>
To make this work, you have to add code in the non-variable section which starts at line 659. The subsection that formats the citations starts at line 751: <!-- Formats the citation. -->

Additional code can then be inserted to allow for up to 8 permutations of citations by using different combinations of the suppression items. (This can get complicated and it took me months to sort out.)

For the present exercise to allow for et al citations:

Insert the following at Line 775, replacing existing code up to <!-- Else display error message. -->:
<!-- Get the version. This allows for additional citation forms by using the suppression feature. -->
          <xsl:variable name="version">
<!-- If only Title is suppressed, show the Et Al version. Used to output et al, with 'Author 20' -->
    <xsl:when test="/b:Citation/b:NoTitle and not(/b:Citation/b:NoAuthor) and not(/b:Citation/b:NoYear)">
<!-- Otherwise, show the full version. -->
            <!-- Go for the type element if available. -->
            <xsl:when test="string-length($type) > 0 and string-length(msxsl:node-set($data)/citation/source[@type = $type]/format[@type = $version]) > 0 ">
              <xsl:value-of select="msxsl:node-set($data)/citation/source[@type = $type]/format[@type = $version]"/>
            <!-- Else go for the source type element if available. -->
            <xsl:when test="string-length(msxsl:node-set($data)/citation/source[@type = $sourcetype]/format[@type = $version]) > 0 ">
              <xsl:value-of select="msxsl:node-set($data)/citation/source[@type = $sourcetype]/format[@type = $version]"/>
            <!-- This is a placeholder. -->
            <xsl:when test ="string-length($sourcetype) = 0 and string-length(msxsl:node-set($data)/citation/source[@type = 'Placeholder']/format[@type = $version]) > 0">
              <xsl:value-of select="msxsl:node-set($data)/citation/source[@type = 'Placeholder']/format[@type = $version]"/>
            <!-- Else display error message. -->
This setup will output the et al form of citation, after the citation has been inserted in the normal way, by suppressing ‘Title’ in the Edit Citation box.

I hope this may help.

Lionel Crator,
Tau Editing.
Professional Language Practitioner.
BL (Hons)(Rhod) LL.B (Rhod).
Member of The Professional Editors Group.
Working with words since 1981.