4

I'm quite happy using the Oscola style. However, I do get a strange result using \footcite: in addition to the dot added by \footcite there is another dot after ibid («ibid..» or, eg, «ibid., 3.») which I cannot explain. My preamble is as follows

\documentclass[a4paper,english]{book}
\usepackage[style=oscola]{biblatex}
\usepackage{babel,newcent,textcomp}
\usepackage[style=british]{csquotes}
\addbibresource{disstryout.bib}
\defbibenvironment{bibliography}

% arara: pdflatex: {options: "-file-line-error-style"}
% arara: biber

\newcommand{\latin}[1]{{\it #1}}

Thanks very much for your support! (I'm new to Tex but eager to learn.) J

5
  • 2
    Welcome to TeX.SX! Please add a minimal working example (MWE) that illustrates your problem. It will be much easier for us to reproduce your situation and find out what the issue is when we see compilable code, starting with \documentclass{...} and ending with \end{document}. Sep 20, 2013 at 16:22
  • 3
    Yes, you're right. There must be a bug in the Oscola style. Not the best solution, but you can add \DefineBibliographyStrings{english}{ibidem={ibid}} in your preamble to avoid this. Sep 20, 2013 at 17:11
  • Thanks very much, karl koeller. This is a nice workaround for the bug, I think. In any case, for \footcite[3]{some-article}, I get «ibid, 3.» Now, if you could help directing me to a solution that would allow me to get «ibid 3», that'd be perfect :)
    – Jonas
    Sep 21, 2013 at 0:59
  • 1
    Off-topic: If you are really going to write Latin text in your document, you should use babel: \usepackage[latin, english]{babel} (for proper hyphenation) and then \newcommand{\latin}[1]{\foreignlanguage{latin}{\emph{#1}}}. The use of \it is not recommended for LaTeX users. And hard-coding Latin into italics (\textit) means you won't get proper emphasis nesting: compare your command with the one given here in the following text: \emph{This is not Latin: \latin{lorem ipsum}}
    – jon
    Sep 22, 2013 at 20:24
  • @jon thank you, I will gladly use your suggestion.
    – Jonas
    Sep 22, 2013 at 22:57

2 Answers 2

7

The root of all evil, so to speak, lies in oscola.bbx, more specifically the redefinition of postnote (l. 1670)

\renewbibmacro*{postnote}{%
  \ifboolexpr {test {\iffieldundef{postnote}} or
               test {\iftoggle{cbx@postnoteprinted}}}%
    {\midsentence}%<---- that's the little bugger
    {\ifboolexpr{test {\ifnumequal{\value{bbx@suppresspostnotedelim}}{1}}}
       {\setunit{\addspace}%
        \bbx@resetpostnotedelim}
       {\setunit{\postnotedelim}}%
     \usebibmacro{postnotepagination}}%
     \global\toggletrue{cbx@postnoteprinted}}

You can add the following to your preamble

\makeatletter
\renewbibmacro*{postnote}{%
  \ifboolexpr {test {\iffieldundef{postnote}} or
               test {\iftoggle{cbx@postnoteprinted}}}%
    {}%<---- nothing to see here
    {\ifboolexpr{test {\ifnumequal{\value{bbx@suppresspostnotedelim}}{1}}}
       {\setunit{\addspace}%
        \bbx@resetpostnotedelim}
       {\setunit{\postnotedelim}}%
     \usebibmacro{postnotepagination}}%
     \global\toggletrue{cbx@postnoteprinted}}
\makeatother

if you notice any adverse effect or insist on \midsentence, you can exchange the marked empty pair of curly braces {} for {\midsentence\nopunct}.

The MWE

\documentclass{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[babel]{csquotes}
\usepackage[
    backend=biber,
    style=oscola,
    natbib=true,
    sorting=nyt,
    maxbibnames=10,
    maxcitenames=2
]{biblatex}

\addbibresource{biblatex-examples.bib}

\makeatletter
\renewbibmacro*{postnote}{%
  \ifboolexpr {test {\iffieldundef{postnote}} or
               test {\iftoggle{cbx@postnoteprinted}}}%
    {}
    {\ifboolexpr{test {\ifnumequal{\value{bbx@suppresspostnotedelim}}{1}}}
       {\setunit{\addspace}%
        \bbx@resetpostnotedelim}
       {\setunit{\postnotedelim}}%
     \usebibmacro{postnotepagination}}%
     \global\toggletrue{cbx@postnoteprinted}}
\makeatother

\begin{document}
  Go\footcite{wilde} and again\footcite[123]{wilde} that's it\footcite{wilde}.
  \printbibliography
\end{document}

then yields enter image description here


Edit

The situation is more complicated than I thought. Punctuation is one of the features that is language dependent, so the output here looks different in different language. (You might notice that the MWE above used ngerman, which is probably not what you want.)

So an american document (and an english one for that matter) will without modifications yield the following

enter image description here

As you can see, there is an awful lot of double punctuation. You will find that footnote 8, however, does not suffer from double punctuation, this seems to be down to the way oscola handles postnotes in the first cite. If footnote 7 had contained a postnote, then footnote 8 would have gotten the superfluous comma (try it!).

A british document, meanwhile, looks like this

enter image description here

Note that there is no double punctuation, but the "ibid" is not (always) followed by a dot.

In an american (or english) document the following modifications seem to acheive what you want.

\makeatletter
\renewbibmacro*{footcite}{%
  \bbx@resetpostnotedelim%<----- reset the tracker here ...
  \usebibmacro{cite:citepages}%
  \global\togglefalse{cbx:loccit}%
  \ifboolexpr {test {\ifciteseen} or test {\ifciteibid}}
    {\ifboolexpr {test {\iffieldundef{shorthand}} 
                  or test {\bbx@ifnottrackingcites}}
       {\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
          {\usebibmacro{footcite:ibid}\bbx@unsetpostnotedelim}%<-- ... so we can set it here
          {\usebibmacro{footcite:note}}}%
       {\usebibmacro{footcite:shorthand}}}
    {\usebibmacro{footcite:full}%
     \usebibmacro{footcite:save}}}
    
\renewbibmacro*{postnote}{%
  \ifboolexpr {test {\iffieldundef{postnote}} or
               test {\iftoggle{cbx@postnoteprinted}}}%
    {}%
    {\ifboolexpr{test {\ifnumequal{\value{bbx@suppresspostnotedelim}}{1}}}
       {\setunit{\addspace}%
        \bbx@resetpostnotedelim}
       {\setunit{\postnotedelim}}%
     \usebibmacro{postnotepagination}}%
  \global\toggletrue{cbx@postnoteprinted}}
\makeatother

The MWE

\documentclass[american]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[backend=biber, style=oscola]{biblatex}
\addbibresource{biblatex-examples.bib}

\makeatletter
\renewbibmacro*{footcite}{%
  \bbx@resetpostnotedelim
  \usebibmacro{cite:citepages}%
  \global\togglefalse{cbx:loccit}%
  \ifboolexpr {test {\ifciteseen} or test {\ifciteibid}}
    {\ifboolexpr {test {\iffieldundef{shorthand}} 
                  or test {\bbx@ifnottrackingcites}}
       {\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
          {\usebibmacro{footcite:ibid}\bbx@unsetpostnotedelim}
          {\usebibmacro{footcite:note}}}%
       {\usebibmacro{footcite:shorthand}}}
    {\usebibmacro{footcite:full}%
     \usebibmacro{footcite:save}}}
    
\renewbibmacro*{postnote}{%
  \ifboolexpr {test {\iffieldundef{postnote}} or
               test {\iftoggle{cbx@postnoteprinted}}}%
    {}
    {\ifboolexpr{test {\ifnumequal{\value{bbx@suppresspostnotedelim}}{1}}}
       {\setunit{\addspace}%
        \bbx@resetpostnotedelim}
       {\setunit{\postnotedelim}}%
     \usebibmacro{postnotepagination}}%
  \global\toggletrue{cbx@postnoteprinted}}
\makeatother

\begin{document}
  Go\footcite[8]{wilde} and again\footcite[123]{wilde} that's it\footcite{wilde}.
  
  And another\footcite[4]{baez/article} cite\footcite{baez/article}, again \footcite[23]{baez/article}.
  
  The Greek philosophers\footcite{aristotle:anima} must have known\footcite[9]{aristotle:anima} something\footcite{aristotle:anima}.
  
  \printbibliography
\end{document}

yields

enter image description here

8
  • Thank you very much, moeve. This solves the problem for \footcite{some-article} which now results in «ibid.» as it should. However, if I put \footcite[3]{some-article} it returns «ibid., 3.» whereas I'd like it to be «ibid 3.» Furthermore, if I use {\midsentence\nopunct}as you suggested, the first footnote citing the article is without a period at the end (as in your MWE result where the nicely chosen book in footnote 1 is lacking a dot at the end…) I'm very grateful for your support! (and hope to equally contribute eventually). J
    – Jonas
    Sep 21, 2013 at 0:54
  • Your edit works perfectly, I thank you very much indeed. It gives exactly the citation that is required by Oscola, this should be communicated to the biblatex-oscola team.
    – Jonas
    Sep 21, 2013 at 16:55
  • 1
    @Jonas Well, in that case, the best option is to change the localisation string seenote from {see n\adddot} to {see n} (by \DefineBibliographyStrings{american}{seenote = {see n}}). You might also want to have a look at english-oscola.lbx, but that might be too much for you.
    – moewe
    Sep 22, 2013 at 14:59
  • 1
    @Jonas I'm quite optimistic this question will already have been answered, so look around if you can find it. If you can't find it or the solutions you found did not float your boat, you should ask a new question. (If you want to figure it out yourself, search for \finalnamedelim and \finalandcomma in the biblatex documentation)
    – moewe
    Sep 25, 2013 at 18:43
  • 1
    Huge thanks for sorting out that muddle. I made one tiny correction: \midsentence\nopunct doesn't do the job, I think: it ends up clobbering full points where there is no postnote. Mar 20, 2017 at 21:52
0

Thanks, I now have the result I was looking for, ie multiple authors or editors are separated by an and without any comma if there are not more than three names, and if there are more than three names, the first is given followed by an et al without punctuation.

The code is as follows, and as it is certainly rather messy I'd be grateful for any suggestions:

\documentclass[english]{memoir}
\usepackage[utf8]{inputenc}
\usepackage[english,latin]{babel}
\usepackage[backend=biber,style=oscola,maxnames=3]{biblatex}
\usepackage[style=british]{csquotes}
\usepackage{imakeidx}
\DisemulatePackage{index}

\renewcommand*{\multinamedelim}{\addspace\bibstring{and}\space}
\renewcommand*{\finalnamedelim}{\addspace\bibstring{and}\space}
\renewcommand*{\finalandcomma}{}

\AtBeginBibliography{
  \renewcommand*{\finalnamedelim}{
    \addspace\bibstring{and}\space}
    \renewcommand*{\finalandcomma}{}
}

\renewbibmacro*{name:andothers}{
    \ifboolexpr{
    test {\ifnumequal{\value{listcount}}{\value{liststop}}}
    and
    test \ifmorenames
  }
    {\ifnumgreater{\value{liststop}}{1}
       {\finalandcomma}
       {}
     \andothersdelim\bibstring{andothers}}
    {}}

\newtoggle{incitation}
\pretocmd{\citesetup}{\toggletrue{incitation}}{}{}
\pretocmd{\bibsetup}{\togglefalse{incitation}}{}{}
\newcommand{\biband}{\iftoggle{incitation}{and}{and}}

\DefineBibliographyStrings{english}{ibidem={ibid}}
\DefineBibliographyStrings{english}{seenote = {see n}}
\DefineBibliographyStrings{english}{editor = {ed}}
\DefineBibliographyStrings{english}{editors = {eds}}
\DefineBibliographyStrings{english}{andothers = {et al}}

\makeatletter
\renewbibmacro*{footcite}{%
  \bbx@resetpostnotedelim
  \usebibmacro{cite:citepages}%
  \global\togglefalse{cbx:loccit}%
  \ifboolexpr {test {\ifciteseen} or test {\ifciteibid}}
    {\ifboolexpr {test {\iffieldundef{shorthand}} 
                  or test {\bbx@ifnottrackingcites}}
       {\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}
          {\usebibmacro{footcite:ibid}\bbx@unsetpostnotedelim}
          {\usebibmacro{footcite:note}}}%
       {\usebibmacro{footcite:shorthand}}}
    {\usebibmacro{footcite:full}%
     \usebibmacro{footcite:save}}}

\renewbibmacro*{postnote}{%
  \ifboolexpr {test {\iffieldundef{postnote}} or
               test {\iftoggle{cbx@postnoteprinted}}}%
    {}
    {\ifboolexpr{test {\ifnumequal{\value{bbx@suppresspostnotedelim}}{1}}}
       {\setunit{\addspace}%
        \bbx@resetpostnotedelim}
       {\setunit{\postnotedelim}}%
     \usebibmacro{postnotepagination}}%
  \global\toggletrue{cbx@postnoteprinted}}
\makeatother

\renewbibmacro*{byeditor+others}{%
  \ifnameundef{editor}
    {}
    {\printnames[byeditor]{editor}%
     \setunit{\addspace}%
     \usebibmacro{byeditor+othersstrg}%
     \clearname{editor}%
     \newunit}%
  \usebibmacro{byeditorx}%
  \usebibmacro{bytranslator+others}}

\usepackage{xpatch}
\xpatchbibmacro{byeditor+othersstrg}{\printtext}{\printtext[parens]}{}{}
6
  • 1
    A few comments: This will result in "Author and Buthor and Cuthor", it looks odd to me, but if that's what you want OK. You do not have to redefine \finalnamedelim, \renewcommand*{\finalandcomma}{} is enough. The \AtBeginBibliography{ portion is unnecessary since these definitions are exactly as the global ones. The redefinition of name:andothers seems superfluous; it is actually the original code, as far as I can see. The whole incitation code from \newtoggle{incitation} to \newcommand{\biband}{\iftoggle{incitation}{and}{and}} does not seem to do anything, you can get rid of it.
    – moewe
    Sep 27, 2013 at 14:59
  • Thanks. I removed the \AtBeginBibliography{part and the incitation portion. However, if I remove \finalnamedelim, the comma after the final and when listing authors returns, and if I remove the redefinition of name:andothers, it results in et al. and not et al, the latter of which is what Oscola requires.
    – Jonas
    Sep 27, 2013 at 17:03
  • 1
    Mhhh, that's interesting, the oscola files do not modify name:andothers and your definition is exactly the same as in biblatex.def save for one % that's missing in your code. The \finalandcomma redefinition is overridden by the language file, so indeed \renewcommand*{\finalnamedelim}{\addspace\bibstring{and}\space} does the job, you can remove the line \renewcommand*{\finalandcomma}{} as it is useless in effect.
    – moewe
    Sep 28, 2013 at 6:56
  • 1
    \AtBeginDocument{\let\finalandcomma=\empty} seems to work, so you can replace \renewcommand*{\finalnamedelim}{\addspace\bibstring{and}\space} and \renewcommand*{\finalandcomma}{} by \AtBeginDocument{\let\finalandcomma=\empty}.
    – moewe
    Sep 28, 2013 at 8:02
  • @moewe, thank you. Strangely, the comma before the and in Author A, Author B, and Author C returns, however, if I replace the lines as you suggest… so, I'll stick with it
    – Jonas
    Sep 28, 2013 at 11:59

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .