%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Copyright 2013 koeart, john, ben % % % % This program is free software: you can redistribute it and/or modify it % % under the terms of the GNU General Public License as published by the % % Free Software Foundation, either version 3 of the License, or (at your % % option) any later version. % % % % This program is distributed in the hope that it will be useful, but % % WITHOUT ANY WARRANTY; without even the implied warranty of % % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU % % General Public License for more details. % % % % You should have received a copy of the GNU General Public License along % % with this program. If not, see . % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ProvidesClass{datenschleuder}[% 2013/07/19 v0.1 Datenschleuder ] \LoadClass[% pdftex, a5paper, twoside, % twocolumn, fontsize=8pt, ]{scrartcl} \RequirePackage[paper=a5paper,inner=16mm, outer=12mm,top=20mm,bottom=30mm]{geometry} %FIXME: do so only if specified in document or makefile: %\RequirePackage[cam,a4,center]{crop} \RequirePackage{multicol} \RequirePackage{xkeyval} \newcommand{\@volume}{} \DeclareOptionX{volume}{\renewcommand{\@volume}{#1}}% \newcommand{\@year}{} \DeclareOptionX{year}{\renewcommand{\@year}{#1}}% \newif\iffree\freetrue \DeclareOptionX{non-free}{\freefalse}% \ProcessOptionsX \RequirePackage{ifluatex} \ifluatex \RequirePackage{luatextra} \RequirePackage{lineno} \RequirePackage[EU2]{fontenc} \RequirePackage{fontspec} \setmainfont[Mapping=tex-text,Numbers={OldStyle}]{Linux Libertine O} \setsansfont[Mapping=tex-text,Numbers={OldStyle}]{Linux Biolinum O} % \setmonofont[Mapping=tex-text]{Courier Prime} \iffree \newcommand{\DSLogoFont}{\fontspec[Scale=2]{Zepto}} \else \newcommand{\DSLogoFont}{\fontspec{FFNetwork}} \fi \else \ClassError{Datenschleuder}{% You need LuaTeX in order to compile \MessageBreak a Datenschleuder% }{% Instead of running "pdflatex \jobname" type:\MessageBreak lualatex \jobname\MessageBreak \MessageBreak Remember to cross two fingers and praise Eris before compiling.\MessageBreak Unpredictable things will happen with your computer otherwise... } \fi \RequirePackage{fmtcount} \RequirePackage{scrpage2} \RequirePackage{graphicx} \RequirePackage{tikz} \RequirePackage[pdftex,% citebordercolor={0.9 0.9 1},% filebordercolor={0.9 0.9 1},% linkbordercolor={0.9 0.9 1},% pagebordercolor={0.9 0.9 1},% urlbordercolor={0.9 0.9 1},% pdfborder={0.9 0.9 1},% pagebackref,plainpages=false,pdfpagelabels=true]{hyperref} \hypersetup{ pdfauthor={Chaos Computer Club}, pdftitle={datenschleuder}, pdfsubject={wissenschaftliches fackblatt fuer datenreisende}, pdfkeywords={Ausgabe\@volume, Jahr\@year} } \RequirePackage{float} \pgfdeclareimage[height=5mm]{Pesthoernchen}{pesthoernchen.pdf} \pgfdeclareimage[width=10mm]{CCCLogo}{Logo_CCC} \newfloat{impressum}{tpbh}{loi} %impressum als Float, damit kann Text fließen \pagestyle{scrheadings} \clearscrheadfoot \setkomafont{pageheadfoot}{% \normalfont\normalcolor\small } %FIXME: use pgfdeclared image for saving objects in pdf \rehead[]{\tikz[overlay]{\node[xshift=0.3mm,yshift=0.9mm]{\pgfuseimage{CCCLogo}};}} \rohead[]{\tikz[overlay]{\node[xshift=0.3mm,yshift=0.9mm]{\pgfuseimage{CCCLogo}};}} \chead{\directlua{tex.print(ruhetmp or "Bitte runninghead setzen")}} \setheadsepline{0.5pt} \ifoot[]{Datenschleuder. \@volume / \@year} \ofoot[]{\texttt{0x\ifthenelse{\value{page}>15}{}{0}\hexadecimal{page}}} \setfootsepline{0.5pt} %FIXME: use abstract environment in prior of nasty DSabstract command \renewenvironment{abstract}{% \begin{center} \bfseries }{% \end{center} } \newcommand{\@DSabstract}{} \newcommand{\DSabstract}[1]{\renewcommand{\@DSabstract}{#1}} \newtoks{\@DSauthorstok} \@DSauthorstok={}% \newcommand{\@addauthor}[1]{\@DSauthorstok=\expandafter{\the\@DSauthorstok #1 }} \newcommand{\addauthor}[1]{\@addauthor{#1}} \renewcommand{\maketitle}{% % \twocolumn[ % \renewcommand{\@runninghead}{\@runningheadtmp} \hypertarget{AR\@title}{\textsf{\Huge\@title}} \pdfbookmark[0]{\@title}{AR\@title} \begin{center}% \textsf{von \@author}%FIXME: implement mail and array of authors \end{center} \addauthor{Noch ein Test} {\bfseries\@DSabstract} \vspace*{3mm} % ] \directlua{ruhetmp=nxruhetmp nxruhetmp=nil} \normalsize } \define@key{DSarticleKeys}{title}{\title{#1}}% \define@key{DSarticleKeys}{author}{\author{#1}} \define@key{DSarticleKeys}{DSabstract}{\renewcommand{\@DSabstract}{#1}} %\newcommand{\@runninghead}{} %\newcommand{\@runningheadtmp}{} %\newcommand{\runninghead}[1]{\renewcommand{\@runningheadtmp}{#1}} \newcommand{\runninghead}[1]{\directlua{nxruhetmp = "\luatexluaescapestring{#1}"}} \newcommand{\manrunninghead}[1]{\directlua{ruhetmp = "\luatexluaescapestring{#1}"}} \define@key{DSarticleKeys}{runninghead}[\@title]{\runninghead{#1}} \newenvironment{DSarticle}[1][]{% \newpage \setcounter{section}{0} \setkeys{DSarticleKeys}{#1}% \newpage \maketitle \begin{multicols}{2} }{% \end{multicols} } \newenvironment{DSfigure} {\par\medskip\noindent\minipage{\linewidth} }{% \endminipage\par\medskip} \newcounter{NumOfLetters} \newenvironment{DSletters}{% \hypertarget{MARKLeserbriefe}{} \pdfbookmark[0]{Leserbriefe}{MARKLesrbriefe} \manrunninghead{Leserbriefe} \setcounter{NumOfLetters}{0} \begin{multicols}{2} } {% \end{multicols} } \newenvironment{letter}{% \setlength{\parskip}{2.5mm}% \setlength{\parindent}{0mm}% \ifthenelse{\equal{\arabic{NumOfLetters}}{0}}{}{% \vspace{-3mm}% \begin{center}% \hfill% \hfill% %FIXME: use pgfdeclared image for saving objects in pdf \pgfuseimage{Pesthoernchen} \hfill% \pgfuseimage{Pesthoernchen} \hfill% \pgfuseimage{Pesthoernchen} \hfill% \hfill\hspace*{0cm}% \end{center}% \vspace{-5mm}% }% \stepcounter{NumOfLetters}% }{% } \newenvironment{question}{% }{% \par } \newenvironment{answer}{% \itshape% }{% } %%%%%%%% % Die folgenden Kommandos können auch aus dem Dokument gesetzt werden. Evtl. als DSimpressum Keys machen %%%%%%%% \newcommand{\@DSherausgeber}{} \newcommand{\DSherausgeber}[1]{\renewcommand{\@DSherausgeber}{#1}} \newcommand{\@DSredaktion}{} \newcommand{\DSredaktion}[1]{\renewcommand{\@DSredaktion}{#1}} \newcommand{\@DSdruck}{} \newcommand{\DSdruck}[1]{\renewcommand{\@DSdruck}{#1}} \newcommand{\@DSvisdp}{} \newcommand{\DSvisdp}[1]{\renewcommand{\@DSvisdp}{#1}} \newcommand{\@DSauthors}{\textbf{Autoren }\\\the\@DSauthorstok} \newcommand{\DSauthors}{\@DSauthors} %\define@key{DSimpressumKeys}{ViSdP}{% % \DSvisdp{#1} %} \newcommand{\DSimpressum}{% \begin{impressum*}[b!] %minipage: pos., höhe, textpos, breite \colorbox{lightgray}{ \begin{minipage}[t]{1\linewidth} \hypertarget{MARKImpressum}{ \large \textbf{Die Datenschleuder Nr. \@volume}} \pdfbookmark[0]{Impressum}{MARKImpressum} \begin{multicols}{2} \normalsize \@DSherausgeber\\ \@DSredaktion\\ \@DSdruck\\ \@DSvisdp\\ \DSauthors \end{multicols} \end{minipage} } \end{impressum*} }