diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /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.cls | 582 |
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 + + |