PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Anwesenheitsliste zum drüberschaun



Arthorius
22-09-2012, 04:56
Ein freundliches Hallo an die mrunix.de-Community,

ich habe mir ein kleines Projekt gemacht, die Anwesenheitsliste, die zurzeit in Word geschrieben ist nach LaTeX zu portieren. (keine strikte Bindung an die Vorlage erforderlich)

Ich hab nach längerem hin und her eine recht akzeptable Lösung, allerdings ist diese nicht sehr flexibel (siehe unten; bitte nicht mit YAGNI kommen ;) ) und für ein simples Thema recht kompliziert geworden. Und somit zu meiner Frage, ob jemand von euch mal drüberschaut und mir eventuell Verbesserungsvorschläge unterbreitet.



\documentclass{article}

\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}

\usepackage[margin=1cm,top=1.5cm]{geometry}

\usepackage{forloop}
\usepackage{multicol}
\usepackage{xtab}
\usepackage{booktabs}

\usepackage{numprint}
\nplpadding{2}

\usepackage{scrpage2}
\pagestyle{scrheadings}
\clearscrheadfoot
\chead{Wohnheimsversammlung - \today}


\newcounter{zimmerct}

\newcommand{\floor}[2]{%
\tablehead{\toprule \large\bfseries Nr. \hspace{2cm} Unterschrift \\ \midrule }%
\tabletail{\midrule}%
\tablelasttail{\bottomrule}%
\begin{xtabular}{p{.47\textwidth}}%
\forloop{zimmerct}{1}{\not{\value{zimmerct}>#2}}{%
\mbox{#1$\cntprint{zimmerct}$ \hspace{-.6cm} \raisebox{-2em}{\parbox{.46\textwidth}{\dotfill}}} \tabularnewline%
} \\
\end{xtabular}
}

\makeatletter
\let\mcnewpage\pagebreak
\newcommand{\changenewpage}{%
\renewcommand\newpage{%
\if@firstcolumn
\hrule width\linewidth height0pt
\columnbreak
\else
\mcnewpage
\fi
}}
\makeatother

\newenvironment{dormitory}{\begin{multicols*}{2}\c hangenewpage}{\end{multicols*}}


\begin{document}

\begin{dormitory}
\floor{0}{20}
\floor{1}{20}
\floor{2}{20}
\floor{3}{8}
\end{dormitory}

\end{document}


Eine konkrete Macke ist das unschöne setzen bei mehr als zwanzig Zimmer pro Stockwerk =>
\floor{Stockwerknummer}{Zimmeranzahl}

Und sehe das richtig, dass multicolumn nicht zusammen mit "longtables" (supertabular, xtab) und forloops funktioniert, bekomme da immer ein

Misplaced \omit.

Vielen Dank schonmal für eure Mühen.

Arthorius

rais
23-09-2012, 09:25
Hallo und Herzlich Willkommen :)
ich würde die gepunktete Linie nicht so weit runtersetzen und auch nicht unter die Nummer schieben -- so sieht es mitten drin so aus, als stünde die Nummer unterm Strich.
Als Orientierungshilfe könnte die Angabe des Stockwerks nützlich sein.
Damit in einer Spalte keine doppelten Tabellenköpfe vorkommen, könntest Du die Tabelle bereits in der dormitory-Umgebung starten, etwa


\documentclass{article}

\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}

\usepackage[margin=1cm,top=1.5cm]{geometry}

\usepackage{forloop}
\usepackage{multicol}
\usepackage{xtab}
\usepackage{booktabs}

\usepackage{numprint}
\nplpadding{2}

\usepackage{scrpage2}
\pagestyle{scrheadings}
\clearscrheadfoot
\chead{Wohnheimsversammlung - \today}


\newcounter{zimmerct}

\newcommand{\floor}[2]{%
\rule{0pt}{6ex}%
\hspace{3cm}\bfseries---%
\ifnum#1<0
Keller (#1)%
\else
\ifnum#1=0
Erdgeschoss%
\else
#1.~Stock%
\fi
\fi
---%
\forloop{zimmerct}{1}{\not{\value{zimmerct}>#2}}{%
\tabularnewline
\raisebox{0.5ex}{#1$\cntprint{zimmerct}$}%
\rule{0pt}{6ex}%
\parbox{.44\textwidth}{\dotfill}%
}\tabularnewline
}

\makeatletter
\let\mcnewpage\pagebreak
\newcommand{\changenewpage}{%
\renewcommand\newpage{%
\if@firstcolumn
\hrule width\linewidth height0pt
\columnbreak
\else
\mcnewpage
\fi
}}
\makeatother

\newenvironment{dormitory}{%
\begin{multicols*}{2}\changenewpage
\tablehead{\toprule \large\bfseries Nr. \hspace{2cm} Unterschrift \\ \midrule }%
\tablelasttail{\bottomrule}%
\begin{xtabular}{@{}p{.47\textwidth}@{}}%
}{%
\end{xtabular}%
\end{multicols*}%
}


\begin{document}

\begin{dormitory}
\floor{0}{25}
\floor{1}{20}
\floor{2}{20}
\floor{3}{8}
\end{dormitory}

\end{document}

MfG

Arthorius
23-09-2012, 14:44
Hallo rais,

mein erster Eindruck war einfach nur "wow! schaut ja um einiges besser aus."
Dann beim zweiten hinschauen, dann "ahh... so hat er das gemacht..." Gerade die Idee mit
Damit in einer Spalte keine doppelten Tabellenköpfe vorkommen, könntest Du die Tabelle bereits in der dormitory-Umgebung starten erleichtert den Umgang damit ungemein...

Vielen Dank dafür.
Arthorius