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/tlc-article/tlc-article.cls |
Initial commit
Diffstat (limited to 'macros/latex/contrib/tlc-article/tlc-article.cls')
-rw-r--r-- | macros/latex/contrib/tlc-article/tlc-article.cls | 321 |
1 files changed, 321 insertions, 0 deletions
diff --git a/macros/latex/contrib/tlc-article/tlc-article.cls b/macros/latex/contrib/tlc-article/tlc-article.cls new file mode 100644 index 0000000000..56fbc27688 --- /dev/null +++ b/macros/latex/contrib/tlc-article/tlc-article.cls @@ -0,0 +1,321 @@ +% ------------------------------------------------------------------------------ +% 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% |