% Copyright (C) 2020 Eduardo C. Lourenço de Lima
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
% version 1.3 of this license or (at your option) any later
% version.  The latest version of this license is in
%
%   http://www.latex-project.org/lppl.txt
%
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
\documentclass{ltxdoc}

\newcommand\fileversion{0.1a}
\newcommand\filedate{February 3, 2020}

\usepackage{color}
\usepackage{classics}

\newpagination \books    {book}    {books}    { and }
\newpagination \parts    {part}    {parts}    { and }
\newpagination \sections {section} {sections} { and }
\newpagination \lines    {line}    {lines}    { and }

\newclassic[ to ]{Homer}  {\books{\classicsRoman{#1}}|, \lines{#1}}
\newclassic{Plato}        {#1|#1|#1}
\newclassic{Aristotle}    {#1|\textit{#1}|#1}
\newclassic{Stephanus}    {#1|\textit{#1}|#1}
\newclassic{Bekker}       {#1|\textit{#1}|#1}
\newclassic{Hume}         {#1|.#1|.#1}
\newclassic{HumeExample}  {\books{#1}|, \parts{#1}|, \sections{#1}}
\newclassic{HomerExample} {\books{\classicsRoman{#1}}|, \lines{#1}}

\definecolor{myblue}{rgb}{0,0.2,0.6}

\newenvironment     {Macros} {\begin{list}{}{\setlength\itemsep{0pt}\setlength\leftmargin{0pt}}}{\end{list}}
\newcommand\Macro        [2] {\item[\llap{\textsf{\color{myblue}\texttt{\char92}#1}}]#2}
\newcommand\MacroExample [2] {\item[\llap{\textsf{\texttt{\char92}#1}}]#2}
\newcommand\Note             {\par\textbf{Note:} }
\newcommand\etc              {\mbox{etc.}}
\newcommand\work         [1] {\textit{#1}}
\newcommand\badcite      [1] {\begingroup(\frenchspacing #1)\endgroup}

\begin{document}
\title{The \textsf{\color{myblue} classics} package,\thanks{This document
corresponds to \textsf{classics}~\fileversion, dated~\filedate.  I am grateful
to Joseph Wright, Scott \mbox{H.}, and Robert Alessi for suggestions.}\\{or the end of
anachronism}}
\author{Eduardo C. Louren\c{c}o de Lima \\ \texttt{elourenco@phi.pro.br}}
\maketitle


        \begin{abstract}\noindent This package provides a basic framework to
        cite classic works in accordance with traditional pagination systems.
        It may be used in conjunction with other citation
        packages.\end{abstract}

                           \section*{Introduction}

If you feel there is something wrong with ``Plato \badcite{1994: pp.  50--1}'',
``Aristotle \badcite{\work{Ethics}, 44}'' or ``Hume \badcite{2000: 303}'', this
package is for you.  The |classics| package provides a basic framework to cite
classic works in compliance with traditional pagination systems. For example:
        \begin{list}{}{\setlength\itemsep{0pt}\setlength\parskip{0pt}}
        \item[]\Stephanus [Theaetetus] {142}[d][4--5]
        \item[]\Bekker* [Nic. Eth.] {1179}[b][14]{1180}[a][29]
        \item[]\Hume[THN]{3}[1][2]
        \end{list}
Citation commands created by |classics| can also be used in conjunction with
other citations engines such as standard |\cite|, |biblatex|, |natbib|, \etc

                               \section{Synopsis}


\begin{Macros}
\Macro{newclassic}{\oarg{range separator} \marg{classic} \marg{list of formatting directives}}
\Macro{|<|classic|>| }{\oarg{work} \marg{page} \oarg{section}}
\Macro{|<|classic|>*|}{\oarg{work} \marg{page} \oarg{section} \marg{last page} \oarg{section}}
\Macro{newpagination}{\marg{pagination} \marg{singular} \marg{plural} \marg{conjunction}}
\Macro{|<|pagination|>|}{\marg{range}}
\Macro{DeclareClassicWorkFormat}{\marg{formatting directive}}

\end{Macros}

\newpage

                             \section{Basic usage}

\setlength\parindent{0pt}
\setlength\parskip{1ex}

        \begin{Macros}
        \Macro{newclassic}{\oarg{range separator} \marg{classic} \marg{list of formatting directives}}
        \end{Macros}

Creates a citation command |\|\meta{classic} based on a \meta{list of
formatting directives} separated by vertical bars. Each formatting directive
has its own |#1| and is used to declare the format in which to typeset the
reference to a subdivision of a classic work. There can be at most six such
directives. As an example:

        \begin{verbatim}\newclassic {Aristotle} {#1|\textit{#1}|#1}\end{verbatim}
would create a new citation command |\Aristotle|: 

        \begin{Macros}
        \MacroExample{Aristotle}{\oarg{work} \marg{page} \oarg{column} \oarg{line}}
        \MacroExample{Aristotle*}{\oarg{work} \marg{page} \oarg{column} \oarg{line} \marg{last page} \oarg{column} \oarg{line}}
        \end{Macros}
to typeset references in which letters for \meta{column} are printed in italic
type.  The starred version |\Aristotle*| is used to cite a range of two pages
separated by \meta{range separator}.

\Note |\Aristotle*| will not typeset \meta{last page} if \meta{page} and
\meta{last page} are the same.  However, \meta{last page} will be preserved if
|\Aristotle*| is created by the starred version |\newclassic*|.

        \begin{Macros}
        \Macro{newpagination} \marg{pagination} \marg{singular} \marg{plural} \marg{conjunction}
        \end{Macros}

Creates a command \meta{pagination} to typeset \meta{singular} or \meta{plural}
depending on whether subsequent arguments to \meta{pagination} are
singular or plural.  As an example:

\begin{verbatim}\newpagination {\pages} {page} {pages} { and }\end{verbatim}
would create the command |\pages|:
        \begin{Macros}
        \MacroExample{pages} \marg{range} 
        \end{Macros}

that automatically typesets |page| \meta{range} if \meta{range} is singular, or
|pages| \meta{range} if \meta{range} is plural, that is, if it contains a
comma, a hyphen, a dash, or \meta{conjunction}.

{\Note} \meta{conjunction} might need to be enclosed in spaces.

        \begin{Macros}
        \Macro{DeclareClassicWorkFormat}{\marg{formatting directive}}
        \end{Macros}
Defines the format to typeset classic titles in. The default \meta{formatting directive} is |\textit{#1}|.

\newpage

        \begin{Macros}
        \Macro{classicsalph}{\marg{integer}}
        \Macro{classicsAlph}{\marg{integer}}
        \Macro{classicsroman}{\marg{integer}}
        \Macro{classicsRoman}{\marg{integer}}
        \end{Macros}

These commands may come in handy if you want to typeset a subdivision as a
letter or Roman numeral, lowercase or uppercase.

                            \section{Advanced usage}

\begingroup
\DeclareClassicWorkFormat{\textit{#1},}

You may combine |\newclassic| and |\newpagination| to create complex
citation styles. For example:
        \begin{Macros}
        \Macro{Hume}{\oarg{work} \marg{book} \oarg{part} \oarg{section}}
        \end{Macros}
can be created by:
        \begin{verbatim}
\DeclareClassicWorkFormat{\textit{#1},}
\newpagination  {\books}    {book}    {books}    { and }
\newpagination  {\parts}    {part}    {parts}    { and }
\newpagination  {\sections} {section} {sections} { and }
\newclassic {Hume} {\books{#1}|, \parts{#1}|, \sections{#1}}
\end{verbatim}
so that: \begin{verbatim}\Hume[Treatise]{3}[1][2]\end{verbatim}would typeset
``\HumeExample[Treatise]{3}[1][2]''.

\begin{Macros}
\Macro{Homer}{\oarg{work} \marg{book} \oarg{lines}}
\end{Macros}
can be created by:

\begin{verbatim}
\DeclareClassicWorkFormat{\textit{#1},}
\newpagination {\books} {book} {books} { and }
\newpagination {\lines} {line} {lines} { and }
\newclassic {Homer} {\books{\classicsRoman{#1}}|, \lines{#1}}
\end{verbatim}
so that:
\begin{verbatim}\Homer[Odyssey]{3}[100--2]\end{verbatim}
will typeset: ``\HomerExample[Odyssey]{3}[100--2]''.
\endgroup


                               \subsection{Caveat}

Citation styles created by the |classics| package can also be used in
conjunction with standard |\cite|, |biblatex|, |natbib|, \etc

A simple |classics| pagination command created by |\newpagination| can be used
directly within the optional argument to |\cite|:

\begin{Macros}
\Macro{cite} |[\pages|\marg{number}|]| \marg{key}
\end{Macros}

However, a complex |classics| citation command created by |\newclassic| can be
used within the optional argument to |\cite| only if it is enclosed in braces.

\begin{Macros}
\Macro{cite} |[{\Homer|\marg{book}\oarg{line}|}]| \marg{key}
\end{Macros}

For example:
\begin{verbatim}
\documentclass{article}
\usepackage{classics}
\newclassic{Homer}{#1|:#1}
\begin{document}

\cite[{\Homer{3}[100--2]}]{Odyssey}

\begin{thebibliography}{10}
 \bibitem[Od.]{Odyssey} Homer. \textit{Odyssey}.
\end{thebibliography}

\end{document}
\end{verbatim}



                               \section{Examples}

\begingroup
\setlength\parindent{0pt}
\small

                               \subsection{Plato}


\verb=\newclassic{Plato}{#1|#1|#1}=

|\Plato {142}[a]                          |\Plato  {142}[a]\par
|\Plato {142}[a][3]                       |\Plato  {142}[a][3]\par
|\Plato {142}[a][3--4]                    |\Plato  {142}[a][3--4]\par
|\Plato*{142}[a][3]{142}[b]               |\Plato* {142}[a][3]{142}[b]\par
|\Plato*{142}[a][3]{142}[b][4]            |\Plato* {142}[a][3]{142}[b][4]\par
|\Plato*{142}[a][3]{143}[b]               |\Plato* {142}[a][3]{143}[b]\par
|\Plato*{142}[a][3]{143}[b][4]            |\Plato* {142}[a][3]{143}[b][4]\par
|\Plato [Theaet.]{142}[a][3]              |\Plato  [Theaet.]{142}[a][3]\par
|\Plato*[Theaet.]{142}[a][3]{143}[b][4]   |\Plato* [Theaet.]{142}[a][3]{143}[b][4]\par

                             \subsection{Aristotle}

\verb=\newclassic {Aristotle} {#1|\textit{#1}|#1}=\par\medskip

|\Aristotle        {185}                         |\Aristotle        {185}\par
|\Aristotle        {185}[a]                      |\Aristotle        {185}[a]\par
|\Aristotle*       {185}[a]{185}[b]              |\Aristotle*       {185}[a]{185}[b]\par
|\Aristotle*       {185}[a]{185}[b][2]           |\Aristotle*       {185}[a]{185}[b][2]\par
|\Aristotle*       {185}[a]{186}                 |\Aristotle*       {185}[a]{186}\par
|\Aristotle*       {185}[a]{186}[a]              |\Aristotle*       {185}[a]{186}[a]\par
|\Aristotle*       {185}[a]{186}[a][3]           |\Aristotle*       {185}[a]{186}[a][3]\par
|\Aristotle [Phys.]{}                            |\Aristotle [Phys.]{}\par
|\Aristotle [Phys.]{185}                         |\Aristotle [Phys.]{185}\par
|\Aristotle [Phys.]{185}[a]                      |\Aristotle [Phys.]{185}[a]\par
|\Aristotle*[Phys.]{185}[a]{185}[b]              |\Aristotle*[Phys.]{185}[a]{185}[b]\par
|\Aristotle*[Phys.]{185}[a]{185}[b][2]           |\Aristotle*[Phys.]{185}[a]{185}[b][2]\par
|\Aristotle*[Phys.]{185}[a]{186}                 |\Aristotle*[Phys.]{185}[a]{186}\par
|\Aristotle*[Phys.]{185}[a]{186}[a]              |\Aristotle*[Phys.]{185}[a]{186}[a]\par
|\Aristotle*[Phys.]{185}[a]{186}[a][3]           |\Aristotle*[Phys.]{185}[a]{186}[a][3]\par
|\Aristotle*[Phys.]{185}[a]{186}[a][3--5]        |\Aristotle*[Phys.]{185}[a]{186}[a][3--5]\par
|\Aristotle [Phys.]{185}[a][10]                  |\Aristotle [Phys.]{185}[a][10]\par
|\Aristotle [Phys.]{185}[a][10--2]               |\Aristotle [Phys.]{185}[a][10--2]\par
|\Aristotle*[Phys.]{185}[a][10]{185}[b]          |\Aristotle*[Phys.]{185}[a][10]{185}[b]\par
|\Aristotle*[Phys.]{185}[a][10]{185}[b][2]       |\Aristotle*[Phys.]{185}[a][10]{185}[b][2]\par
|\Aristotle*[Phys.]{185}[a][10]{186}             |\Aristotle*[Phys.]{185}[a][10]{186}\par
|\Aristotle*[Phys.]{185}[a][10]{186}[a]          |\Aristotle*[Phys.]{185}[a][10]{186}[a]\par
|\Aristotle*[Phys.]{185}[a][10]{186}[a][3]       |\Aristotle*[Phys.]{185}[a][10]{186}[a][3]\par
|\Aristotle*[Phys.]{185}[a][10]{186}[a][3--5]    |\Aristotle*[Phys.]{185}[a][10]{186}[a][3--5]\par

                               \subsection{Homer}

\begingroup
\DeclareClassicWorkFormat{\textbf{#1},}

\verb=\DeclareClassicWorkFormat{\textbf{#1},}=\par
\verb=\newclassic[ to ]{Homer}{\books{\classicsRoman{#1}}|, \lines{#1}}=\par

|\Homer {2}[100]                    |\Homer {2}[100]\par
|\Homer {2}[100--4]                 |\Homer {2}[100--4]\par
|\Homer*{2}[100]{3}[80]             |\Homer*{2}[100]{3}[80]\par
|\Homer [Iliad]{2}[100]             |\Homer [Iliad]{2}[100]\par
|\Homer*[Iliad]{2}[100]{3}[80]      |\Homer*[Iliad]{2}[100]{3}[80]\par
\endgroup

\endgroup

\end{document}