Compare commits

...

7 commits

Author SHA1 Message Date
AntonObersteiner fbb7cdaf49 add command \textInString for future use
could be used to make \appear and \away sensitive to Person1 und Person2
2023-02-03 12:42:46 +01:00
AntonObersteiner 3bdc642e47 add command \election 2023-02-03 12:39:37 +01:00
AntonObersteiner 67decddb6d add command \invisible for white-on-white text 2023-02-03 12:38:31 +01:00
AntonObersteiner 387806ac7a add automatic vote numbering, therefore v0.2.1
\newcounter{votenumber}
\initVoteNumber for the first lines of the protocol
automatic increment in every vote and vote-two-thirds environment
some documentation at the end and references to that
Protokoll-Vorlage entsprechend angepasst und erweitert
2023-02-03 12:27:27 +01:00
AntonObersteiner d0d3aec761 expand 'Antrag': 'FA' now with money, and \voteSubmitter 2023-02-03 12:24:30 +01:00
AntonObersteiner 99a2a392f3 update \quorum, add \meetingPlace and \meetingBreak 2023-02-03 12:22:03 +01:00
AntonObersteiner 004ff1ec58 update title (format and spacing) - not by me 2023-02-03 12:18:34 +01:00
2 changed files with 96 additions and 12 deletions

View file

@ -1,5 +1,5 @@
% vim: ft=tex % 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} \LoadClass{scrartcl}
\RequirePackage[utf8]{inputenc} \RequirePackage[utf8]{inputenc}
@ -17,6 +17,7 @@
\RequirePackage[autostyle=true,german=quotes]{csquotes} \RequirePackage[autostyle=true,german=quotes]{csquotes}
% https://github.com/AndyClifton/AccessibleMetaClass/blob/master/accessibilityMeta.sty % https://github.com/AndyClifton/AccessibleMetaClass/blob/master/accessibilityMeta.sty
\RequirePackage[tagged]{accessibilityMeta} \RequirePackage[tagged]{accessibilityMeta}
\RequirePackage{xcolor}
\parindent 0pt \parindent 0pt
\parskip 1ex \parskip 1ex
@ -37,6 +38,13 @@
{0pt} {0pt}
{*0.5} {*0.5}
{-5pt} {-5pt}
\titleformat{\subsubsection}
{\normalfont\rmfamily\bfseries}
{}{0em}{}
\titlespacing{\subsubsection}
{0pt}
{*0.5}
{-9pt}
\makeatletter \makeatletter
\newcommand*{\insertheaderrule}{\rlap{\rule[-.5\normalbaselineskip]{\textwidth}{.4pt}}} \newcommand*{\insertheaderrule}{\rlap{\rule[-.5\normalbaselineskip]{\textwidth}{.4pt}}}
@ -51,6 +59,14 @@
\includegraphics[height=4em]{tudlogo}% \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 \makeatother
\pagestyle{fsrProtokoll} \pagestyle{fsrProtokoll}
@ -77,6 +93,7 @@
} }
\newcommand*{\quorum}[2] { \newcommand*{\quorum}[2] {
Die Sitzungsleitung eröffnet die Sitzung.
\newcount\quorateThreshold \newcount\quorateThreshold
\quorateThreshold=#2 \quorateThreshold=#2
Es sind #1 von #2 Mitgliedern mit aktivem Stimmrecht anwesend. Es sind #1 von #2 Mitgliedern mit aktivem Stimmrecht anwesend.
@ -96,10 +113,12 @@
\vspace*{1cm}% \vspace*{1cm}%
\textbf{\Large Protokoll zur FSR--Sitzung vom \the\date}% \textbf{\Large Protokoll zur FSR--Sitzung vom \the\date}%
Sitzungsleitung: \the\chairperson \,| % Sitzungsleitung: \the\chairperson \, | %
Protokoll: \the\clerks% Protokoll: \the\clerks%
Sitzungsbeginn: \the\meetingStart \,| Sitzungsende: \the\meetingEnd% Sitzungsbeginn: \the\meetingStart \, | Sitzungsende: \the\meetingEnd%
Sitzungsort: \the\meetingPlace % required by FSO
\end{center}% \end{center}%
\textbf{Anwesende:} \the\attendees% \, (\the\attendeesNumber \, von 17)% \textbf{Anwesende:} \the\attendees% \, (\the\attendeesNumber \, von 17)%
@ -128,8 +147,13 @@
\immediate\write\exportdata{-} \immediate\write\exportdata{-}
\begin{lrbox}{\mybox}\begin{minipage}{.985\textwidth} \begin{lrbox}{\mybox}\begin{minipage}{.985\textwidth}
\newcommand*{\voteNumber}[1]{% \newcommand*{\voteNumber}[1]{%
\immediate\write\exportdata{ decision_id: "\the\year/##1"}% %see section VOTENUMBER at the end
\textbf{\the\year\,/\,##1:}\\% \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]{% \newcommand*{\voteMoney}[1]{%
\ifthenelse{\equal{##1}{}} {% \ifthenelse{\equal{##1}{}} {%
@ -137,7 +161,7 @@
\textbf{Antrag}% \textbf{Antrag}%
} {% } {%
\immediate\write\exportdata{ money_limit: ##1}% \immediate\write\exportdata{ money_limit: ##1}%
\textbf{Finanzantrag}% \textbf{Finanzantrag über \EUR{##1} -- Antrag}%
}% }%
} }
\newcommand{\voteText}[1]{% \newcommand{\voteText}[1]{%
@ -188,8 +212,13 @@
\immediate\write\exportdata{-} \immediate\write\exportdata{-}
\begin{lrbox}{\mybox}\begin{minipage}{.985\textwidth} \begin{lrbox}{\mybox}\begin{minipage}{.985\textwidth}
\newcommand*{\voteNumber}[1]{% \newcommand*{\voteNumber}[1]{%
\immediate\write\exportdata{ decision_id: "\the\year/##1"}% %see section VOTENUMBER at the end
\textbf{\the\year\,/\,##1:}\\% \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]{% \newcommand*{\voteMoney}[1]{%
\ifthenelse{\equal{##1}{}} {% \ifthenelse{\equal{##1}{}} {%
@ -197,12 +226,15 @@
\textbf{Antrag}% \textbf{Antrag}%
} {% } {%
\immediate\write\exportdata{ money_limit: ##1}% \immediate\write\exportdata{ money_limit: ##1}%
\textbf{Finanzantrag}% \textbf{Finanzantrag über \EUR{##1} - Antrag}%
}% }%
} }
\newcommand*{\voteText}[1]{% \newcommand*{\voteText}[1]{%
\immediate\write\exportdata{ text: "##1"}% \immediate\write\exportdata{ text: "##1"}%
##1\vspace{\baselineskip}\\}% ##1\vspace{\baselineskip}\\}%
\newcommand*{\voteSubmitter}[1]{%
\immediate\write\exportdata{ submitter: "##1"}%
\textbf{Antragsteller\_in: }##1\vspace{\baselineskip}\\}%
\newcommand*{\voteReason}[1]{% \newcommand*{\voteReason}[1]{%
\immediate\write\exportdata{ rationale: "##1"}% \immediate\write\exportdata{ rationale: "##1"}%
\textbf{Begründung: }##1\vspace{\baselineskip}\\}% \textbf{Begründung: }##1\vspace{\baselineskip}\\}%
@ -254,6 +286,25 @@
\end{minipage}\end{lrbox}\fbox{\usebox{\mybox}} \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] { \newcommand*{\away}[1] {
\ifthenelse{\the\numexpr \countInlineItems{#1} > 1} {% \ifthenelse{\the\numexpr \countInlineItems{#1} > 1} {%
\textit{[#1 verlassen die Sitzung]}% \textit{[#1 verlassen die Sitzung]}%
@ -268,13 +319,28 @@
\textit{[#1 erscheint zur Sitzung]}% \textit{[#1 erscheint zur Sitzung]}%
} }
} }
\newcommand*{\meetingBreak}[1] {
\textit{Die Sitzung wird für #1 Minuten unterbrochen.}%
}
\newcommand*{\signature} { \newcommand*{\signature} {
\vfill \vfill
\noindent\rule{6.5cm}{0.3pt} \hfill \noindent\rule{6.5cm}{0.3pt} \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} \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{% \AtBeginDocument{%
%see section VOTENUMBER at the end
\newcounter{votenumber}
\immediate\newwrite\exportdata% \immediate\newwrite\exportdata%
\immediate\openout\exportdata=tmp.txt\relax \immediate\openout\exportdata=tmp.txt\relax
} }
@ -291,6 +357,7 @@
\newtoks\clerks \newtoks\clerks
\newtoks\meetingStart \newtoks\meetingStart
\newtoks\meetingEnd \newtoks\meetingEnd
\newtoks\meetingPlace
\newtoks\attendees \newtoks\attendees
\newtoks\excused \newtoks\excused
\newtoks\unexcused \newtoks\unexcused
@ -298,3 +365,12 @@
\newtoks\guests \newtoks\guests
\endinput \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 / <votenumber> 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.

View file

@ -14,11 +14,19 @@
%%!sitzungsleitung,protokoll: Das Protokoll ist fertig und kann unterschrieben werden! :) %%!sitzungsleitung,protokoll: Das Protokoll ist fertig und kann unterschrieben werden! :)
\date{} % DD.MM.YYYY \date{} % DD.MM.YYYY
\attendeesNumber{} % Anzahl anwesender Mitglieder
\chairperson{} % irrelevant, da \quorate broken ist und wir eh \quorum verwenden müssen (Anton O)
\clerks{} %\attendeesNumber{} % Anzahl anwesender Mitglieder,
\chairperson{} % Sitzungsleitung
\clerks{} % Protokoll
\meetingStart{} % HH:MM \meetingStart{} % HH:MM
\meetingEnd{} % 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 % Liste anwesender Mitglieder
\attendees{} \attendees{}
\excused{} \excused{}