Exercise 5: Oxford Comma (Solution)
This is a solution to Exercise 5.
\documentclass[captions=tableabove]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{etoolbox}
\newcommand*{\surnamesep}{}%
\newcommand*{\lastsurname}{}%
\newcommand*{\prelastsurname}{}%
\newcommand*{\prelastsurnamesep}{}
\newcommand{\displaynames}[1]{%
\renewcommand*{\surnamesep}{}%
\renewcommand*{\lastsurname}{}%
\renewcommand*{\prelastsurname}{}%
\renewcommand*{\prelastsurnamesep}{}%
\renewcommand*{\do}[1]{%
\surnamesep
\lastsurname
\renewcommand{\lastsurname}{%
\renewcommand{\surnamesep}{,
\renewcommand*{\prelastsurnamesep}{,}}%
\renewcommand{\prelastsurname}{\prelastsurnamesep\ and }%
##1%
}%
}%
\docsvlist{#1}%
\prelastsurname \lastsurname
}
\begin{document}
\displaynames{Parrot,Canary,Zebra,Arara,Duck}
\displaynames{Parrot,Canary,Zebra,Arara}
\displaynames{Parrot,Canary,Zebra}
\displaynames{Parrot,Canary}
\displaynames{Parrot}
\end{document}
Download oxfordcomma.tex or oxfordcomma.pdf.
