% ------------------------------------------------------------------------------ % Class: % tlc-article % % Purpose: % This LaTeX class provides an article implementation that standardizes % a document layout intended for formal documents. % ------------------------------------------------------------------------------ \NeedsTeXFormat{LaTeX2e}% \ProvidesClass{tlc-article}[2019/06/20 v1.0.17 Traap LaTeX Class Article]% \DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}% \ProcessOptions% \LoadClass{article}% % ------------------------------------------------------------------------------ % Page layout % \RequirePackage{parskip}% Blank line after section break. \RequirePackage[a4paper,top=1.0in,bottom=1.0in,left=1.0in,right=1.0in]{geometry}% \RequirePackage{multicol}% % \setlength{\parskip}{0.5em}% % ------------------------------------------------------------------------------ % Required parts to use glossaries must come first. \RequirePackage{lmodern}% \RequirePackage[T1]{fontenc}% \RequirePackage{textcomp}% \RequirePackage[utf8]{inputenc}% \RequirePackage[colorlinks]{hyperref}% \RequirePackage{bookmark}% % ------------------------------------------------------------------------------ % Define glossaries. \RequirePackage[acronym, % create 'acronym' glossary type, nopostdot, % nonumberlist, % style=altlist,% use altlist style toc, % add the gloassary to the table of contents. ]{glossaries}% % ------------------------------------------------------------------------------ % Color, Graphics and links. \RequirePackage{graphicx}% \RequirePackage[table]{xcolor}% \definecolor{darkblue}{rgb}{0,0,0.5}% % ------------------------------------------------------------------------------ % Listings and verbatim \RequirePackage{listings}% \RequirePackage{spverbatim}% % ------------------------------------------------------------------------------ % Arrays, list and tables \RequirePackage{array}% \RequirePackage{csvsimple}% \RequirePackage{enumitem}% \RequirePackage{longtable}% \RequirePackage{makecell}% \RequirePackage{tabularx}% \setlength{\parindent}{0pt}% % ------------------------------------------------------------------------------ % pdf \RequirePackage{pdflscape}% \RequirePackage{pdfpages}% % ------------------------------------------------------------------------------ % Misc \RequirePackage[toc,page]{appendix}% \RequirePackage{todonotes}% % ------------------------------------------------------------------------------ % This function is used to simplify making textcolor darkblue. \newcommand{\tlcDarkblue}[1]{\textcolor{darkblue}{#1}}% % ------------------------------------------------------------------------------ % Define the optional input files. \def\tlc@location{data}% \def\tlc@logoFile{\tlc@location/logo.png}% \def\tlc@versionFile{\tlc@location/version.csv}% \def\tlc@additionalLayout{\tlc@location/additional-layout.tex}% \def\tlc@headerFooter{\tlc@location/header-footer.tex}% % New column types: L, C, and R are Left, Center, and Right, respectively are % designed to use with longtable. Data is wrapped within a table cell. The % parameter defines the column width. As an example, L{2cm} yields a Left % aligned, ragged right, wrapped text within a 2cm wide cell. \newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash}p{#1}}% \newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash}p{#1}}% \newcolumntype{R}[1]{>{\raggedleft\let\newline\\\arraybackslash}p{#1}}% % ------------------------------------------------------------------------------ % We define colors that we would like to use throughout our documents. \definecolor{codegreen}{rgb}{0,0.6,0}% \definecolor{codegray}{rgb}{0.5,0.5,0.5}% \definecolor{codepurple}{rgb}{0.58,0,0.82}% \definecolor{backcolour}{rgb}{0.95,0.95,0.92}% % ------------------------------------------------------------------------------ % tlcBeginLandscape and tlcEndLandscape are two new commands used to simplify % setting page orientation to landscape and consistently setting margins. \newcommand{\tlcBeginLandscape}{% \begin{landscape}% \newgeometry{top=1in, bottom=1in,left=1in,right=1in}% }% \newcommand{\tlcEndLandscape}{% \restoregeometry% \end{landscape}% }% % ------------------------------------------------------------------------------ % We want our table of contents to use dots as a leader. \RequirePackage{tocloft}% \renewcommand\cftsecleader{\cftdotfill{\cftdotsep}}% % ------------------------------------------------------------------------------ % We want to allow the calling document to setup additional layout. \IfFileExists{\tlc@additionalLayout}% {\input{\tlc@additionalLayout}}% {}% % ------------------------------------------------------------------------------ % Create a beautiful document header and document footer using the packages % listed below. \RequirePackage{fancyhdr} % Page layout in \LaTeX \RequirePackage{titling} % Control over \maketitle & \thanks \RequirePackage{lastpage} % Page n of m \pagestyle{fancy} % fancy page style % ------------------------------------------------------------------------------ % Extract document status, document date and document version from % \tlc@versionFile. % Argument: % 1 - the column name to extract from the data file. \newcommand{\tlcVersionPart}[1]{% \csvreader[separator=pipe]% {\tlc@versionFile}{% 1=\version,% 2=\date,% 3=\status,% 4=\institution,% 5=\permission% }{#1}% }% % ------------------------------------------------------------------------------ % Define extractions macros when \tlc@versionFile exists. \IfFileExists{\tlc@versionFile}% {% \def\tlc@version{\tlcVersionPart{\version}}% \def\tlc@date{\tlcVersionPart{\date}}% \def\tlc@status{\tlcVersionPart{\status}}% \def\tlc@institution{\tlcVersionPart{\institution}}% \def\tlc@permission{\tlcVersionPart{\permission}}% }% {% Else: no operation because tlc@versionFile does not exist. }% % ------------------------------------------------------------------------------ % We want to allow the calling document to override the headers and footers that % we are defining. \IfFileExists{\tlc@headerFooter}% { % use the customer header and footer defined by \tlc@headerfooter \input{\tlc@headerFooter}% }% { % Else : header and footer applied to all pages. \IfFileExists{\tlc@logoFile}% { % Typeset the logo in the left side of the document header. \lhead{\includegraphics[width=3cm,height=1cm]{\tlc@logoFile}}% }% {% Else: no operation because tlc@logoFile does not exist. }% % % Typeset the title in the center of the document header. % \chead{\large{\thetitle}}% % % Typeset version information in the right side of the document header. % \IfFileExists{\tlc@versionFile}% {% % document status, document date and document version. \rhead{\tiny \tlc@status \\ \tlc@date \\ \tlc@version}% % document owner. This maybe a person or company name. \lfoot{\tiny \tlc@institution}% % document license. This maybe a license or word like confidential. \cfoot{\tiny \tlc@permission}% }% {% Else: no operation because tlc@versionFile does not exist. }% \renewcommand{\headrulewidth}{0.1pt}% % % Eliminate head height too small warning, which is occurring because % we are using multiple lines in our header. \setlength\headheight{34.0pt}% % footer applied to all pages. \rfoot{\tiny{Page \thepage~of~\pageref{LastPage}}}% \renewcommand{\footrulewidth}{0.1pt}% }% % ------------------------------------------------------------------------------ % We want our header and footer to remain consistent with a table of % contents that span multiple pages. \AtBeginDocument{\addtocontents{toc}{\protect\thispagestyle{fancy}}}% % ------------------------------------------------------------------------------ % We define colors that are used throughout the document. \definecolor{darkblue}{rgb}{0,0,0.5}% \hypersetup{% bookmarksopen = true,% citebordercolor = white!100,% citecolor = darkblue,% filebordercolor = white!100,% filecolor = darkblue ,% linkbordercolor = white!100,% linkcolor = darkblue,% linktoc = all,% menubordercolor = white!100,% pdfauthor = {},% pdfborder = {0 0 0 [0 0]},% pdfkeywords = {},% pdfstartview = FitH,% pdfsubject = {},% pdftitle = {},% runbordercolor = white!100,% urlbordercolor = white!100,% urlcolor = darkblue% }% % ------------------------------------------------------------------------------ % We define colors that are used when includeing code files (software). \lstdefinestyle{tlcStyle}{% backgroundcolor=\color{backcolour},% commentstyle=\color{codegreen},% keywordstyle=\color{magenta},% numberstyle=\tiny\color{codegray},% stringstyle=\color{codepurple},% basicstyle=\footnotesize,% breakatwhitespace=false,% breaklines=true,% captionpos=b,% keepspaces=true,% numbers=left,% numbersep=4pt,% showspaces=false,% showstringspaces=false,% showtabs=false,% tabsize=2% }% \lstset{style=tlcStyle}% % ------------------------------------------------------------------------------ % End Row : Generally applied to the end of a table row. \newcommand{\ER}{\\ \hline}% % ------------------------------------------------------------------------------ % Default vertical space \newcommand{\tlcVspace}{\vspace{3mm}}% % ------------------------------------------------------------------------------ % Macro to include a file if it exists. % 1 = the file path to input \newcommand{\inputIfExists}[1]{\IfFileExists{#1}{\input{#1}}{}}% % ------------------------------------------------------------------------------ % Each document uses the same author name, title page and table of contents. % Arguments: % 1 - the title % 2 - the author % 3 - the abstract \newcommand{\tlcTitlePageAndTableOfContents}[3]{% \title{#1}% \author{#2}% \maketitle% \begin{abstract}#3\end{abstract}% \tableofcontents% \thispagestyle{fancy}% \clearpage% }% % ------------------------------------------------------------------------------ % We define tlcDebug to aid our users when they are debugging their document. % tlcDebug should be placed at the end of your document to allow LaTeX to % fully expand all macros and definitions. \newcommand{\tlcIsDefined}[1]% {\IfFileExists{#1}% {\textcolor{green}{DEFINED}}% {\textcolor{red}{NOT DEFINED}}% }% \newcommand{\tlcDebug}{% \clearpage% \section{tlc-article Debug}% \subsection{tlc-article default files}% \begin{description}[align=right,leftmargin=*,labelindent=5cm]% \item[tlc@location:]\tlc@location% \item[tlc@additionalLayout:]\tlc@additionalLayout% \item[tlc@headerFooter:]\tlc@headerFooter% \item[tlc@versionFile:]\tlc@versionFile% \item[tlc@logoFile:]\tlc@logoFile% \item[tlc@versionFile:]\tlc@versionFile% \end{description}% % \subsection{tlc-article file hooks}% \begin{description}[align=right,leftmargin=*,labelindent=5cm]% \item [tlc@additionalLayout:]\tlcIsDefined{\tlc@additionalLayout}% \item [tlc@headerFooter:]\tlcIsDefined{\tlc@headerFooter}% \item [tlc@logoFile:]\tlcIsDefined{\tlc@logoFile}% \item [tlc@versionFile:]\tlcIsDefined{\tlc@versionFile}% \end{description}% % \subsection{tlc-article header and footer hooks}% \begin{description}[align=right,leftmargin=*,labelindent=5cm]% \item[tlc@version:] \tlc@version% \item[tlc@date:] \tlc@date% \item[tlc@status:] \tlc@status% \item[tlc@institution:] \tlc@institution% \item[tlc@permission:] \tlc@permission% \end{description}% }% % ------------------------------------------------------------------------------ \endinput%