summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/turabian-formatting/turabian-thesis.cls
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/turabian-formatting/turabian-thesis.cls
Initial commit
Diffstat (limited to 'macros/latex/contrib/turabian-formatting/turabian-thesis.cls')
-rw-r--r--macros/latex/contrib/turabian-formatting/turabian-thesis.cls582
1 files changed, 582 insertions, 0 deletions
diff --git a/macros/latex/contrib/turabian-formatting/turabian-thesis.cls b/macros/latex/contrib/turabian-formatting/turabian-thesis.cls
new file mode 100644
index 0000000000..a95a62a7b6
--- /dev/null
+++ b/macros/latex/contrib/turabian-formatting/turabian-thesis.cls
@@ -0,0 +1,582 @@
+% Turabian Formatting for LaTeX
+%
+% Based on Kate L. Turabian's "A Manual for Writers of Research Papers, Theses,
+% and Dissertations," 9th edition.
+%
+% ==============================
+% Copyright 2013-2018 Omar Abdool
+%
+% This work may be distributed and/or modified under the conditions of the LaTeX
+% Project Public License (LPPL), 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.
+%
+% LPPL Maintenance Status: maintained (by Omar Abdool)
+%
+% This work consists of the files: turabian-formatting.sty,
+% turabian-researchpaper.cls, turabian-thesis.cls, turabian-formatting-doc.tex,
+% and turabian-formatting-doc.pdf (in addition to the README file).
+%
+% ==============================
+%
+%
+
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{turabian-thesis}[2018/08/01 Turabian Theses and Dissertations]
+
+
+% Default point size
+\def\@@ptsize{12pt}
+
+
+% Document class options: handling
+
+\DeclareOption{raggedright}{%
+ \PassOptionsToPackage{\CurrentOption}{turabian-formatting}}
+
+\DeclareOption{authordate}{%
+ \PassOptionsToPackage{\CurrentOption}{turabian-formatting}}
+
+\DeclareOption{noadjustbib}{%
+ \PassOptionsToPackage{\CurrentOption}{turabian-formatting}}
+
+\DeclareOption{endnotes}{%
+ \PassOptionsToPackage{\CurrentOption}{turabian-formatting}}
+
+\DeclareOption{twocolumn}{%
+ \ClassWarningNoLine{turabian-researchpaper}{The '\CurrentOption' option is not supported.}
+ \OptionNotUsed}
+
+\DeclareOption{notitlepage}{%
+ \ClassWarningNoLine{turabian-researchpaper}{The '\CurrentOption' option is not supported.}
+ \OptionNotUsed}
+
+\DeclareOption{10pt}{\def\@@ptsize{10pt}}
+
+\DeclareOption{11pt}{\def\@@ptsize{11pt}}
+
+\DeclareOption{12pt}{\def\@@ptsize{12pt}}
+
+\DeclareOption{emptymargins}{%
+ \ClassWarningNoLine{turabian-researchpaper}{The '\CurrentOption' option is no longer available}
+ \OptionNotUsed}
+
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{book}}
+
+\ProcessOptions\relax
+
+
+% Load "book" document class with options
+\LoadClass[titlepage,oneside,onecolumn,\@@ptsize]{book}
+
+
+% Load turabian-formatting package
+\RequirePackage{turabian-formatting}
+
+
+% Binding offset: 0.5in
+\setlength\oddsidemargin{0.5in}
+\AtEndPreamble{%
+ \addtolength\textwidth{-\oddsidemargin}}
+
+
+% Figures and tables: support for double numeration formatting
+\newif\if@doublenumerate\@doublenumeratetrue
+
+
+% Figures: number formatting
+\def\tf@figuredblnumprefix{\thechapter}
+\newif\if@figuredblnum\@figuredblnumfalse
+
+\renewcommand{\thefigure}{\if@figuredblnum \tf@figuredblnumprefix.\fi \@arabic\c@figure}
+
+
+% Tables: number formatting
+\def\tf@tabledblnumprefix{\thechapter}
+\newif\if@tabledblnum\@tabledblnumfalse
+
+\renewcommand{\thetable}{\if@tabledblnum \tf@tabledblnumprefix.\fi \@arabic\c@table}
+
+
+% Document structure: formatting
+\def\frontmatter{%
+ \if@openright \cleardoublepage \else \clearpage \fi
+ \@mainmatterfalse
+ \pagenumbering{roman}
+ \pagestyle{plain}}
+
+\def\mainmatter{%
+ \if@openright \cleardoublepage \else \clearpage \fi
+ \@mainmattertrue
+ \pagenumbering{arabic}
+ \pagestyle{headings}
+ \@addcontentslineskip}
+
+\def\backmatter{%
+ \if@openright \cleardoublepage \else \clearpage \fi
+ \@mainmatterfalse
+ \@addcontentslineskip}
+
+
+% Part: formatting
+\renewcommand\part{%
+ \if@openright \cleardoublepage \else \clearpage \fi
+ \secdef\@part\@spart}
+
+\def\tf@partformat{\normalfont\bfseries\normalsize\singlespacing\centering}
+
+% Part: heading with empty page
+\def\@part[#1]#2{%
+ \ifnum \c@secnumdepth >-2\relax
+ \if@mainmatter
+ \refstepcounter{part}%
+ \addcontentsline{toc}{part}%
+ {\protect\numberline{\partname\space\thepart}#1}%
+ \else
+ \addcontentsline{toc}{part}{#1}%
+ \fi
+ \else
+ \addcontentsline{toc}{part}{#1}%
+ \fi
+ \markboth{}{}%
+ { \tf@partformat
+ \interlinepenalty \@M
+ \thispagestyle{empty}%
+ \ifnum \c@secnumdepth >-2\relax
+ \if@mainmatter
+ \partname\nobreakspace\thepart
+ \par\nobreak
+ \vspace*{1\baselineskip}%
+ \fi
+ \fi
+ #2\par}
+ \@endpart}
+
+% Part: heading with plain page style; allows following part description
+\def\@spart#1{%
+ \ifnum \c@secnumdepth >-2\relax
+ \if@mainmatter
+ \refstepcounter{part}%
+ \addcontentsline{toc}{part}%
+ {\protect\numberline{\partname\space\thepart}#1}%
+ \fi
+ \fi
+ \markboth{}{}%
+ { \tf@partformat
+ \interlinepenalty \@M
+ \thispagestyle{plain}%
+ \ifnum \c@secnumdepth >-2\relax
+ \if@mainmatter
+ \partname\nobreakspace\thepart
+ \par\nobreak
+ \vspace*{1\baselineskip}%
+ \fi
+ \fi
+ \ifstrempty{#1}{}{#1\par\nobreak}}%
+ \vspace{\dimexpr 3\tf@singlelineskip -\baselineskip \relax}
+ \@afterheading}
+
+\def\@endpart{\if@openright \cleardoublepage \else \clearpage \fi}
+
+
+% Chapter: set top section command name to "chapter"
+\def\tf@topsecname{chapter}
+
+% Chapter: adjust figure/table counters based on @doublenumerate and chapter before
+\newcounter{tf@tempchapfcnt}
+\newcounter{tf@tempchaptcnt}
+
+\newif\if@tfchapterbefore\@tfchapterbeforefalse
+
+\def\tf@chapcounter{%
+ \if@doublenumerate
+ \if@tfchapterbefore \else
+ \setcounter{tf@tempchapfcnt}{\value{figure}}
+ \setcounter{tf@tempchaptcnt}{\value{table}}
+ \fi
+ \refstepcounter{chapter}
+ \@tfchapterbeforetrue
+ \@figuredblnumtrue
+ \@tabledblnumtrue
+ \else
+ \setcounter{tf@tempchapfcnt}{\value{figure}}
+ \setcounter{tf@tempchaptcnt}{\value{table}}
+ \refstepcounter{chapter}
+ \setcounter{figure}{\value{tf@tempchapfcnt}}
+ \setcounter{table}{\value{tf@tempchaptcnt}}
+ \fi}
+
+\def\tf@restoreftcounters{%
+ \if@doublenumerate
+ \if@tfchapterbefore
+ \setcounter{figure}{\value{tf@tempchapfcnt}}
+ \setcounter{table}{\value{tf@tempchaptcnt}}
+ \fi
+ \@tfchapterbeforefalse
+ \fi}
+
+% Chapter: formatting
+\def\tf@chapformat{\normalfont\bfseries\normalsize\singlespacing\centering}
+
+\newlength\tf@adjafterchapskip
+\setlength\tf@adjafterchapskip{\z@}
+
+\def\tf@setafterchapskip{%
+ \setlength\tf@adjafterchapskip{%
+ \dimexpr 3\tf@singlelineskip -\baselineskip \relax}}
+
+\def\@chapter[#1]#2{%
+ \@figuredblnumfalse
+ \@tabledblnumfalse
+ \tf@afterindent
+ \ifnum \c@secnumdepth >\m@ne
+ \if@mainmatter
+ \tf@chapcounter
+ \typeout{\@chapapp\space\thechapter.}%
+ \addcontentsline{toc}{chapter}%
+ {\protect\numberline{\@chapapp\space\thechapter}#1}%
+ \else
+ \tf@restoreftcounters
+ \addcontentsline{toc}{chapter}{#1}%
+ \fi
+ \else
+ \addcontentsline{toc}{chapter}{#1}%
+ \fi
+ \chaptermark{#1}%
+ \@makechapterhead{#2}%
+ \@afterheading}
+
+\def\@schapter#1{%
+ \@figuredblnumfalse
+ \@tabledblnumfalse
+ \tf@restoreftcounters
+ \tf@afterindent
+ \@makeschapterhead{#1}%
+ \@afterheading}
+
+\def\@makechapterhead#1{%
+ \tf@setafterchapskip
+ { \tf@chapformat
+ \ifnum \c@secnumdepth >\m@ne
+ \if@mainmatter
+ \@chapapp\space \thechapter
+ \par\nobreak
+ \vspace*{1\baselineskip}%
+ \fi
+ \fi
+ \interlinepenalty\@M
+ \ifstrempty{#1}{}{#1\par\nobreak \vspace{\tf@adjafterchapskip}}}}
+
+\def\@makeschapterhead#1{%
+ \tf@setafterchapskip
+ { \tf@chapformat
+ \interlinepenalty\@M
+ #1\par\nobreak
+ \vspace{\tf@adjafterchapskip}}}
+
+
+% Sections: redefine \@startsection to support adjusting space after section headings
+\def\@startsection#1#2#3#4#5#6{%
+ \if@noskipsec \leavevmode \fi
+ \par
+ \@tempskipa #4\relax
+ \@afterindenttrue
+ \ifdim \@tempskipa <\z@
+ \@tempskipa -\@tempskipa \tf@afterindent
+ \fi
+ \if@nobreak
+ \everypar{}%
+ \else
+ \addpenalty\@secpenalty\addvspace\@tempskipa
+ \fi
+ \@ifstar
+ {\@ssect{#3}{#4}{\dimexpr #5 -\tf@adjaftersec \relax}{#6}}%
+ {\@dblarg{\@sect{#1}{#2}{#3}{#4}{\dimexpr #5 -\tf@adjaftersec \relax}{#6}}}}
+
+
+% Title page: commands for use with \maketitle
+\newcommand{\subtitle}[1]{\gdef\tf@subtitle{#1}}
+\subtitle{}
+
+\newcommand{\tf@subtitlesep}{\ifdefempty{\tf@subtitle}{}{:}}
+
+\newcommand{\submissioninfo}[1]{\gdef\tf@submissioninfo{#1}}
+\submissioninfo{}
+
+\newcommand{\institution}[1]{\gdef\tf@institution{#1}}
+\institution{}
+
+\newcommand{\department}[1]{\gdef\tf@department{#1}}
+\department{}
+
+\newcommand{\location}[1]{\gdef\tf@location{#1}}
+\location{}
+
+% Title page: command for emptying/completing \maketitle
+\newcommand{\tf@emptymaketitle}{%
+ \global\let\thanks\relax
+ \global\let\maketitle\relax
+
+ \global\let\@thanks\@empty
+ \global\let\@author\@empty
+ \global\let\@date\@empty
+ \global\let\@title\@empty
+ \global\let\tf@subtitle\@empty
+ \global\let\tf@submissioninfo\@empty
+ \global\let\tf@institution\@empty
+ \global\let\tf@department\@empty
+ \global\let\tf@location\@empty
+
+ \global\let\title\relax
+ \global\let\author\relax
+ \global\let\date\relax
+ \global\let\subtitle\relax
+ \global\let\submissioninfo\relax
+ \global\let\institution\relax
+ \global\let\department\relax
+ \global\let\location\relax}
+
+% Title page: renew \maketitle for thesis/dissertation
+\submissioninfo{%
+ A Dissertation Submitted to\par
+ [Faculty]\par
+ in Candidacy for the Degree of\par
+ [Degree]}
+
+\department{[Department]}
+
+\institution{[Institution]}
+
+\location{[City], [State/Province]}
+
+\renewcommand{\maketitle}{%
+ \begin{titlepage}%
+ \singlespacing
+ \tf@setfnpunct{}
+ \renewcommand*{\thefootnote}{\fnsymbol{footnote}}
+ \let\footnoterule\relax
+ \normalfont\normalsize
+ \begin{center}
+ \vspace*{-1.2\baselineskip}
+ \parskip=1\baselineskip
+ \tf@institution\par
+ \vspace*{\stretch{1}}
+ {\bfseries\@title\tf@subtitlesep}\par
+ {\bfseries\tf@subtitle}\par%
+ \vspace*{\stretch{1}}
+ \tf@submissioninfo\par
+ \vspace*{1\baselineskip}
+ \tf@department\par
+ \vspace*{\stretch{1}}
+ by\par
+ {\bfseries\@author}\par
+ \vspace*{\stretch{1}}
+ \tf@location\par
+ \@date
+ \parskip=0pt
+ \end{center}%
+ \thispagestyle{empty}
+ \end{titlepage}%
+ \setcounter{page}{2}
+ % if not endnotes, reset footnote counter
+ \if@endnotesformat \else \setcounter{footnote}{0} \fi
+ \tf@emptymaketitle
+ \cleardoublepage}
+
+
+% Table of Contents, List of Figures, and List of Tables: section number alignment
+\def\tflist@beforesecnum{}
+\def\tflist@aftersecnum{\hfil}
+\def\numberline#1{\hb@xt@\@tempdima{\tflist@beforesecnum #1\tflist@aftersecnum}}
+
+\def\@tocrmarg{0.75in}
+\def\@pnumwidth{3.5ex}
+
+
+% Table of Contents: formatting
+\setcounter{tocdepth}{0}
+
+\renewcommand*{\l@part}[2]{%
+ \ifnum \c@tocdepth >-2\relax
+ \addpenalty{-\@highpenalty}%
+ \addvspace{1\baselineskip}%
+ \setlength\@tempdima{1.25in}%
+ \vskip 1\baselineskip
+ { \parindent \z@
+ \rightskip \z@
+ \parfillskip -\@rightskip
+ \leavevmode
+ \advance\leftskip\@tempdima
+ \hskip -\leftskip
+ {\bfseries #1}\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par}
+ \fi}
+
+\renewcommand*{\l@chapter}[2]{%
+ \ifnum \c@tocdepth >\m@ne
+ \addpenalty{-\@highpenalty}%
+ \setlength\@tempdima{1.25in}%
+ \vskip 1\baselineskip
+ { \parindent \z@
+ \rightskip \@tocrmarg
+ \parfillskip -\rightskip
+ \leavevmode
+ \advance\leftskip\@tempdima
+ \hskip -\leftskip
+ #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
+ \penalty\@highpenalty}
+ \fi}
+
+\renewcommand*{\l@section}{%
+ \ifnum \c@tocdepth >\z@ \vskip \tf@singlelineskip \fi
+ \@dottedtocline{1}{1.5in}{\z@}}
+
+\renewcommand*{\l@subsection}{%
+ \ifnum \c@tocdepth >1 \vskip \tf@singlelineskip \fi
+ \@dottedtocline{2}{1.75in}{\z@}}
+
+\renewcommand*{\l@subsubsection}{%
+ \ifnum \c@tocdepth >2 \vskip \tf@singlelineskip \fi
+ \@dottedtocline{3}{2in}{\z@}}
+
+% Table of Contents: added lineskip
+\def\@addcontentslineskip{%
+ \begingroup
+ \let\tf@write\write
+ \def\write{\immediate\tf@write}
+ \addtocontents{toc}{\protect\addvspace{\tf@singlelineskip}}
+ \endgroup}
+
+
+% List of Figures: formatting
+\renewcommand*\l@figure{%
+ \vskip \tf@singlelineskip
+ \@dottedtocline{0}{\z@}{4em}}
+
+
+% List of Tables: formatting
+\def\l@table{\l@figure}
+
+
+% Figures and Tables: caption formatting
+\def\tf@numberlinedbl#1#2{\hb@xt@0.3\@tempdima{\hfil #1}\hb@xt@0.7\@tempdima{#2 \hfil}}
+
+\long\def\@caption#1[#2]#3{%
+ \par
+ \csname if@#1dblnum\endcsname
+ \addcontentsline{\csname ext@#1\endcsname}{#1}{%
+ \protect\tf@numberlinedbl{\csname tf@#1dblnumprefix\endcsname}%
+ {.\@arabic{\csname c@#1\endcsname}}%
+ {\ignorespaces #2}}%
+ \else
+ \addcontentsline{\csname ext@#1\endcsname}{#1}{%
+ \protect\tf@numberlinedbl{\csname the#1\endcsname}%
+ {\@empty}%
+ {\ignorespaces #2}}%
+ \fi
+ \begingroup
+ \@parboxrestore
+ \if@minipage
+ \@setminipage
+ \fi
+ \normalsize
+ \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par
+ \endgroup}
+
+
+% Appendixes: formatting
+% appendixes environment resets figure and tables counts with "A." prefix
+
+\newcounter{appendix}
+
+\newenvironment{appendixes}%
+ {%
+ \@mainmattertrue
+ \setcounter{section}{0}%
+ \def\@chapapp{\appendixname}%
+ \def\thechapter{\@Alph\c@appendix}
+ \def\tf@chapcounter{\refstepcounter{appendix}}
+ \if@doublenumerate
+ \if@tfchapterbefore \else
+ \setcounter{tf@tempchapfcnt}{\value{figure}}
+ \setcounter{tf@tempchaptcnt}{\value{table}}
+ \fi
+ \def\tf@chapcounter{%
+ \refstepcounter{appendix}
+ \@figuredblnumtrue
+ \@tabledblnumtrue}
+ \setcounter{figure}{0}
+ \setcounter{table}{0}
+ \def\tf@figuredblnumprefix{A}
+ \def\tf@tabledblnumprefix{A}
+ \fi
+ }%
+ {%
+ \if@doublenumerate
+ \setcounter{figure}{\value{tf@tempchapfcnt}}
+ \setcounter{table}{\value{tf@tempchaptcnt}}
+ \fi
+ }
+
+% Appendixes: remove \appendix command
+\def\appendix{\@empty}
+
+
+% Endnotes: layout and formatting
+
+\if@endnotesformat
+
+ \let\tf@chapter\chapter
+
+ \@addtoreset{endnote}{chapter}
+
+ % Renew Notes heading formatted as \chapter* (also added to Table of Content)
+ \renewcommand{\enoteheading}{%
+ \tf@chapter*{\notesname}%
+ \@mkboth{\notesname}{\notesname}%
+ \addcontentsline{toc}{chapter}{\notesname}%
+ \vspace{\dimexpr -5\tf@singlelineskip +1\baselineskip \relax}%
+ \singlespacing\mbox{}%
+ \def\tf@adjaftersec{\dimexpr \tf@singlelineskip -\p@ \relax}
+ \let\tf@afterindent\@afterindenttrue}%
+
+ % Renew \chapter command to: (1) reset endnotes counter at each chapter, and (2) add subheadings for each chapter in \endnotes formatting.
+ \RenewDocumentCommand{\chapter}{som}{%
+ \IfBooleanTF{#1}%
+ {% if \chapter*
+ \tf@chapter*{#3}%
+ \setcounter{endnote}{0}%
+ \addtoendnotes{%
+ \noexpand\tf@enotedivider%
+ {\noexpand\section*}{\unexpanded{#3}}}%
+ }%
+ {% if \chapter
+ \IfNoValueTF{#2}%
+ {\tf@chapter{#3}}%
+ {\tf@chapter[#2]{#3}}%
+ \setcounter{endnote}{0}%
+ \if@mainmatter
+ \addtoendnotes{%
+ \noexpand\tf@enotedivider%
+ {\noexpand\section*}{\@chapapp\space \thechapter}}%
+ \else
+ \addtoendnotes{%
+ \noexpand\tf@enotedivider%
+ {\noexpand\section*}{\unexpanded{#3}}}%
+ \fi
+ }}
+
+ % Empty subheading divider before \theendnotes for use with \tf@enotedivider
+ \preto{\theendnotes}{%
+ \addtoendnotes{\noexpand\tf@enotedivider{}{}}}
+
+ % Make endnote divider if not followed by another endnote divider
+ \def\tf@enotedivider#1#2{\@ifnextchar\tf@enotedivider{}{#1{#2}}}%
+
+\fi
+
+