Use the oxnotes
biblatex style. It does quite a good and robust job and has a sufficiently nuanced presentation. The laser-scapel precision of a full OSCOLA compliance is not really required outside a legal forum.
You were almost there in the MWE. Some additional adjustments:
In the bib file, for cases, put the case reference in the number
field. This will handle both hardcopy and electronic law reports. For printed cases, page ranges are not required.
For legislation, do not use an author
field. Having the year in the footnote is sufficient.
In the text, use autocite
. Part of the clear-writing ethos for lawyers is to de-clutter the page. Reference details go in the footnotes. (Notice in the MWE how textcite
wants to treat the legislation name - it should be plain.)
Note that you can put formatting commands (latex code) in the bib field items, emph
, etc., if you want.
As to the question of 'should', it is a matter of degree.
If you're feeling tempted to go as far as splitting the bibliography into a legal part and a non-legal part, to help the reader, easiest way is to use keywords
. (There are other ways as well: biblatex is a toolkit, in effect.)
MWE:
\RequirePackage{filecontents}
\begin{filecontents}{\jobname.bib}
@jurisdiction{case,
title = {{Somebody} v {Somebody Else} and Others (No 4)},
number = {[2016] AC 100},
date={2016},
keywords={legal,case},
% pages = {100--178},
% date = {2015-03-10,2015-03-12,2015-04-25,2015-04-27,2015-05-01}
}
@legislation{teu,
keywords = {legal,legislation},
entrysubtype = {eu-treaty},
title = {Consolidated Version of the
Treaty on European Union},
date = {2010},
journaltitle = {OJ},
series = {C},
volume = {83},
pages = {13},
shorthand = {TEU},
pagination = {article},
}
@jurisdiction{c632,title = {Tenacity Investments v Ku-Ring-Gai Council and Ors (No 2)},keywords = {au},number = {[2008] NSWLEC 171},institution = {Land and Environment Court of New South Wales},date = {2008-08-22}, keywords={legal,case},}
@jurisdiction{c606,title = {Lee-Hirons v Secretary of State for Justice},keywords = {au},number = {[2016] UKSC 46},institution = {United Kingdom Supreme Court},date = {2016-07-27},keywords={legal,case},}
@legislation{deddf,
title = {{Deddf Ardderchog (Cymru)}},
year = {2014},
institution = {{Cynulliad Cenedlaethol Cymru}},
languageid = {cy},
keywords={legal,legislation},
}
@legislation{cansw,
title = {Crimes Act (NSW) },
year = {1900},
languageid = {en_AU},
keywords={legal,legislation},
}
@article{article,
title = {Fantastic Findings and Where to Find Them},
author = {Vark, Aar D.},
journal = {Diligent Discoveries},
volume = 45,
number = 3,
pages = {23--32},
year = 2010}
@book{book,
title = {Brilliant Baths},
author = {Allard, M.},
publisher = {Empire Books},
address = {Alpha Centauri},
year = 1998}
@book{austrams,
author = {Austin, Robert P. and Ramsay, Ian M},
title = {Ford, Austin and Ramsay's Principles of Corporations Law},
edition = {16},
publisher = {LexisNexis Butterworths},
date = {2015},
pagination = {paragraph},
ISBN = {9780409338386},
}
\end{filecontents}
\documentclass[welsh,british,a4paper]{article}
%\usepackage[utf8]{inputenc}
%\usepackage{geometry}
%\usepackage{cfr-lm}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[style=oxnotes]{biblatex}
\addbibresource{\jobname.bib}
\begin{document}
Most of my bibliography entries are `normal' sources, such as articles \autocite[e.g.][]{article} and books \autocite[e.g.][]{book}.
\Textcite{article} and \textcite{book} are cited using the author-year system.
However, I also need to cite legal sources, even though I'm not working in law or writing in this discipline.
Nonetheless, these need to be cited appropriately.
Unfortunately, Biblatex doesn't handle these out-of-the-box and the contributed styles which do are all designed for work in law, as opposed to, say, history, philosophy or quantum mechanics.
Hence, the standard styles do not handle these cases well:
\begin{quote}
\textcite{deddf} is a law \autocite{deddf}.
\Textcite[at 150]{case} is a case \autocite{case}.
A legal textbook\autocite{austrams}. And another case\autocite{c632}. And a medium-neutral citation of a case \autocite[at para 23]{c606}. Some EU legislation to play with \autocite{teu}. And a statute\autocite{cansw}. A law from another jurisdiction: \textcite{cansw}
\end{quote}
\printbibheading
\printbibliography [
heading=subbibliography,%
keyword=case,
title={Cases}
]
\printbibliography [
heading=subbibliography,%
keyword=legislation,
title={Statutes}
]
\printbibliography [
heading=subbibliography,%
notkeyword=case,
notkeyword=legislation,
title={General}
]
\hrule
\end{document}
giving:

and the footnotes:

and the bibliography:

Addendum: in the MWE, change
\textcite{deddf} is a law \autocite{deddf}.
\Textcite[at 150]{case} is a case \autocite{case}.
to
\citetitle{deddf} is a law \autocite{deddf}.
\citetitle{case} is a case \autocite[at 150]{case}.
That makes it cleaner.
P.S.
It took me a few minutes to work out why I couldn't find "Deddf Ardderchog" on BAILII! :)
=============================
Completely alternatively (and a couple of days later), exploring moewe's idea about a dedicated \lawcite
command:
I was able to get a workable (minimalist) \lawcite
command up and running in about a dozen steps, using the title
and number
fields on the @rticle
bibentry type, with the use of two keywords, case
and legislation
(and in the background, like suporting cast members, the article
documentclass, and the ext-authortitle
biblatex style, an extension of one of the default styles).
Here is the full MWE, for those who need to start with the result
MWE
% arara: xelatex
% arara: biber
% arara: xelatex
% arara: xelatex
\RequirePackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@article{jones,
title ={Jones v City of Birmingham},
number={224 So. 2d 922 (1969)},
caseref={224 So. 2d 922},
fullcaseref={Jones v. City of Birmingham, 224 So. 2d 922},
partyfirst={Betty Lou JONES},%individual entity>last name as unit
partyfirstrole={appellant},
partysecond={CITY OF BIRMINGHAM},%corporate entity>full name as unit
partysecondrole={appellee},
casetype={appeal},
institution={Court of Appeals of Alabama},
hearingdate={April 22, 1969 and Rehearing Denied May 20, 1969},
decision={Appeal dismissed},
date={1969},
volume={224},
reportseriesname={Southern Reporter},
reportseriesabbrev={So},
reportseries={2},
page={922},
keywords={us, case},
}
@article{ordart,
title ={An Ordinary Article Title},
number={Issue 14},
journaltitle={The Journal},
date={2019-05},
page={10},
}
@article{stat1,
Title ={The Ordinaries Act},
date={2019},
keywords={uk, legislation},
}
\end{filecontents*}
\documentclass[12pt]{article}
\usepackage{fontspec}
\setmainfont{Noto Serif}
\usepackage[british]{babel}
\usepackage{csquotes}
\usepackage{splitidx}
\makeindex
\newindex[Table of Cases]{cases}
\newindex[Table of Statutes]{legislation}
\newcommand\abibname{ext-authortitle}
\newcommand\abibstyle{style=\abibname}
\usepackage[
\abibstyle ,
indexing=cite,
citetracker,
autocite=footnote,
]{biblatex}
\newcommand\mynote{biblatex option used: \texttt{\abibstyle}.}
\defbibnote{abibnote}{\mynote}
\usepackage{xcolor}
\pagecolor{red!3}
\addbibresource{\jobname.bib}
\DeclareFieldFormat[article]{title}{%
\ifkeyword{case}%
{\mkbibemph{#1}}%
{%
\ifkeyword{legislation}%
{#1}%
{\mkbibquote{#1}}%
}%
}
\newbibmacro{sendtocaseindex}{%
\ifboolexpr{
test {\ifkeyword{case}}
}
{\sindex[cases]{\thefield{title}, \thefield{number}}}%
{%
\ifboolexpr{
test {\ifkeyword{legislation}}
}
{\sindex[legislation]{\thefield{title} \thefield{year}}}%
{}%
}%
}
\newbibmacro{gettitle}{%
\printfield{title}%
\usebibmacro{sendtocaseindex}%
}
\newbibmacro{getnumber}{%
\ifkeyword{case}%
{\addcomma\addspace\printfield{number}}%
{%
\ifkeyword{legislation}%
{\addspace\printfield{year}}%
{}%
}%
}
\DeclareCiteCommand{lawcite}
{\usebibmacro{prenote}}
{
\usebibmacro{gettitle}
\ifciteseen{}{\usebibmacro{getnumber}}
}
{}
{\usebibmacro{postnote}}
\begin{document}
%https://stackoverflow.com/questions/2389689/single-column-long-index-pages-in-latex
%Apr 2 '11 at 2:39
%Smiley
%for two columns > one column
%addedL remove clearpage
\let\oldtwocolumn\twocolumn
\renewcommand{\twocolumn}[1][]{#1}
\let\oldclearpage\clearpage
\renewcommand\clearpage{\relax}
\printindex[cases]
\printindex[legislation]
\renewcommand{\twocolumn}[1][]{\oldtwocolumn}
\renewcommand\clearpage{\oldclearpage}
\section{Example}
\lawcite{jones}
\lawcite[under section 27A]{stat1}, provides that in the situation of ...
\cite{ordart}
Second cite: \lawcite[per Judge Cates at page 924]{jones}, was decided on the basis that (to paraphrase) ``what the court hasn't seen, the court can't review'', and that any redeeming social importance of prowess and endowment is a question of fact.
\printbibliography[prenote=abibnote,nottype=jurisdiction,
notkeyword=case,notkeyword=legislation]
\begin{center}
\textemdash
\textemdash
\end{center}
\end{document}
and the output

The starting point is deciding how granular the bibliographic information should be: the more granular, the more effort and prowess is required (just like with an image, from low-res to high-res).
In the end, a legal case citation is just composed of an identifier, the name of the case, and of a locator, the case reference, which is a way of finding the decision. This two-block structure, a name and address in effect, is the bare minimum.
We can capture, store and process the individual components, but in the end it has to come back to case name and case reference. Happily, both of those are constants, in programming terms, so we can start there.
The purpose of this exercise is to see what would be involved in building a fully-fledged biblatex style (not that we will; it is just to get the idea).
So let's arbitrarily choose a biblatex bibentry type, @article
(just because it's there), and, picking a case at random (via Google Scholar, starting at the jurisdictions beginning with "A", so Alabama), in our .bib
file's bibentry we put the case name in the title
field and the case reference in the number
field.
@article{jones,
title ={Jones v City of Birmingham},
number={224 So. 2d 922 (1969)},
keywords={us, case},
}
Note the keywords. They will become important later. Giving thought to how to classify the information flows into the processing design decisions that need to be made.
While we're in the bib file, let's also set up an ordinary article entry, for comparison purposes.
@article{ordart,
title ={An Ordinary Article Title},
number={Issue 14},
journaltitle={The Journal},
date={2019-05},
page={10},
}
Now, setting up a .tex
document which cites those two entries
\section{Example}
\cite{jones}
\noindent\cite{ordart}
and also prints a bibliography, we cycle through the workflow, latex
-biber
-latex
, and get this:

Firstly, cases mixed in with other general bibliography looks odd: we'll remove them from there and print them separately later (somewhere, yet to be decided).
Secondly, in the text, the case name has quotes, is upright and not italic; and the case reference (the number
field) has not printed.
Fixing the bibliography so that it does not print cases is easy via the keyword technique:
\printbibliography[notkeyword=case]
Now starts the journey:
We want a cite command, something like \lawcite{jones}
, that prints italic case names and then prints the number
field after the case name, but doesn't do any of that to "ordinary" articles (remember we are inside the @article
data structure).
Thinking about it, we will also need a comma and a space between the two pieces of text.
Declaring a cite command, giving it a name lawcite
, and getting it to print the title
field is done with \DeclareCiteCommand
, which takes four parameters: what ti print before the citation, the citation itself, what delimiter to use if there is a list of cites, and what to print after.
So a barebones \DeclareCiteCommand
would look like this:
\DeclareCiteCommand{lawcite}
{}
{
\printfield{title}
}
{}
{}
Beefing it up a bit with the biblatex built-in prenote
and postnode
bibmacros, for before and after, gives this:
\DeclareCiteCommand{lawcite}
{\usebibmacro{prenote}}
{
\printfield{title}
}
{}
{\usebibmacro{postnote}}
\printfield
just prints the field according to whatever formatting instructions have been given to the field with \DeclareFieldFormat
.
For the title
field formatting, we can use the \ifkeyword
{condition}{true}{false} test to check if the bibentry currently being processed contains the keyword case
and conditionally print it with emphasis if it does (using \mkbibemph
) and print it with quotes if it doesn't (using \mkbibquote
).
\DeclareFieldFormat
can also take an optional list of bibentry types to restrict the formatting to, so let's only change the title
format for article
:
\DeclareFieldFormat[article]{title}{%
\ifkeyword{case}%
{\mkbibemph{#1}}%
{\mkbibquote{#1}}%
}
Cycling through the workflow once more, we get:

Now to add the case reference to the cite: \ifkeyword
comes in handy again, this time for printing the number
field (with comma and space in front).
\DeclareCiteCommand{lawcite}
{\usebibmacro{prenote}}
{
\printfield{title}
\ifkeyword{case}%
{\addcomma\addspace\printfield{number}}%
{}%
}
{}
{\usebibmacro{postnote}}
We won't do any format changes to the number
field, just let it print in whatever the default format is.

Now, for ease of code maintenance, we can move code blocks that look like could be used in multiple places later into their own macros, called bibmacro
s (really, they are just a \newcommand
with a wrapper).
Let's move the title
printing and the number
printing into bibmacros, call them gettitle
and getnumber
:
\newbibmacro{gettitle}{%
\printfield{title}%
}
\newbibmacro{getnumber}{%
\ifkeyword{case}%
{\addcomma\addspace\printfield{number}}%
{}%
}
and the cite command changes to
\DeclareCiteCommand{lawcite}
{\usebibmacro{prenote}}
{
\usebibmacro{gettitle}
\usebibmacro{getnumber}
}
{}
{\usebibmacro{postnote}}
which, amongst other things, is clearer to read.
Now, the table of cases.
Two methods are available.
We can split the bibliography to print the cases separately, but then it won't show the page numbers the cases are referred to on (it is unlikely that a reader of a real-world 10-30 page article or essay would need the navigational aid of a table of cases, though).
The second method is to use an index, split it, and call it a table.
There are various packages and utilities available for this. Choosing randomly, let's use the splitidx
package in combination with the SplitIndex engine (a Perl script, I understand).
Activate the package with \usepackage{splitidx}
, initiate index building with \makeindex
, define a cases index title "Table of Cases" with \newindex[Table of Cases]{cases}
, and we're ready to use the \sindex
command to send entries to our split index.
But what do we want to do? We will index whenever a case is mentioned (=title
). Printing the title is the gettitle
bibmacro's job, so the action will happen there. It will have to decide if the entry is a case, and if it is, use the \sindex
command to send the case name to the index.
Now, biblatex has access to the etoolbox
package, and from there we can use the \ifboolexpr
command to build up a really complicated set of conditions if we wanted to, using and
and or
and brackets (rather than one or two (or three of four) nested \if
s of different types). The structure is \ifboolexpr
{condtions}{true}{false}, like this:
\ifboolexpr{
test {\ifkeyword{case}}
}
{true}%
{false}%
And because indexes don't understand biblatex code, we will send the raw data of the title
field to the cases index with:
\sindex[cases]{\thefield{title}}
The gettitle
bibmacro has now become:
\newbibmacro{gettitle}{%
\printfield{title}%
\ifboolexpr{
test {\ifkeyword{case}}
}
{\sindex[cases]{\thefield{title}}}%
{}%
}
Putting in the \printindex[cases]
command and cycling through the worfklow, which has now expanded to latex-biber-latex-splitindex-latex, we get this:

The upright font is correct for indexes of cases, but the two-column format is a bit extravagant (and structurally distinct visually from the rest of the document) and the page-feed is unnecessary.
Applying an SE workaround to revert to one-column (and also not have a page feed)
%https://stackoverflow.com/questions/2389689/single-column-long-index-pages-in-latex
%Apr 2 '11 at 2:39
%Smiley
%for two columns > one column
%addedL remove clearpage
\let\oldtwocolumn\twocolumn
\renewcommand{\twocolumn}[1][]{#1}
\let\oldclearpage\clearpage
\renewcommand\clearpage{\relax}
\printindex[cases]
\renewcommand{\twocolumn}[1][]{\oldtwocolumn}
\renewcommand\clearpage{\oldclearpage}
we get this

Sidenote: because I like dots and square brackets, I'm feeding SplitIndex an index style file like this:
delim_0 "\\space\\dotfill\\space ["
delim_1 "\\space\\dotfill\\space ["
delim_2 "\\space\\dotfill\\space ["
delim_n "], ["
delim_r "--"
delim_t "]"
modified from the OSCOLA one (which does the dots).
Next on the journey, it might be nice to have the case reference in the index as well, especially now that it is wider and the whole line is available.
So the indexing command \sindex
now gets given an extra bit, , \thefield{number}
:
\newbibmacro{gettitle}{%
\printfield{title}%
\ifboolexpr{
test {\ifkeyword{case}}
}
{\sindex[cases]{\thefield{title}, \thefield{number}}}%
{}%
}
Workflow cycle (again), and, result:

That's cases taken care of. What about legislation?
Put in a \lawcite{stat1}
, cycle through, and we get:

Ooops. It's in the bibliography. And in the text it has quotes and no year.
Formatting of the legislation title without quotes is done with our old friend \DeclareFieldFormat
and the legislation
keyword:
\DeclareFieldFormat[article]{title}{%
\ifkeyword{case}%
{\mkbibemph{#1}}%
{%
\ifkeyword{legislation}%
{#1}%
{\mkbibquote{#1}}%
}%
}
Printing the legislation year can be done by adding
\ifkeyword{legislation}%
{\addspace\printfield{year}}%
{}%
to the getnumber
bibmacro like this:
\newbibmacro{getnumber}{%
\ifkeyword{case}%
{\addcomma\addspace\printfield{number}}%
{%
\ifkeyword{legislation}%
{\addspace\printfield{year}}%
{}%
}%
}
Perhaps getnumber
should be renamed? What it is actually doing is getting the second part of the citation block, which for legislation is, in this exercise, the year
field.
Indexing legislation (with title and year) is done in gettitle
with a nested test:
\newbibmacro{gettitle}{%
\printfield{title}%
\ifboolexpr{
test {\ifkeyword{case}}
}
{\sindex[cases]{\thefield{title}, \thefield{number}}}%
{%
\ifboolexpr{
test {\ifkeyword{legislation}}
}
{\sindex[cases]{\thefield{title} \thefield{year}}}%
{}%
}%
}
(Side remark: Astute readers will notice the typing error - I didn't, until later.)
And what do we want to print if a case is cited a second time? Legislation is OK, title and year; but what about a case?
Cycling through the workflow:

Oops. Too eager.
The bibliography can be cleaned of legislation with a notkeyword=legislation
added to the \printbibliography
options.
The legislation was sent to the cases index, and there wasn't a \printindex
command for it anyway. Easily fixed.
\newbibmacro{gettitle}{%
\printfield{title}%
\ifboolexpr{
test {\ifkeyword{case}}
}
{\sindex[cases]{\thefield{title}, \thefield{number}}}%
{%
\ifboolexpr{
test {\ifkeyword{legislation}}
}
{\sindex[legislation]{\thefield{title} \thefield{year}}}%
{}%
}%
}
and putting a \printindex[legislation]
in the document.
Now, for second and subsequent citations, Biblatex has a \ifciteseen
we can use (and Biblatex's citetracker
option must be turned on for this to work).
If it's the first time the entry has been cited, we want to print both data blocks (the "name and address" structure type); otherwise, just print the first one:
\ifciteseen{}{\usebibmacro{getnumber}}
The \lawcite
cite command can have this task.
\DeclareCiteCommand{lawcite}
{\usebibmacro{prenote}}
{
\usebibmacro{gettitle}
\ifciteseen{}{\usebibmacro{getnumber}}
}
{}
{\usebibmacro{postnote}}
One last bit of tidy-up: the indexing code can go into its own bibmacro:
\newbibmacro{sendtocaseindex}{%
\ifboolexpr{
test {\ifkeyword{case}}
}
{\sindex[cases]{\thefield{title}, \thefield{number}}}%
{%
\ifboolexpr{
test {\ifkeyword{legislation}}
}
{\sindex[legislation]{\thefield{title} \thefield{year}}}%
{}%
}%
}
so that gettitle
simplifies down to:
\newbibmacro{gettitle}{%
\printfield{title}%
\usebibmacro{sendtocaseindex}%
}
Cycle workflow, and:

And so we end where we began.
===
That's the citation done.
Adding more and more logic in, tweaking and enhancing, will always continue (for example, the astute reader will be asking, "What happens to legislation cited a second time? Do we want to keep the year or not?"). More and more if-then-elses. And converting \lawcite
to a footnote reference system (like the one that OSCOLA implements) would be straight-forward, code-wise. Putting in parallel reports would be a bit tricky, though, but maybe sets of biblatex literal lists could be used.
Using a four-part structure of case name, case reference, year as a separate and moveable item, and jursidiction would not be that hard, but the medium neutral citation (MNC) method - of year/court/casenumber-in-the-year - is simpler and more useful (a legal doi, in effect).
Aside from courts and judges not having a real requirement for bibliographies in their judgments, building a bibliography driver from scratch (why?) would be about the same amount of effort, with the added layer of real blocks of text and their arrangement to consider. There is large overlap with citations, hence the usefulness of bibmacros.
(Plus also: Biblatex can do mappings between sources, and dynamic redefinitions, and has various types of inheritance, which could be very powerful in a meta-metadata way.)
So overall, the major questions, the 'driver' questions if you will, are going to be the Librarians' Questions: What level of granularity should the bib data have? And: what classification methodology should be applied to it (e.g., what keywords, if the keyword method is used)? Everything else flows from that.
:)
There is also the logically trivial (but probably most time-comsuning) component of: what should the metadata be? Is there an International Standard for Legal Citation Bibliographic Information Interchange (ISO-LCBII)?
If I had a bibentry like this one, stored under whatever bibentry type turns out to be suitable:
@article{jones,
partyfirst={Betty Lou JONES},%individual entity>last name as unit
partyfirstrole={appellant},
partysecond={CITY OF BIRMINGHAM},%corporate entity>full name as unit
partysecondrole={appellee},
casetype={appeal},
bench={Cates},
institution={Court of Appeals of Alabama},
hearingdates={April 22, 1969 and Rehearing Denied May 20, 1969},
decision={Appeal dismissed},
date={1969},
volume={224},
reportseriesname={Southern Reporter},
reportseriesabbrev={So},
reportseries={2},
page={922},
mnc={[1969] ALCA 420},
mncyear={1969},
mnccourt={ALCA},
mncnumber={420},
factslocation={The Blue Note Lounge},
factsdate={1967-12-03},
keywords={us, case},
}
of what use would it be?
@legislation
and@jurisdiction
. You may also have to define new fields if some bits of information don't fit into the default fields. Alan's answer to the executive order question is still overall valid, although new entry types and fields need to be registered using a custom data model to work properly now (see tex.stackexchange.com/q/175776/35864 and tex.stackexchange.com/q/163303/35864). ...\printtext
and would try to use field formats instead. In principle I would favour a\cite
that automatically deals with@jurisdiction
and@legislation
over a dedicated\lawcite
command. But the implementation becomes more messy if you have to check for the entry type - andauthoryear-comp
is not for the faint-hearted already.\lawcite
using@case
and@statute
bibentry types to store the granularity of information required: github.com/texcicada/lawcite