From a15f3d703497fec3a42c36342d7cb05a2456e354 Mon Sep 17 00:00:00 2001 From: "anton.obersteiner" Date: Sat, 4 Feb 2023 11:10:29 +0100 Subject: [PATCH] anton-cls-updates (#1) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - add long-used changes from Share LaTeX (title format, meetingBreak, meetingPlace) - add vote numbering system (-> v0.2.1) - add \invisible and \election - move Sitzungseröffnung into \quorum - comments on initials of protokoll.tex Co-authored-by: AntonObersteiner Reviewed-on: https://git.ifsr.de/struktur/tex-templates/pulls/1 Co-authored-by: anton.obersteiner Co-committed-by: anton.obersteiner --- protokoll/fsrprotokoll.cls | 94 ++++++++++++++++++++++++++++++++++---- protokoll/protokoll.tex | 16 +++++-- 2 files changed, 96 insertions(+), 14 deletions(-) diff --git a/protokoll/fsrprotokoll.cls b/protokoll/fsrprotokoll.cls index f51e259..6209e2e 100644 --- a/protokoll/fsrprotokoll.cls +++ b/protokoll/fsrprotokoll.cls @@ -1,5 +1,5 @@ % vim: ft=tex -\ProvidesClass{fsrprotokoll}[2018/03/05 Klasse fuer FSR Protokolle v0.2] +\ProvidesClass{fsrprotokoll}[2018/03/05 Klasse fuer FSR Protokolle v0.2.1] \LoadClass{scrartcl} \RequirePackage[utf8]{inputenc} @@ -17,6 +17,7 @@ \RequirePackage[autostyle=true,german=quotes]{csquotes} % https://github.com/AndyClifton/AccessibleMetaClass/blob/master/accessibilityMeta.sty \RequirePackage[tagged]{accessibilityMeta} +\RequirePackage{xcolor} \parindent 0pt \parskip 1ex @@ -37,6 +38,13 @@ {0pt} {*0.5} {-5pt} +\titleformat{\subsubsection} + {\normalfont\rmfamily\bfseries} + {}{0em}{} +\titlespacing{\subsubsection} + {0pt} + {*0.5} + {-9pt} \makeatletter \newcommand*{\insertheaderrule}{\rlap{\rule[-.5\normalbaselineskip]{\textwidth}{.4pt}}} @@ -51,6 +59,14 @@ \includegraphics[height=4em]{tudlogo}% } } +% from https://tex.stackexchange.com/questions/566641/test-for-substring-with-expl3-in-argument-of-setlength +\newcommand{\textInString}[2]{% + \ifnum\pdfmatch{#1}{#2}=1 + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi +} \makeatother \pagestyle{fsrProtokoll} @@ -77,6 +93,7 @@ } \newcommand*{\quorum}[2] { + Die Sitzungsleitung eröffnet die Sitzung. \newcount\quorateThreshold \quorateThreshold=#2 Es sind #1 von #2 Mitgliedern mit aktivem Stimmrecht anwesend. @@ -96,10 +113,12 @@ \vspace*{1cm}% \textbf{\Large Protokoll zur FSR--Sitzung vom \the\date}% - Sitzungsleitung: \the\chairperson \,| % + Sitzungsleitung: \the\chairperson \, | % Protokoll: \the\clerks% - Sitzungsbeginn: \the\meetingStart \,| Sitzungsende: \the\meetingEnd% + Sitzungsbeginn: \the\meetingStart \, | Sitzungsende: \the\meetingEnd% + + Sitzungsort: \the\meetingPlace % required by FSO \end{center}% \textbf{Anwesende:} \the\attendees% \, (\the\attendeesNumber \, von 17)% @@ -128,8 +147,13 @@ \immediate\write\exportdata{-} \begin{lrbox}{\mybox}\begin{minipage}{.985\textwidth} \newcommand*{\voteNumber}[1]{% - \immediate\write\exportdata{ decision_id: "\the\year/##1"}% - \textbf{\the\year\,/\,##1:}\\% + %see section VOTENUMBER at the end + \ifthenelse{\equal{##1}{}}{}{% else (argument is not empty) + \setcounter{votenumber}{##1}% + }% + \immediate\write\exportdata{ decision_id: "\the\year/\thevotenumber"}% + \textbf{\the\year\,/\,\thevotenumber:}\\% + \stepcounter{votenumber}% }% \newcommand*{\voteMoney}[1]{% \ifthenelse{\equal{##1}{}} {% @@ -137,7 +161,7 @@ \textbf{Antrag}% } {% \immediate\write\exportdata{ money_limit: ##1}% - \textbf{Finanzantrag}% + \textbf{Finanzantrag über \EUR{##1} -- Antrag}% }% } \newcommand{\voteText}[1]{% @@ -188,8 +212,13 @@ \immediate\write\exportdata{-} \begin{lrbox}{\mybox}\begin{minipage}{.985\textwidth} \newcommand*{\voteNumber}[1]{% - \immediate\write\exportdata{ decision_id: "\the\year/##1"}% - \textbf{\the\year\,/\,##1:}\\% + %see section VOTENUMBER at the end + \ifthenelse{\equal{##1}{}}{}{% else (argument is not empty) + \setcounter{votenumber}{##1}% + }% + \immediate\write\exportdata{ decision_id: "\the\year/\thevotenumber"}% + \textbf{\the\year\,/\,\thevotenumber:}\\% + \stepcounter{votenumber}% }% \newcommand*{\voteMoney}[1]{% \ifthenelse{\equal{##1}{}} {% @@ -197,12 +226,15 @@ \textbf{Antrag}% } {% \immediate\write\exportdata{ money_limit: ##1}% - \textbf{Finanzantrag}% + \textbf{Finanzantrag über \EUR{##1} - Antrag}% }% } \newcommand*{\voteText}[1]{% \immediate\write\exportdata{ text: "##1"}% ##1\vspace{\baselineskip}\\}% + \newcommand*{\voteSubmitter}[1]{% + \immediate\write\exportdata{ submitter: "##1"}% + \textbf{Antragsteller\_in: }##1\vspace{\baselineskip}\\}% \newcommand*{\voteReason}[1]{% \immediate\write\exportdata{ rationale: "##1"}% \textbf{Begründung: }##1\vspace{\baselineskip}\\}% @@ -254,6 +286,25 @@ \end{minipage}\end{lrbox}\fbox{\usebox{\mybox}} } +% election command - not an environment! +\newcommand{\election}[3] {% + \begin{lrbox}{\mybox}\begin{minipage}{.985\textwidth} + \ifthenelse{\isempty{#1}}{}{% + \textbf{#1. Wahlgang:}\\[7pt] + } + \begin{tabularx}{\linewidth}{p{.275\linewidth}|c|c|c|l} + \textbf{Kandidat\_in} & \textbf{Dafür} & \textbf{Dagegen} & + \textbf{Enthaltungen} & \textbf{Ergebnis} \\ + \hline + #2 + \end{tabularx}% + \ifthenelse{\isempty{#3}}{}{% + \\[7pt] + #3 + } + \end{minipage}\end{lrbox}\fbox{\usebox{\mybox}} +} + \newcommand*{\away}[1] { \ifthenelse{\the\numexpr \countInlineItems{#1} > 1} {% \textit{[#1 verlassen die Sitzung]}% @@ -268,13 +319,28 @@ \textit{[#1 erscheint zur Sitzung]}% } } + +\newcommand*{\meetingBreak}[1] { + \textit{Die Sitzung wird für #1 Minuten unterbrochen.}% +} + \newcommand*{\signature} { \vfill \noindent\rule{6.5cm}{0.3pt} \hfill \noindent\rule{6.5cm}{0.3pt} \noindent\makebox[6.5cm][l]{Sitzungsleitung} \hfill \noindent\makebox[6.5cm][l]{Protokoll} } +\definecolor{MyWhite}{HTML}{FFFFFF} +\newcommand{\invisible}[1]{\textcolor{MyWhite}{#1}} + +%see section VOTENUMBER at the end +\newcommand*{\initVoteNumber}[1] { + \setcounter{votenumber}{#1} +} + \AtBeginDocument{% + %see section VOTENUMBER at the end + \newcounter{votenumber} \immediate\newwrite\exportdata% \immediate\openout\exportdata=tmp.txt\relax } @@ -291,6 +357,7 @@ \newtoks\clerks \newtoks\meetingStart \newtoks\meetingEnd +\newtoks\meetingPlace \newtoks\attendees \newtoks\excused \newtoks\unexcused @@ -298,3 +365,12 @@ \newtoks\guests \endinput +%documentation on VOTENUMBERS (version 0.2 -> 0.2.1, Author: Anton Obersteiner) +%votes are numbered within one year. use \initVoteCount{num} at the beginning +%of your protocol to set this counter to num, otherwise the counter starts at 0. +%each vote is automatically numbered 20YY / and then +%increments the counter *if you call \voteNumber{} in your vote environment*. +%if you call votenumber with an argument: \voteNumber{num}, the counter is reset to that value +%and increments from there in the votes after. +%for backwards compatibility, the argument is not optional (would require \voteNumber[] syntax), +%but the argument to the {} is ignored if empty. diff --git a/protokoll/protokoll.tex b/protokoll/protokoll.tex index de9428e..9cc1fd4 100644 --- a/protokoll/protokoll.tex +++ b/protokoll/protokoll.tex @@ -14,11 +14,19 @@ %%!sitzungsleitung,protokoll: Das Protokoll ist fertig und kann unterschrieben werden! :) \date{} % DD.MM.YYYY -\attendeesNumber{} % Anzahl anwesender Mitglieder -\chairperson{} -\clerks{} + +% irrelevant, da \quorate broken ist und wir eh \quorum verwenden müssen (Anton O) +%\attendeesNumber{} % Anzahl anwesender Mitglieder, +\chairperson{} % Sitzungsleitung +\clerks{} % Protokoll \meetingStart{} % HH:MM \meetingEnd{} % HH:MM +\meetingPlace{APB/1004} % Raum der Sitzung, normalerweise der Ratssaal + +% Nummer des letzten Antrags aus dem letztem Protokoll + 1, +% sonst \initVoteNumber des letzten Protokolls kopieren +\initVoteNumber{26} + % Liste anwesender Mitglieder \attendees{} \excused{} @@ -30,8 +38,6 @@ \maketitle -Die Sitzungsleitung eröffnet die Sitzung. - \quorum{}{} % Feststellung der Beschlussfähigkeit {#Anwesende}{#NichtRuhende} \section{Protokollkontrolle und Überprüfung gefasster Beschlüsse}