% Inspired by: % % https://support.astron.nl/confluence/display/~kruger/Confluence+to+latex+to+pdf % https://lsst-texmf.lsst.io \NeedsTeXFormat{LaTeX2e} \ProvidesClass{astron}[ASTRON document class] \LoadClass[a4paper,12pt,twoside]{article} \newlength{\topMargin} \newlength{\bottomMargin} \newlength{\sideMargin} \setlength{\topMargin}{3.5cm} \setlength{\bottomMargin}{3.5cm} \setlength{\sideMargin}{2cm} \RequirePackage[absolute]{textpos} \RequirePackage{fancyhdr} \RequirePackage{geometry} \RequirePackage[nonumberlist,nogroupskip]{glossaries} \RequirePackage{graphicx} \RequirePackage{lastpage} \RequirePackage{microtype} \RequirePackage{parskip} \RequirePackage{tabularx} \geometry{tmargin=\topMargin, bmargin=\bottomMargin, lmargin=\sideMargin, rmargin=\sideMargin, headheight=52.05211pt} \newcommand{\docTitle}{Set the document title with \texttt{\textbackslash{}setDocTitle}} \newcommand{\setDocTitle}[1]{ \renewcommand{\docTitle}{#1} } \newcommand{\docNumber}{Set the document number with \texttt{\textbackslash{}setDocNumber}} \newcommand{\setDocNumber}[1]{ \renewcommand{\docNumber}{#1} } \newcommand{\docRevision}{Set the document revision with \texttt{\textbackslash{}setDocRevision}} \newcommand{\setDocRevision}[1]{ \renewcommand{\docRevision}{#1} } \newcommand{\docDate}{Set the document date with \texttt{\textbackslash{}setDocDate}} \newcommand{\setDocDate}[1]{ \renewcommand{\docDate}{#1} } \newcommand{\docClass}{Set the document class with \texttt{\textbackslash{}setDocClass}} \newcommand{\setDocClass}[1]{ \renewcommand{\docClass}{#1} } \newcommand{\docProgram}{Set the document program with \texttt{\textbackslash{}setDocProgram}} \newcommand{\setDocProgram}[1]{ \renewcommand{\docProgram}{#1} } % % Document history % \providecommand{\addChangeRecord}[3]{ #1 & #2 & #3 \tabularnewline \hline} \newcommand{\docChangeRecord}{ ... & ... & ... \tabularnewline \hline } \newcommand{\setDocChangeRecord}[1]{\renewcommand{\docChangeRecord} { #1 }} \newcommand{\changeRecord}{% \clearpage \section*{Document History} \begin{tabularx}{\textwidth}{|X|p{0.13\textwidth}|p{0.68\textwidth}|X|} \hline \textbf{Revision} & \textbf{Date} & \textbf{Description} \tabularnewline \hline\hline \docChangeRecord \end{tabularx} \clearpage } % % Define authors, approvers, etc for the front page % \providecommand{\addPerson}[3]{ #1 & #2 & #3 \tabularnewline} \newcommand{\docAuthors}{ ... & ... & ... \tabularnewline } \newcommand{\setDocAuthors}[1]{\renewcommand{\docAuthors} { #1 }} \newcommand{\docCheckers}{ ... & ... & ... \tabularnewline } \newcommand{\setDocCheckers}[1]{\renewcommand{\docCheckers} { #1 }} \newcommand{\docApprovers}{ ... & ... & ... \tabularnewline } \newcommand{\setDocApprovers}[1]{\renewcommand{\docApprovers} { #1 }} \newcommand{\docAuthorizers}{ ... & ... & ... \tabularnewline } \newcommand{\setDocAuthorizers}[1]{\renewcommand{\docAuthorizers} { #1 }} \newcommand{\authorTable}{% \begin{tabularx}{\textwidth}{|p{0.35\textwidth}|p{0.35\textwidth}|X|} \cline{2-3} \cline{3-3} \multicolumn{1}{c|}{} & \textbf{\footnotesize{}Organisatie / Organization} & \textbf{\footnotesize{}Datum / Date} \tabularnewline \hline \textbf{\footnotesize{}Auteur(s) / Author(s):\vspace{0.2cm}} & & \tabularnewline \docAuthors \hline \textbf{\footnotesize{}Controle / Checked:\vspace{0.2cm}} & & \tabularnewline \docCheckers \hline \textbf{\footnotesize{}Goedkeuring / Approval:\vspace{0.2cm}} & & \tabularnewline \docApprovers \hline \textbf{\footnotesize{}Autorisatie / Authorization:} & & \tabularnewline \docAuthorizers \textbf{\footnotesize{}Handtekening / Signature:\vspace{1cm}} & & \tabularnewline \hline \end{tabularx} } % % Define headers and footers % \pagestyle{fancy} \fancyhf{} \lfoot{\thepage \hspace{1pt} / \pageref{LastPage}} \rfoot{ \begin{tabular}{>{\raggedright}ll} Doc. Nr.: & \docNumber{}\tabularnewline Rev.: & \docRevision{}\tabularnewline Date: & \docDate{}\tabularnewline Class & \docClass{}\tabularnewline \end{tabular} } \rhead{\includegraphics[width=8cm]{astron-logo}} \cfoot{\textbf{\large{}\docProgram{}}} \renewcommand{\headrulewidth}{0pt} \renewcommand{\footrulewidth}{1pt} \footskip2cm % % Construct the title page, history, etc. % \renewcommand{\maketitle}{ \vspace*{4cm} \begin{center} \begin{minipage}{0.7\textwidth} \centering\LARGE\textbf{\docTitle{}} \end{minipage} \end{center} % This position was determined by trial and error; a bit unsatisfying. \newlength{\copyrightBoxPosition} \setlength{\copyrightBoxPosition}{25.2cm} % Add the copyright notice towards the bottom of the page. \begin{textblock*}{1\textwidth}(\sideMargin, \copyrightBoxPosition) \fbox{% \begin{minipage}{\dimexpr\linewidth-2\fboxrule-2\fboxsep} \begin{center} \begin{small} \textcopyright{} ASTRON 2020.\\ All rights are reserved. Reproduction in whole or in part is\\ prohibited without written consent of the copyright owner. \end{small} \end{center} \end{minipage}% } \end{textblock*} % We generate the author table once (but don't print it) to measure its height, % then use that to position the textblock* which ultimately contains the table. % Note the measured height is (approximately) half the full height. \newlength{\authorTableHalfHeight} \settoheight{\authorTableHalfHeight}{\authorTable} \begin{textblock*}{1\textwidth}(\sideMargin, \dimexpr\copyrightBoxPosition-2\authorTableHalfHeight+\fboxsep) \authorTable \end{textblock*} \clearpage \changeRecord }