I'm doing my bachelor thesis, and need to make a table with lots of data. I want to make a macro for that table, since I'm going to use it a few times.
Considering egreg's answer in this question, and the comments to this question. My question is: How can I make this form with a key-value interface, with the use of 19 arguments?
I have used code from Steven's example, and some from the question I mentioned. Below is a complete working example.
\documentclass[norsk,12pt]{article}
\usepackage{colortbl,tabularx,ifxetex,isodate}
\setlength{\arrayrulewidth}{1pt}
%\setlength{\tabcolsep}{1ex}
\newcolumntype{Y}{|>{\hsize=\dimexpr2\hsize + 2\tabcolsep+\arrayrulewidth\relax}X|}
\newcolumntype{Z}{|>{\hsize=\dimexpr3\hsize+4\tabcolsep+2\arrayrulewidth\relax}X|}
\def\CTRheaderfont{\scriptsize\sffamily}
\def\CTRheaderfontBold{\CTRheaderfont\bfseries}
\def\CTRcoloredrow{\rowcolor[gray]{.9}}
\newcommand\CTRempty[1]{\multicolumn{#1}{X}{}\\}
\newcommand\CTRprosjekt[1]{\def\argi{#1}}
\newcommand\CTRprosjektID[1]{\def\argii{#1}}
\newcommand\CTRoppdragsgiver[1]{\def\argiii{#1}}
\newcommand\CTRstart[1]{\def\argiv{#1}}
\newcommand\CTRferdig[1]{\def\argv{#1}}
\newcommand\CTRvarighet[1]{\def\argvi{#1}}
\newcommand\CTRctr[1]{\def\argvii{#1}}
\newcommand\CTRtittel[1]{\def\argviii{#1}}
\newcommand\CTRdato[1]{\def\argix{#1}}
\newcommand\CTRrev[1]{\def\argx{#1}}
\newcommand\CTRmaal[1]{\def\argxi{#1}}
\newcommand\CTRbeskrivelse[1]{\def\argxii{#1}}
\newcommand\CTRinngangsdata[1]{\def\argxiii{#1}}
\newcommand\CTRleveranser[1]{\def\argxiv{#1}}
\newcommand\CTRkommentar[1]{\def\argxv{#1}}
\newcommand\CTRanskaffelser[1]{\def\argxvi{#1}}
\newcommand\CTRtimer[1]{\def\argxvii{#1}}
\newcommand\CTRutarbeidet[1]{\def\argxviii{#1}}
\newcommand\CTRkontrollert[1]{\def\argxix{#1}}
\newenvironment{CTR}{}{%
% \cleardoublepage
\begin{center}
\begin{tabularx}{\textwidth}{|>{\centering\arraybackslash}X|}
\hline
{}\\
{\bfseries \Large CTR}\\
{\scshape Cost Time \& Resource}\\
{}\\\hline
\CTRempty{1}
\end{tabularx}
\begin{tabularx}{\textwidth}{|X|X|X|}
\hline
\CTRcoloredrow
\multicolumn{2}{Y}{\CTRheaderfontBold Prosjekt:}&\CTRheaderfontBold Prosjekt ID: \\
\CTRcoloredrow
\multicolumn{2}{Y}{\argi}&\argii \\\hline
\CTRcoloredrow
\multicolumn{3}{Z}{\CTRheaderfontBold Oppdragsgiver:}\\
\CTRcoloredrow
\multicolumn{3}{Z}{\argiii}\\\hline
\CTRheaderfont Planlagt start:&\CTRheaderfont Planlagt Ferdig:&\CTRheaderfont Varighet:\\
\argiv&\argv&\argvi\\\hline
\CTRheaderfont CTR: (Aktivitetsnummer)&\CTRheaderfont Tittel:&\CTRheaderfont Dato:\\
\argvii&\argviii&\argix\\
&&\CTRheaderfont Rev:\\&&\argx \\\hline
\CTRempty{2}
\end{tabularx}
\begin{tabularx}{\textwidth}{|X|X|}
\hline
\CTRcoloredrow
\multicolumn{2}{Y}{\CTRheaderfont M\r{a}l: (Hva skal oppn\r{a}s med aktiviteten)}\\\hline
\multicolumn{2}{Y}{\argxi}\\\hline
\CTRcoloredrow
\multicolumn{2}{Y}{\CTRheaderfont Arbeidsbeskrivelse: (Hva skal gj{\o}res)}\\\hline
\multicolumn{2}{Y}{\argxii}\\\hline
\CTRcoloredrow
\multicolumn{2}{Y}{\CTRheaderfont Inngangsdata: (Hva m\r{a} v{\ae}re p\r{a} plass for \r{a} starte aktiviteten (avhengighet))}\\\hline
\multicolumn{2}{Y}{\argxiii}\\\hline
\CTRcoloredrow
\multicolumn{2}{Y}{\CTRheaderfont Leveranser:}\\\hline
\multicolumn{2}{Y}{\argxiv}\\\hline
\CTRcoloredrow
\multicolumn{2}{Y}{\CTRheaderfontBold Kommentarer, antagelser}\\\hline
\multicolumn{2}{Y}{\argxv}\\\hline
\CTRcoloredrow
\multicolumn{2}{|c|}{\CTRheaderfont Ressursbehov}\\\hline
\CTRheaderfont Anskaffelser:&\CTRheaderfont Timer:\\
\argxvi&\argxvii\\\hline
\CTRheaderfont Utarbeidet av:&\CTRheaderfont Kontrollert av:\\
\argxviii&\argxix\\\hline
\end{tabularx}
\end{center}
}
% INITIALIZATIONS
\CTRprosjekt{\sffamily{\textbackslash}CTRprosjekt}
\CTRprosjektID{\sffamily{\textbackslash}CTRprosjektID}
\CTRoppdragsgiver{\sffamily{\textbackslash}CTRoppdragsgiver}
\CTRstart{\sffamily{\textbackslash}CTRstart}
\CTRferdig{\sffamily{\textbackslash}CTRferdig}
\CTRvarighet{\sffamily{\textbackslash}CTRvarighet}
\CTRctr{\sffamily{\textbackslash}CTRctr}
\CTRtittel{\sffamily{\textbackslash}CTRtittel}
\CTRdato{\sffamily{\textbackslash}CTRdato}
\CTRrev{\sffamily{\textbackslash}CTRrev}
\CTRmaal{\sffamily{\textbackslash}CTRmaal}
\CTRbeskrivelse{\sffamily{\textbackslash}CTRbeskrivelse}
\CTRinngangsdata{\sffamily{\textbackslash}CTRinngangsdata}
\CTRleveranser{\sffamily{\textbackslash}CTRleveranser}
\CTRkommentar{\sffamily{\textbackslash}CTRkommentar}
\CTRanskaffelser{\sffamily{\textbackslash}CTRanskaffelser}
\CTRtimer{\sffamily{\textbackslash}CTRtimer}
\CTRutarbeidet{\sffamily{\textbackslash}CTRutarbeidet}
\CTRkontrollert{\sffamily{\textbackslash}CTRkontrollert}
\begin{document}
\CTRprosjekt{1}
\CTRprosjektID{2}
\CTRoppdragsgiver{3}
\begin{CTR}
\CTRstart{\printdate{01.04.2015}}
\CTRferdig{\printdate{14.04.2015}}
\CTRvarighet{14 dager}
\CTRctr{7}
\CTRtittel{8}
\CTRdato{\printdate{31.03.2015}}
\CTRrev{0.1}
\CTRmaal{11}
\CTRbeskrivelse{12}
\CTRinngangsdata{13}
\CTRleveranser{14}
\CTRkommentar{15}
\CTRanskaffelser{16}
\CTRtimer{17}
\CTRutarbeidet{18}
\CTRkontrollert{19}
\end{CTR}
\end{document}





expl3makes key/value interfaces super easy :) – Sean Allred Mar 30 '15 at 18:17