Skip to content
Snippets Groups Projects
astron.cls 5.62 KiB
Newer Older
% 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}

\RequirePackage{graphicx}
\RequirePackage{geometry}
\geometry{tmargin=3.5cm,bmargin=3.5cm,lmargin=2cm,rmargin=2cm,headheight=52.05211pt}
\RequirePackage{fancyhdr}
\RequirePackage{lastpage}
\RequirePackage{longtable}
\RequirePackage[absolute]{textpos}
\RequirePackage{tabularx}

\setlength{\parindent}{0cm}             % No indent at start of paragraphs
\setlength{\parskip}{\baselineskip}     % Blank line between paragraph

\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
%
\newenvironment{docHistory}[0]{
  \newpage
  \section*{Document History}
  \begin{small}
    % flush table to the left
    \setlength\LTleft{0pt}
    \setlength\LTright{\fill}
    \addtocounter{table}{-1}
    \begin{longtable}{|l|p{.13\textwidth}|p{.68\textwidth}|}
      \hline
      \textbf{Revision} & \textbf{Date} & \textbf{Description} \\ \hline\hline
      \endfirsthead
      \hline
      \textbf{Revision} & \textbf{Date} & \textbf{Description} \\ \hline\hline
      \endhead
      \multicolumn{3}{r}{\emph{Continued on next page}}
      \endfoot
      \endlastfoot
}{
    \end{longtable}
  \end{small}
  \clearpage
}
\providecommand{\addtohist}[3]{ #1 & #2 & #3 \\\hline}

\newcommand{\docChangeRecord}{}
\newcommand{\setDocChangeRecord}[1]{\renewcommand{\docChangeRecord}
{
\clearpage
\begin{docHistory}
#1
\end{docHistory}
}}


%
% 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
}}

%
% 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}{
~\\
\begin{center}
\vspace{3cm}
\LARGE\textbf{\docTitle{}}
\vspace{4cm}
\end{center}

\newlength{\mylength}
\settoheight{\mylength}{%
\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}
}

\begin{textblock*}{1\textwidth}(2cm,\dimexpr25.2cm-2\mylength+\fboxsep)
\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}
\end{textblock*}
\begin{textblock*}{1\textwidth}(2cm,25.2cm)

\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*}

\docChangeRecord{}
}