% Turabian Formatting for LaTeX % % Based on the Chicago Manual of Style (16th edition) and Kate Turabian's A % Manual for Writers of Research Papers, Theses, and Dissertations (8th edition) % % ============================== % Copyright 2013-2016 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} \ProvidesPackage{turabian-formatting}[2016/03/18 Turabian Formatting] % Flags adjusted with package options \newif\if@optraggedright\@optraggedrightfalse \newif\if@authordateformat\@authordateformatfalse \newif\if@appendbibformat\@appendbibformattrue \newif\if@endnotesformat\@endnotesformatfalse % Declare package options \DeclareOption{raggedright}{\@optraggedrighttrue} \DeclareOption{authordate}{\@authordateformattrue} \DeclareOption{noadjustbib}{\@appendbibformatfalse} \DeclareOption{endnotes}{\@endnotesformattrue} % emptymargins (deprecated option and flag) \newif\if@optemptymargins\@optemptymarginsfalse \DeclareOption{emptymargins}{\@optemptymarginstrue} \ProcessOptions\relax \RequirePackage{etoolbox} % Default margin size of 1 inch on all sides \setlength\textwidth{\paperwidth} \addtolength\textwidth{-2in} \setlength\hoffset{\z@} \setlength\textheight{\paperheight} \addtolength\textheight{-2in} \setlength\voffset{\z@} \setlength\oddsidemargin{\z@} \setlength\evensidemargin{\z@} % Default header height set to height of 1 line of text \ifcase \@ptsize \setlength\headheight{10pt} \or \setlength\headheight{11pt} \or \setlength\headheight{12pt} \fi % Set header top and footer baseline to 0.5in from page edges \setlength\topmargin{-0.5in} \setlength\headsep{0.5in} \addtolength\headsep{-\headheight} \setlength\footskip{0.5in} % Set default text spacing as double spaced \RequirePackage{setspace} \setstretch{2} % Preserve length of one line of text for subsequent use \newlength\tf@singlelineskip \setlength\tf@singlelineskip{0.5\baselineskip} % Set default paragraph indent \setlength\parindent{0.5in} \if@optraggedright \newlength\tf@parindentraggedright \setlength\tf@parindentraggedright{\parindent} \raggedright \setlength\parindent{\tf@parindentraggedright} \fi % Prevent widowed text with 2 line default \PassOptionsToPackage{defaultlines=2, all}{nowidow} \AtEndPreamble{% \@ifpackageloaded{nowidow}% {}% {\RequirePackage{nowidow}}} % Footnote layout and formatting \PassOptionsToPackage{bottom, marginal}{footmisc} \if@endnotesformat \PassOptionsToPackage{perpage}{footmisc} \fi \RequirePackage{footmisc} \setlength\footnotemargin{\parindent} % Chicago symbols used when needed \setfnsymbol{chicago} % Separation between footnotes based on text size \ifcase \@ptsize \setlength\footnotesep{16.65pt} \or \setlength\footnotesep{18.7pt} \or \setlength\footnotesep{20.4pt} \fi \setlength{\skip\footins}{\footnotesep} % Readjust default footnote rule size and placement \renewcommand{\footnoterule}{% \vspace*{-3pt} \hrule width 2in height 0.4pt \vspace*{-4pt}} % Command to set footnote punctuation \newcommand{\tf@setfnpunct}[1]{\def\tf@thefnpunct{#1\,\,}} \tf@setfnpunct{.} % Renew command for typesetting footnotes \renewcommand{\@makefntext}[1]{% \if@optraggedright \raggedright% \fi \setlength\parindent{\footnotemargin}% \@thefnmark\tf@thefnpunct#1} % Redefine headings page style (places page number in header) \def\ps@headings{% \let\@oddfoot\@empty \let\@evenfoot\@empty \def\@evenhead{\thepage\hfil\slshape\leftmark} \def\@oddhead{{\slshape\rightmark}\hfil\thepage} \let\@mkboth\@gobbletwo \let\markboth\@mkboth \let\chaptermark\@gobble \let\sectionmark\@gobble} % Set myheadings page style to be the same as the headings page style \let\ps@myheadings\ps@headings % Set default page style and page numbering \pagestyle{headings} \pagenumbering{arabic} % Adjust empty page style if twoside option used \if@twoside \def\cleardoublepage{% \clearpage \ifodd\c@page \else \hbox{} \thispagestyle{empty} \newpage \fi} \fi % Thesis-related document structure formatting \appto{\frontmatter}{% \pagenumbering{roman} \pagestyle{empty}} \renewcommand{\contentsname}{Table of Contents} \preto{\tableofcontents}{% \pagestyle{plain}} \appto{\mainmatter}{% \pagenumbering{arabic} \pagestyle{headings}} % Headings formatting of \chapter, \section, \subsection, and \subsubsection \setcounter{secnumdepth}{0} % \section formatting \ifcsdef{chapter}% {% If \chapter defined... % \chapter formatting \def\@makechapterhead#1{% { \normalfont\bfseries\normalsize\singlespacing\centering \ifnum \c@secnumdepth >\m@ne \if@mainmatter \@chapapp\space \thechapter \par\nobreak \vspace*{1\baselineskip}% \fi \fi \interlinepenalty\@M #1\par\nobreak \vspace{1\baselineskip}}} % \chapter* formatting \def\@makeschapterhead#1{% { \normalfont\bfseries\normalsize\singlespacing\centering \interlinepenalty\@M #1\par\nobreak \vspace{1\baselineskip}}} }% {% If \chapter not defined, differentiate and reformat \section* \newlength\tf@ssectafterskip \setlength\tf@ssectafterskip{1\p@} % Flag if differentiate and reformat \section* \newif\if@adjustssection\@adjustssectiontrue % Command to disable differentiate and reformat \section* \gdef\noadjustssect{\@adjustssectionfalse} % Set length of space after \section* \newlength\tf@ssectionafterskip \setlength\tf@ssectionafterskip{\tf@singlelineskip} \def\@startsection#1#2#3#4#5#6{% \if@noskipsec \leavevmode \fi \par \@tempskipa #4\relax \@afterindenttrue \ifdim \@tempskipa <\z@ \@tempskipa -\@tempskipa \@afterindentfalse \fi \if@nobreak \everypar{}% \else \addpenalty\@secpenalty\addvspace\@tempskipa \fi \setlength\tf@ssectafterskip{#5} \if@adjustssection \ifstrequal{#1}{section}% {\setlength\tf@ssectafterskip{\tf@ssectionafterskip}}% {}% \fi \@ifstar {\@ssect{#3}{#4}{\tf@ssectafterskip}{#6}}% {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}} } % \subsection and \subsubsection formatting \renewcommand{\section}{% \@startsection{section}{1}% {\z@}% {-\tf@singlelineskip}% {1\p@}% {\normalfont\bfseries\normalsize\singlespacing\centering}} \renewcommand{\subsection}{% \@startsection{subsection}{2}% {\z@}% {-\tf@singlelineskip}% {1\p@}% {\normalfont\mdseries\normalsize\singlespacing\centering}} \renewcommand{\subsubsection}{% \@startsection{subsubsection}{3}% {\z@}% {-\tf@singlelineskip}% {1\p@}% {\normalfont\bfseries\normalsize\singlespacing\raggedright}} % Title page commands for use with \maketitle \newcommand{\subtitle}[1]{\gdef\tf@subtitle{#1}} \subtitle{\@empty} \newcommand{\submissioninfo}[1]{\gdef\tf@submissioninfo{#1}} \submissioninfo{\@empty} \newcommand{\course}[1]{\gdef\tf@course{#1}} \course{\@empty} \newcommand{\institution}[1]{\gdef\tf@institution{#1}} \institution{\@empty} \newcommand{\department}[1]{\gdef\tf@department{#1}} \department{\@empty} \newcommand{\location}[1]{\gdef\tf@location{#1}} \location{\@empty} % Renew \maketitle (for research papers default) \if@titlepage % Formatting for titlepage option \renewcommand{\maketitle}{% \begin{titlepage}% \tf@setfnpunct{} \renewcommand*{\thefootnote}{\fnsymbol{footnote}} \let\footnoterule\relax \normalfont\normalsize\centering\singlespacing \parskip=1\baselineskip \vspace*{-2\baselineskip} \vspace*{0.333\paperheight} \vspace*{-1in} { \bfseries\@title\par% \tf@subtitle\par}% \vspace*{2.35in} \@author\@thanks\par \tf@course\par \tf@submissioninfo\par \@date\par \parskip=\z@ \end{titlepage}% \tf@emptymaketitle \cleardoublepage} \else % Formatting for notitlepage option \renewcommand{\maketitle}{% \thispagestyle{plain} { \renewcommand*{\thefootnote}{\fnsymbol{footnote}} \normalfont\normalsize\centering\singlespacing \parskip=1\baselineskip \vspace*{0.5in} \vspace*{-1.5\baselineskip} { \bfseries\@title\par% \tf@subtitle\par}% \vspace*{1\baselineskip} \@author\@thanks\par \tf@course\par \tf@submissioninfo\par \@date\par \vspace*{0.5in} \vspace*{-1\baselineskip}} \tf@emptymaketitle} \fi % Command for emptying/completing \maketitle \newcommand{\tf@emptymaketitle}{% % if not endnotes, reset footnote counter \if@endnotesformat \else \setcounter{footnote}{0} \fi % Clear command content at end of \maketitle \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@course\@empty \global\let\tf@institution\@empty \global\let\tf@department\@empty \global\let\tf@location\@empty \global\let\tf@submissioninfo\@empty \global\let\title\relax \global\let\author\relax \global\let\date\relax \global\let\subtitle\relax \global\let\course\relax \global\let\institution\relax \global\let\department\relax \global\let\location\relax \global\let\submissioninfo\relax} % Block quotation and quote formatting \renewenvironment{quotation} { \list{}{% \setlength\listparindent{\parindent} \setlength\itemindent{\listparindent} \setlength\leftmargin{\parindent} % Adjust right margin based on raggedright option \if@optraggedright \setlength\rightmargin{\z@} \else \setlength\rightmargin{\leftmargin} \fi \setlength\parsep{\z@} % Place line spacing between text and quotation \ifnumequal{\baselinestretch}{1}% {\setlength\topsep{\baselineskip}}% {\setlength\topsep{\z@}}}% \singlespacing% \item\relax} {\endlist} % Set quote environment to be the same as the quotation environment \def\quote{\quotation} % Lists: enumerate and itemize \setlength\leftmargini{1.5\parindent} \setlength\leftmargin{\leftmargini} \setlength\leftmarginii{\parindent} \setlength\leftmarginiii{\parindent} \setlength\leftmarginiv{\parindent} \setlength\labelsep{.65em} \setlength\labelwidth{\parindent} \addtolength\labelwidth{-\labelsep} % Formatting command for both enumerate and itemize \def\tf@listformat{% \setlength\topsep{\z@} \setlength\itemsep{\z@} \setlength\parsep{\z@} \setlength\listparindent{\parindent}} % Format of enumerate list labels \renewcommand{\labelenumi}{\arabic{enumi}.} \renewcommand{\labelenumii}{\alph{enumii})} \renewcommand{\labelenumiii}{(\arabic{enumiii})} \renewcommand{\labelenumiv}{(\alph{enumiv})} % Redefine enumerate to include formatting command hook \def\tf@enumerateformat{\tf@listformat} \def\enumerate{% \ifnum \@enumdepth >\thr@@\@toodeep \else \advance\@enumdepth\@ne \edef\@enumctr{enum\romannumeral\the\@enumdepth}% \expandafter \list \csname label\@enumctr\endcsname {\usecounter\@enumctr% \def\makelabel##1{\hss\llap{##1}}% \tf@enumerateformat}% \fi} % Redefine itemize to include formatting command hook \def\tf@itemizeformat{\tf@listformat} \def\itemize{% \ifnum \@itemdepth >\thr@@\@toodeep \else \advance\@itemdepth\@ne \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}% \expandafter \list \csname\@itemitem\endcsname {\def\makelabel##1{\hss\llap{##1}}% \tf@itemizeformat}% \fi} % Tables and Figures: float positioning \setlength\textfloatsep{1\baselineskip plus 2pt} \setlength\floatsep{1\baselineskip plus 2pt} \setlength\intextsep{1\baselineskip plus 2pt} \def\fps@table{!htb} \def\fps@figure{!htb} % Tables and Figures: caption formatting \setlength\abovecaptionskip{\z@} \setlength\belowcaptionskip{\z@} \long\def\@makecaption#1#2{% \vskip\abovecaptionskip \if@optraggedright \raggedright% \fi \small#1. #2\par \vskip\belowcaptionskip} % Table footnote (deprecated) \newcommand{\tablenote}[1]{% \if@optraggedright \raggedright% \fi \vspace{1\baselineskip} #1\par} % Table footnote source line (deprecated) \newcommand{\tablesource}{\tablenote} % thebibliography environment formatting (adjust \@openbib@code hook default) \setlength\bibindent{\parindent} \renewcommand\@openbib@code{% \singlespacing \setlength\leftmargin{\bibindent} \setlength\itemindent{-\bibindent} \addtolength\itemindent{\labelsep} \addtolength\itemindent{\labelwidth} \setlength\itemsep{\tf@singlelineskip} \setlength\parsep{\z@}} % biblatex-chicago: set formatting defaults % Provide warning if biblatex-chicago loaded before turabian-formatting \@ifpackageloaded{biblatex-chicago}% {% \PackageWarningNoLine{turabian-formatting}{Consider loading the biblatex-chicago package after the turabian-formatting package. See documentation for more information}% }% {} \PassOptionsToPackage% {isbn=false, autolang=other, footmarkoff, backend=biber}% {biblatex-chicago} \if@authordateformat \PassOptionsToPackage{authordate}{biblatex-chicago} \fi % Adjustments to \printbibliography formatting \if@appendbibformat \AtEndPreamble{% \@ifpackageloaded{biblatex}% {% \if@authordateformat \DefineBibliographyStrings{english}{% bibliography = {References}} \else \DefineBibliographyStrings{english}{% references = {Bibliography}} \fi \renewcommand{\bibsetup}{\singlespacing} \renewcommand{\bibitemsep}{1\baselineskip} \renewcommand{\bibhang}{0.5in} }% {}} \fi % Patch incompatibility between biblatex-chicago (2014/01/29) and biblatex (2016/03/03) \AtEndPreamble{% \@ifpackageloaded{biblatex-chicago}% {% \@ifpackagelater{biblatex}{2016/03/03}% {\let\ifblx@load@version@one\ifblx@load@version@legacy}% {} }% {}} % endnotes package support: formatting \if@endnotesformat \RequirePackage{endnotes, xparse} % Changes footnote marker type and formatting \tf@setfnpunct{} \renewcommand*{\thefootnote}{\fnsymbol{footnote}} \PassOptionsToPackage{notetype=endonly}{biblatex-chicago} % Endnotes layout and formatting (based on if chapter is defined) \ifcsdef{chapter}% {% If \chapter defined... \let\tf@chapter\chapter % Renew Notes heading formatted as \chapter* (also added to Table of Content) \@addtoreset{endnote}{chapter} \renewcommand{\enoteheading}{% \tf@chapter*{\notesname}% \@mkboth{\notesname}{\notesname}% \addcontentsline{toc}{chapter}{\notesname}% \mbox{}\par% \vspace{-1.5\baselineskip}% \let\@afterindentfalse\@afterindenttrue \singlespacing}% % 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}% {% \tf@chapter*{#3}% \setcounter{endnote}{0}% \addtoendnotes{% \noexpand\enotedivision% {\noexpand\section*}% {\unexpanded{#3}}}% }% {% \IfNoValueTF{#2}% {\tf@chapter{#3}}% {\tf@chapter[#2]{#3}}% \addtoendnotes{% \noexpand\enotedivision% {\noexpand\section*}% {\chaptername\ \thechapter}}% }} \def\enotedivision#1#2{\@ifnextchar\enotedivision{}{#1{#2}}}% }% {% If \chapter not defined, Notes heading formatted as \section* \renewcommand{\enoteheading}{% \section*{\notesname}% \markboth{\notesname}{\notesname}% \addcontentsline{toc}{section}{\notesname}% \mbox{}\par% \vspace{-1.5\baselineskip}% \let\@afterindentfalse\@afterindenttrue \singlespacing}% }% % Make endnotes use of "_" not a special character when in text mode \appto{\enoteheading}{% \catcode`_=12 \begingroup\lccode`~=`_ \lowercase{\endgroup\let~}\sb \mathcode`_="8000} % Create \jobname.ent if not already defined to avoid missing file error \preto{\theendnotes}{% \IfFileExists{./\jobname.ent}% {}% {% \immediate\openout\@enotes=\jobname.ent\relax \immediate\write\@enotes{}% }} % Set default endnotes formatting \renewcommand{\enotesize}{\normalsize} \renewcommand{\enoteformat}{% \if@optraggedright \raggedright% \fi \setlength\parindent{\footnotemargin} \vspace{1\baselineskip} \theenmark.\,\,} \else % Define \theendnotes if endnotes package not loaded \@ifpackageloaded{endnotes}% {}% {\def\theendnotes{\@empty}} \fi % emptymargins option (deprecated) \if@optemptymargins \PackageWarningNoLine{turabian-formatting}{The 'emptymargins' option has been deprecated} % Adjust top margin height by 0.5in \addtolength\textheight{-0.5in} \addtolength\topmargin{0.5in} \newlength\tf@headsep \setlength\tf@headsep{\headsep} % Load geometry if needed \@ifpackageloaded{geometry}% {}% {\RequirePackage{geometry}} % Set geometry package defaults to match default layout \geometry{margin=1in, ignoreall, onecolumn} \geometry{headheight=14.5pt} \geometry{footskip=0.5in} \geometry{includehead} % Adjust plain page style formatting \appto{\ps@plain}{% \setlength\headsep{\z@} \setlength\headheight{\z@}} \newlength\tf@lmargin \newlength\tf@rmargin \newlength\tf@tmargin \newlength\tf@bmargin \newlength\tf@bindingoffset % Adjustments to empty page style layout \newcommand{\tf@emptygeometry}{% \newgeometry{left=\tf@lmargin, right=\tf@rmargin, top=\tf@tmargin, bottom=\tf@bmargin, bindingoffset=\tf@bindingoffset, ignoreall, noheadfoot}} \if@titlepage \preto{\maketitle}{\tf@emptygeometry} \appto{\maketitle}{\restoregeometry} \fi \preto{\frontmatter}{\tf@emptygeometry} \preto{\tableofcontents}{\restoregeometry} \preto{\mainmatter}{\restoregeometry} \AtEndPreamble{% \setlength\tf@bindingoffset{\oddsidemargin} \geometry{bindingoffset=\tf@bindingoffset, headsep=\tf@headsep} % Preserve lengths for subsequent use with \tf@emptygeometry \setlength\tf@lmargin{\Gm@lmargin} \setlength\tf@rmargin{\Gm@rmargin} \setlength\tf@tmargin{\Gm@tmargin} \setlength\tf@bmargin{\Gm@bmargin} \setlength\tf@bindingoffset{\Gm@bindingoffset}} \fi