From ec151de0f3ba705d191c5e0a80c6b1c2e8342da1 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sun, 21 Aug 2011 23:19:38 +0000 Subject: new latex package musuos (21aug11) git-svn-id: svn://tug.org/texlive/trunk@23629 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/source/latex/musuos/musuos.dtx | 841 +++++++++++++++++++++++ 1 file changed, 841 insertions(+) create mode 100644 Master/texmf-dist/source/latex/musuos/musuos.dtx (limited to 'Master/texmf-dist/source/latex/musuos/musuos.dtx') diff --git a/Master/texmf-dist/source/latex/musuos/musuos.dtx b/Master/texmf-dist/source/latex/musuos/musuos.dtx new file mode 100644 index 00000000000..9cef98fafad --- /dev/null +++ b/Master/texmf-dist/source/latex/musuos/musuos.dtx @@ -0,0 +1,841 @@ +% \iffalse meta-comment +% +% Copyright (C) 2011 by Tobias Weh +% www.tobias-weh.de +% +% This file may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either +% version 1.2 of this license or (at your option) any later +% version. The latest version of this license is in: +% +% http://www.latex-project.org/lppl.txt +% +% and version 1.2 or later is part of all distributions of +% LaTeX version 1999/12/01 or later. +% +% \fi +% +% \iffalse +%<*driver> +\ProvidesFile{musuos.dtx}[2011/08/15 v1.0 Uni Osnabrueck] +% +%\NeedsTeXFormat{LaTeX2e}[2009/01/01] +%\ProvidesClass{musuos} +% [2011/08/15 v1.0 a class for typesetting +% papers. Uni Osnabrueck, music dept.] +% +%<*driver> +\documentclass{ltxdoc} + +\usepackage[T1]{fontenc} +\usepackage[latin1]{inputenc} +\usepackage[ngerman]{babel} +\usepackage{xspace} +\usepackage{lmodern} +\usepackage[hang]{footmisc} +\usepackage{dblfnote} + \setlength{\footnotemargin}{1em} +\usepackage{scrbase} +\usepackage[hyphens]{url} +\usepackage{hyperref} + +\newcommand{\musuos}{\texttt{musuos.cls}\xspace} +\newcommand*{\pkg}[1]{\texttt{#1}} +\newcommand*{\Opt}[1]{\texttt{#1}\marginpar{\raggedleft\texttt{#1} \small(Opt.)}} +\MakeShortVerb{\|} +\newcommand{\DM}[1]{\DescribeMacro{#1}} +\setcounter{tocdepth}{1} + +\EnableCrossrefs +\CodelineIndex +\RecordChanges + +\def\generalname{G} +\IndexPrologue{ + \section{Codeindex} + Kursive Zahlen beziehen sich auf die Seite, + auf der der Eintrag beschrieben wird, unterstrichene + Nummern beziehen sich auf die Codezeile mit der Definition + und nicht ausgezeichnete Ziffern beziehen sich auf Codzeilen, + in denen der Eintrag verwendet wird. +} +\GlossaryPrologue{ + \section{Versionsgeschichte} + Mit einem G gekennzeichnete Einträge beziehen sich jeweils + auf die ganze Klasse. +} + +\begin{document} + \DocInput{musuos.dtx} +\end{document} +% +% \fi +% +% \CharacterTable +% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +% Digits \0\1\2\3\4\5\6\7\8\9 +% Exclamation \! Double quote \" Hash (number) \# +% Dollar \$ Percent \% Ampersand \& +% Acute accent \' Left paren \( Right paren \) +% Asterisk \* Plus \+ Comma \, +% Minus \- Point \. Solidus \/ +% Colon \: Semicolon \; Less than \< +% Equals \= Greater than \> Question mark \? +% Commercial at \@ Left bracket \[ Backslash \\ +% Right bracket \] Circumflex \^ Underscore \_ +% Grave accent \` Left brace \{ Vertical bar \| +% Right brace \} Tilde \~} +% +% \changes{v1.0}{2011/08/15}{Erste Version} +% +% \GetFileInfo{musuos.dtx} +% +% +% \DoNotIndex{\?,\.,\@M,\@@input,\@Alph,\@alph,\@addtoreset,\@arabic} +% \DoNotIndex{\@badmath,\@centercr,\@cite} +% \DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue} +% \DoNotIndex{\@input,\@ixpt,\@m,\@minus,\@mkboth} +% \DoNotIndex{\@ne,\@nil,\@nomath,\@plus,\roman,\@set@topoint} +% \DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb} +% \DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt} +% \DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt} +% \DoNotIndex{\@xxpt,\@xxvpt,\\,\,\addpenalty,\addtolength,\addvspace} +% \DoNotIndex{\advance,\ast,\begin,\begingroup,\bfseries,\bgroup,\box} +% \DoNotIndex{\bullet} +% \DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption} +% \DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass} +% \DoNotIndex{\DoNotIndex,\egroup,\ifdim,\else,\fi,\em,\endtrivlist} +% \DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup} +% \DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter} +% \DoNotIndex{\fbox} +% \DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef} +% \DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule} +% \DoNotIndex{\hsize,\hskip,\hspace,\hss,\if@tempswa,\ifcase,\or,\fi,\fi} +% \DoNotIndex{\ifhmode,\ifvmode,\ifnum,\iftrue,\ifx,\fi,\fi,\fi,\fi,\fi} +% \DoNotIndex{\input} +% \DoNotIndex{\jobname,\kern,\leavevmode,\let,\leftmark} +% \DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright} +% \DoNotIndex{\month,\newcommand,\newcounter,\newenvironment} +% \DoNotIndex{\NeedsTeXFormat,\newdimen} +% \DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\null,\number} +% \DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\p@} +% \DoNotIndex{\pagestyle,\par,\paragraph,\paragraphmark,\parfillskip} +% \DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions} +% \DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright} +% \DoNotIndex{\refstepcounter,\relax,\renewcommand} +% \DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily} +% \DoNotIndex{\secdef,\selectfont,\setbox,\setcounter,\setlength} +% \DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space} +% \DoNotIndex{\symbol,\the,\trivlist,\typeout,\tw@,\undefined,\uppercase} +% \DoNotIndex{\usecounter,\usefont,\usepackage,\vfil,\vfill,\viiipt} +% \DoNotIndex{\viipt,\vipt,\vskip,\vspace} +% \DoNotIndex{\wd,\xiipt,\year,\z@} +% \DoNotIndex{\next} +% \DoNotIndex{\@afterheading,\@afterindentfalse,\@ifpackageloaded,\ , +% \appto,\AtBeginDocument,\AtEndPreamble,\baselineskip,\BODY, +% \centering,\contentspage,\CurrentOption,\dots,\endquote,\fill,\filright +% \footnotesize,\Huge,\ifstrempty,\ifstrequal,\itshape,\Large,\large,\LARGE +% \makebox,\MessageBreak,\NewEnviron,\newif,\normalfont,\normalsize, +% \pbox,\preto,\quote,\RequirePackage,\rule,\setstretch, +% \SetupKeyvalOptions,\sffamily,\singlespacing,\textbf,\textit,\textwidth, +% \thecontentslabel,\thecontentspage,\titlecontents,\xspace} +% +% \title{\musuos} +% \author{Tobias Weh\\ +% \normalsize\href{mailto:mail@tobias-weh.de}{\texttt{mail@tobias-weh.de}}\\ +% \normalsize\url{www.tobias-weh.de}} +% \date{\filedate{} --- \fileversion} +% +% \maketitle +% +% \begin{abstract} +% Die Klasse \musuos ist als Vorlage für Hausarbeiten am Institut für Musik +% und Musikwissenschaften der Universität Osnabrück gedacht. Sie richtet sich +% nach den Vorgaben von apl. Prof. Dr. phil. Stefan Hahnheide. Neben der Klasse +% ist auch ein \pkg{biblatex}-Stil \pkg{musuos} verfügbar. +% +% Da \musuos auf der Klasse \pkg{scrartcl} aufbaut, wird dringend empfohlen +% aus die relevanten Abschnitte der +% \href{ftp://ftp.dante.de/pub/tex/macros/latex/contrib/koma-script/scrguide.pdf} +% {\KOMAScript{}-Dokumentation} zu lesen. +% \end{abstract} +% +% \tableofcontents +% +% \section{Einleitung} +% \subsection{Installation} +% Um die Klassendatei (|.cls|) zu erzeugen navigiert man im Terminal in das +% Verzeichnis, in dem die Datei |musuos.ist| liegt und ruft dann den Befehl +% +% \smallskip +% |latex musuos.ins| +% +% \smallskip\noindent% +% auf. Die so erzeugte Datei muss nun an einen Ort verschoben werden, an dem +% \LaTeX{} sie finden kann (bspw. \texttt{\$TEXMFHOME/tex/latex/musuos/}). +% +% Um die Dokumentation zu erzeugen ruft man +% +% \smallskip +% |pdflatex musuos.dtx| +% +% |pdflatex musuos.dtx| +% +% |makeindex -s gglo.ist -o musuos.gls musuos.glo| +% +% |makeindex -s gind.ist -o musuos.ind musuos.idx| +% +% |pdflatex musuos.dtx| +% +% |pdflatex musuos.dtx| +% +% \smallskip\noindent% +% auf. Die mitgelieferte Datei |gind.ist| ist eine Anpassung für +% deutschsprachige Dokumentationen. +% +% \subsection{Verwendung} +% Die Klasse wird ganz normal mit |\documentclass{musuos}| aufgerufen und ist +% derzeit nur zur Verwendung mit \LaTeXe{} gedacht. Da die Klasse auf der +% \KOMAScript{}-Klasse \pkg{scrartcl} beruht, stehen auch alle Möglichkeiten +% aus \KOMAScript{} zu Verfügung. Daher werden in dieser Dokumentation im +% Wesentlichen nur die zusätzlichen Funktionen von \musuos erläutert. +% +% \subsubsection*{Klassenoptionen} +% Es werden alle Klassenoptionen unterstützt, die auch den \KOMAScript{}-Klassen +% bekannt sind. Die Klasse stellt aber noch weitere Optionen zur Verfügung: +% \begin{itemize} +% \item \Opt{blockquote} für Einstellung der Anführungszeichen bei abgesetzten +% Zitaten, siehe Abschnitt~\ref{zit}. +% \item \Opt{manyfnotes} bei Vorkommen dreistelliger Fußnotenziffern, +% siehe Abschnitt~\ref{fnote}. +% \item \Opt{poorlayout} zum Umschalten des Layouts, siehe Abschnitt~\ref{layout}. +% \item \Opt{qmarks} zum Umschalten der Anführungszeichen, siehe Abschnitt~\ref{zit}. +% \end{itemize} +% +% \subsubsection*{Beispiel} +% Ein (etwas mehr als) minimales Dokument zur Verwendung der Klasse. +% +% \smallskip +% |\documentclass[ngerman]{musuos}| +% +% \medskip +% |\usepackage[latin1]{inputenc}| +% +% |\usepackage[T1]{fontenc}| +% +% |\usepackage{babel}| +% +% \meta{ggf. weitere Pakete, Makrodefinitionen usw.} +% +% \medskip +% |\begin{document}| +% +% \rule{\parindent}{0pt}\meta{Inhalt} +% +% |\end{document}| +% +% \section{Layout}\label{layout}% +% Die Klasse kennt zwei verschiedene Layouts. Das Voreingestellte bietet breite +% Ränder für Korrekturen, die außerdem für eine angenehme Zeilenlänge sorgen und +% so ein auseinanderreißen durch eineinhalbzeiligen Satz unnötig machen. +% \begin{itemize} +% \item Rand links 3\,cm, rechts 5\,cm (Platz für Korrekturen), oben 3,25\,cm +% und unten 5,5\,cm. +% \item Schriftart ist die freie Linux Libertine% +% \footnote{Siehe \url{http://www.linuxlibertine.org/} +%(16.8.11)} +% in 12\,pt für den Fließtext und die dazugehörige endstrichlose (|\textsf|, +% |\sffamily|) Biolinum für Überschriften u.\,ä. +% \item Einfacher Zeilenabstand. +% \end{itemize} +% +% Mit der Option \Opt{poorlayout} kann auf das deutlich schlechtere, unitypische +% Layout umgeschaltet werden +% \begin{itemize} +% \item Rand links 2\,cm und rechts 3\,cm, oben und unten je 3\,cm. +% \item Schriftart ist die Times New Roman +% in 12\,pt für den Fließtext und die endstrichlose (|\textsf|, |\sffamily|) +% Helvetica für Überschriften u.\,ä. +% \item Eineinhalbfacher Zeilenabstand, um die überlangen Zeilen zu kompensieren, die +% aufgrund der schmalen Ränder und der sehr schmal laufenden (weil eigentlich für +% schmale Zeitungsspalten gedachte) Times New Roman entstehen. +% \end{itemize} +% +% Blocksatz und Silbentrennung sind in \LaTeX{} bei Verwendung von \pkg{babel} +% grundsätzlich aktiviert. Absatzanfänge werden durch einen Einzug markiert. +% +% \section{Titelseite} +% Mit |\maketitle| wird wie gewohnt die Titelseite ausgegeben, nachdem verschiedene +% Angaben (|\author|, |\title|, etc.) dafür gemacht wurden. Die möglichen Angaben +% werden durch \musuos wie folgt ergänzt: +% % +% \begin{itemize} +% \item \DM{\city}\DM{\street}\DM{\email}\DM{\phone}|\street|\marg{Straße +% und Nummer} und |\city|\marg{PLZ und Ort}, um die eigene Adresse anzugeben +% sowie |\phone|\marg{Telefonnummer} und |\email|\marg{E-Mail} für weitere Kontaktdaten. +% \item \DM{\lecturer}\DM{\seminar}\DM{\term}\DM{\uni} |\uni|\marg{Universität}, +% |\term|\marg{Semester} |\seminar|\marg{Veranstaltungstitel} und +% |\lecturer|\marg{Dozent} für Angaben zur Veranstaltung, in der die +% Hausarbeit geschrieben wird. +% \item Für Angaben zum Studiengang die Makros \DM{\study}\DM{\sterm} +% |\study|\marg{Studiengang} und |\sterm|\marg{Fachsemester} +% \item \DM{\examiner}|\examiner|\marg{Bezeichnung}\marg{Prüfer} für +% die Angabe eines Prüfkomitees (Mehrere Prüfer einfach durch |\\| +% trennen). +% \end{itemize} +% % +% Zusammen mit den von \KOMAScript{} bereitgestellten Variablen Autor +%(|\author|), +% Titel (|\title|) ggf. mit Untertitel (|\subtitle|), Datum (|\date|) sowie eventuell +% Art der Arbeit (Hausarbeit, Dossier, \dots; |\subject|) sind damit alle vorgesehenen +% Angaben abgedeckt. Auf die Verwendung der weiteren Varaiblen aus \KOMAScript{} sollte +% man verzichten, da diese eventuell mit anderen Kollidieren! +% +% Darüber hinaus kann mit dem Befehl |\makeshorttitle| ein Seitenkopf +% gesetzt werden, der nur Titel, Untertitel, Autor und Datum enthält. +% +% \section{Inhaltsverzeichnis und Gliederung} +% Das Inhaltsverzeichnis wird mit +% \DM{\tableofcontents}|\tableofcontents| ausgegeben. Das +% Inhaltsverzeichnis nimmt per Voreinstellung nur Einträge bis zur +% dritten Ebene (|\subsubsection|) auf, das sollte bei einer sinnvoll +% gegliederten Arbeit aber vollkommen ausreichend sein \dots +% +% Zur Gliederung der Arbeit stehen die Befehle von \DM{\section}|\section| bis |\subparagraph| sowie +% |\minisec| zur Verfügung. Die Gliederungspunkte werden automatisch nummeriert und +% formatiert. +% +% Ein Anhang kann bei Bedarf mit \DM{\appendix}|\appendix| eingeleitet werden. +% Die höchste Gliederungsebene wird dann alphabetisch nummeriert. +% +% \section{Fußnoten}\label{fnote}% +% Fußnoten werden mit \DM{\footnote}|\footnote|\marg{Fußnotentext} +%gesetzt. Die Standardformatierungen funktioniert gut für Fußnoten bis +% 99. Bei Fußnoten bis 999 empfiehlt sich die Verwendung der Option +% \Opt{manyfnotes} +% +% \section{Aufzählungen} +% Es stehen drei Aufzählungsumgebungen zur Verfügung, in denen einzelne Einträge +% jeweils mit |\item| eingeleitet werden. Die Umgebungen \DescribeEnv{enumerate} +% |enumerate| für nummerierte und \DescribeEnv{itemize}|itemize| für nummerierte +% Listen sowie \DescribeEnv{description} für erklärende oder beschreibende Listen, +% dabei wird das zu erklärende Wort als optionales Argument von |\item|\oarg{Wort} +% angegeben. +% +% \section{Abbildungen und Tabellen} +% Abbildungen und Tabellen sollten mit den Gleitumgebungen \DescribeEnv{figure}|figure| +% und \DescribeEnv{table}|table| gesetzt werden. Eine Beschriftung kann man mit +% \DM{\caption}|\caption|\marg{Beschreibung} hinzufügen. Für alles weitere sei auf die +% gängige Einsteigerliteratur verwiesen. +% +% \section{Zitate}\label{zit}% +% Für Zitate im Fließtext kann der Befehl \DM{\enquote}|\enquote|\marg{Text} verwendet werden, +% der sein Argument automatisch mit Anführungszeichen umschließt. Für längere, abgesetzte +% Zitate kann die Umgebung \DescribeEnv{quote}|quote| verwendet werden, +% +% \smallskip +% |\begin{quote}|\oarg{Quelle} +% +% \rule{\parindent}{0pt}\meta{Text} +% +% |\end{quote}| +% +% \smallskip\noindent% +% wobei der Inhalt von \meta{Quelle} ohne Leerzeichen% +% \footnote{Wer ein Leerzeichen wünscht kann dieses einfach zu beginn +%des Arguments mit eingeben \texttt{[\textvisiblespace Quelle]}} +% nach dem schließenden Anführungszeichen ausgeben wird. +% Mit der Option \Opt{blockqoute}|=marks|/|nomarks| kann festgelegt werden, ob die abgesetzten +% Zitate mit oder ohne Anführungszeichen gesetzt werden. Beide Zitatbefehle können verschachtelt +% werden und wählen dann automatisch einfache Anführungszeichen für die innere Zitatebene. +% +% Um die Anführungszeichen zu setzten, wird das Paket \pkg{csquotes} verwendet. +% Die Art der Anführungszeichen kann mit der Klassenoption \Opt{qmarks}|=|\meta{Sprache} +% angegeben, dabei kann \meta{Sprache} die Werte |german|, |gfrench|, +% |french| und |english| annehmen; Voreinstellung ist |german|. Den vollen Umfang von +% \pkg{csquotes} kann man einfach nutzen, indem man das Paket mit entsprechenden Optionen +% manuell lädt. +% +% Auslassungszeichen und \emph{wirklich-so-Stellen} können mit den Befehlen \DM{\elp}|\elp| +% (wird zu [\kern1.5pt\dots]) und \DM{\sic}|\sic| (wird zu [sic]) gesetzt werden. +% +% Zur Erstellung eines \textbf{Literaturverzeichnis} und für Quellenangaben im Text wird die Verwendung +% von Bib\TeX{} zusammen mit dem Paket \pkg{biblatex} und dem passenden Stil \pkg{musuos} +% empfohlen. +% +% \section{Anmerkungen} +% \begin{description} +% \item [Abkürzungen] sollten immer mit einem schmalen Leerzeichen |\,| zwischen den +% Teilen gesetzt werden, z.\,B. |z.\,B.| statt |z.B.| (z.B.) oder |z. B.| (z. B.) +% bei der letzten Fassung kann es sogar zu einem Umbruch zwischen z. und B. kommen. +% Steht die Abkürzung am Ende eines Satzes entfällt der Schlusspunkt und der letzte +% Punkt der Abkürzung erhält eine Doppelfunktion. Abkürzungen am Satzanfang sollte +% man gänzlich vermeiden. +% \item [Auslassungspunkte] werden mit dem Befehl |\dots| gesetzt. Ersetzen sie ganze +% Satzteile, müssen sie mit Leerzeichen (\verb*|Wie man etwa \dots|) gesetzt werden. +% Am Satzende entfällt ein zusätzlicher Schlusspunkt, Frage- und Ausrufezeichen nicht. +% Nur wenn die Punkte die Auslassung eines Wortteils kennzeichnen (|Sch\dots|) werden +% sie ohne Leerzeichen geschrieben. +% \item [Gedankenstriche, Bis-Striche, Bindestriche] muss man unterscheiden! Zum +% Verbinden einzelner Wörter setzt man einen Bindestrich (|Master-Arbeit|), +% in vielen Fällen kann aber auch eine Zusammenschreibung dem Verbinden mit Strich +% vorgezogen werden.% +% \footnote{\raggedright Siehe dazu +% \url{http://www.belleslettres.eu/artikel/schreibung-durchgekoppelte-wortzusammensetzungen.php} +% (16.8.11).} +% Den längeren Strich (|--|) setzt man mit Leerzeichen als Gedanken strich +% (\verb*|Text -- Einschub -- mehr Text|) und als Bis-Strich ohne Leerzeichen +% (|1967--2003|). +% \item [Geschützte Leerzeichen] werden mit |~| erzeugt und sollten z.\,B. bei Seitenzahlen +% verwendet werden: |siehe S.~3| oder |vergleiche Abbildung~3.5|% +% \footnote{Sinvollerweise sollte man die Zahlen nicht manuell schreiben sondern +% \LaTeX s Verweismechanismus (in Kombination mit \pkg{varioref}) verwenden.} +% \item [Formatierung] sollte einheitlich sein. Um das zu erleichtern ist es sinnvoll, +% sich eigene Befehle zu erstellen. So könnte man sich zum Beispiel einen Befehl +% definieren um Werktitel zu setzten: +% +% \smallskip +% \rule{1em}{0pt}|\newcommand{\werk}[1]{\textit{#1}}| (in der Präambel) +% +% \smallskip\noindent% +% Verwendet man im Text jetzt immer |\werk|\marg{Titel} werden alle Titel kursiv +% gesetzt können aber später einheitlich umformatiert werden indem man die +% Definition von |\werk| ändert. +% \item [Unterstreichungen unterlassen!] Hervorhebungen können mit +%|\emph|\marg{Text} +% gesetzt werden. Der Befehl kann sogar verschachtelt werden. +% \end{description} +% +% \StopEventually{\PrintChanges\PrintIndex} +% +% \section{Implementation} +% +% \subsection{Basisklasse laden und Optionen definieren} +% Als erstes werden ein paar Basispakete geladen und mit +% |\SetupKeyvalOptions| die Grundlagen für Klassenoptionen +% mit werten geschaffen. +% \begin{macrocode} +\RequirePackage{kvoptions} +\SetupKeyvalOptions{ + family=MU, + prefix=MU@ +} +\RequirePackage{environ} +\RequirePackage{etoolbox} +% \end{macrocode} +% Dann werden die Optionen definiert. Zunächst zwei Optionen, +% die einen Textstring verarbeiten können, dieser wird dann +% in |\MU@blockquote| bzw. |\MU@qmarks| gespeichert. +% \begin{macrocode} +\DeclareStringOption[withqmarks]{blockquote}[withqmarks] +\DeclareStringOption[german]{qmarks}[german] +% \end{macrocode} +% Dann noch einen if-Schalter und eine einfache Option für das Layout +% \begin{macrocode} +\newif\if@poorlayout +\DeclareOption{poorlayout}{\@poorlayouttrue} +% \end{macrocode} +% sowie für die Option bei vielen Fußnoten +% \begin{macrocode} +\newif\if@manyfnotes +\DeclareOption{manyfnotes}{\@manyfnotestrue} +% \end{macrocode} +% Als letztes wird noch eine Dummyoption angelegt, die alle dieser +% Klasse nicht bekannten Optionen an die Basisklasse \pkg{scrartcl} +% weiterleitet. +% \begin{macrocode} +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{scrartcl}} +% \end{macrocode} +% Außerdem legen wir noch zwei Voreinstellungen für \pkg{scrartcl} +% fest +% \begin{macrocode} +\PassOptionsToClass{fontsize=12pt,titlepage=true}{scrartcl} +% \end{macrocode} +% und können dann die Optionen verarbeiten. +% \begin{macrocode} +\ProcessKeyvalOptions*\relax +\ProcessOptions\relax +% \end{macrocode} +% +% Es folgt das Laden der Basisklasse. +% \begin{macrocode} +\LoadClass{scrartcl} +% \end{macrocode} +% +% Als letztes wird noch ein Schalter (|\if@bqqmakrs|) für die Wahl +% ob Blockzitate mit oder ohne Anführungszeichen gesetzt werden definiert +% und eine Probe auf falsche Werte eingeführt. +% \begin{macrocode} +\newif\if@bqqmarks +\expandafter\ifstrequal\expandafter{\MU@blockquote}{withqmarks}{ + \@bqqmarkstrue +}{ + \expandafter\ifstrequal\expandafter{\MU@blockquote}{withoutqmarks}{ + \@bqqmarksfalse + }{ + \ClassError{musuos}{Unkown value for option 'blockquote'} + {This option needs either 'qwithqmarks' or 'withoutmarks'} + } +} +% \end{macrocode} +% +% \subsection{Layout} +% Nachdem weiter oben bereits der Schalter für |poorlayout| definiert +% wurde, wird das Layout jetzt ausgewählt. Dazu laden wir das Paket +% \pkg{geometry} und legen abhängig vom Schalter verschiedene Seitenränder +% fest. +% \begin{macrocode} +\RequirePackage{geometry} +\if@poorlayout + \geometry{left=2cm, right=3cm, top=3cm, bottom=3cm} +% \end{macrocode} +% Außerdem werden die Schriftarten Times New Roman und Helvetica geladen +% \begin{macrocode} + \usepackage{txfonts} + \usepackage[scaled=0.9]{helvet} +% \end{macrocode} +% sowie das Paket \pkg{setspace} um eineinhalbzeiligen Satz einzustellen. +% \begin{macrocode} + \usepackage{setspace} + \setstretch{1.45} +% \end{macrocode} +% Der Faktor 1,45 entspricht dem was Word unter 1,5 versteht besser als 1,5. +% Es wird eine Warnung ausgegeben, ob man wirklich das schlechte Layout will. +% \begin{macrocode} + \ClassWarningNoLine{musuos}{Are you shure that you would + like to use the poor layout?} +% \end{macrocode} +% +% Für das schönere Layout stellen werde größere Ränder eingestellt +% \begin{macrocode} +\else + \geometry{left=3cm, right=5cm, top=3.25cm, bottom=5.5cm} +% \end{macrocode} +% und die Linux Libertine sowie die Biolinum geladen. +% \begin{macrocode} + \usepackage{libertine} +\fi +% \end{macrocode} +% +% Abschließend werden die Parameter für den Satz noch etwas großzügiger +% eingestellt +% \begin{macrocode} +\tolerance 1414 +\hbadness 1414 +\emergencystretch 1.5em +\hfuzz 0.3pt +\widowpenalty=10000 +\clubpenalty=5000 +\vfuzz +\hfuzz +\raggedbottom +% \end{macrocode} +% +% \subsection{Titelseite} +% \begin{macro}{\city} +% \begin{macro}{\street} +% \begin{macro}{\email} +% \begin{macro}{\phone} +% \begin{macro}{\lecturer} +% \begin{macro}{\seminar} +% \begin{macro}{\term} +% \begin{macro}{\uni} +% \begin{macro}{\study} +% \begin{macro}{\sterm} +% \begin{macro}{\examiner} +% Als nächstes werden alle nötigen Befehle für die Titelseite +% definiert. Dazu werden zuerst die Speicherorte für alle Angaben +% geschaffen +% \begin{macrocode} +\newcommand{\@city}{} +\newcommand{\@street}{} +\newcommand{\@email}{} +\newcommand{\@phone}{} +\newcommand{\@lecturer}{} +\newcommand{\@seminar}{} +\newcommand{\@term}{} +\newcommand{\@uni}{} +\newcommand{\@study}{} +\newcommand{\@sterm}{} +\newcommand{\@examiner}{} +\newcommand{\@examinerlabel}{} +% \end{macrocode} +% um dann die Befehle zu erstellen, mit denen die Varaiblen +% gesetzt werden. +% \begin{macrocode} +\newcommand*{\city}[1]{\renewcommand{\@city}{#1}} +\newcommand*{\street}[1]{\renewcommand{\@street}{#1}} +\newcommand*{\email}[1]{\renewcommand{\@email}{#1}} +\newcommand*{\phone}[1]{\renewcommand{\@phone}{#1}} +\newcommand*{\lecturer}[1]{\renewcommand{\@lecturer}{#1}} +\newcommand*{\seminar}[1]{\renewcommand{\@seminar}{#1}} +\newcommand*{\term}[1]{\renewcommand{\@term}{#1}} +\newcommand*{\uni}[1]{\renewcommand{\@uni}{#1}} +\newcommand*{\study}[1]{\renewcommand{\@study}{#1}} +\newcommand*{\sterm}[1]{\renewcommand{\@sterm}{#1}} +% \end{macrocode} +% Die Variable für die Prüfer fordert eine spezielle Behandlung, +% weil der Abstand zwischen Bezeichnung und Name nur ausgegeben +% werden darf, wenn der Bezeichner nicht leer ist. Andernfalls +% wären die Namen nicht korrekt zentriert. +% \begin{macrocode} +\newcommand*{\examiner}[2]{% + \ifx{#1}\@empty\else + \renewcommand{\@examinerlabel}{#1\hspace{1em}} + \fi + \renewcommand{\@examiner}{#2}% +} +% \end{macrocode} +% \end{macro}\end{macro}\end{macro}\end{macro}\end{macro}\end{macro} +% \end{macro}\end{macro}\end{macro}\end{macro}\end{macro} +% Anschließend kann der Befehl zum drucken der Titelseite definiert +% werden. Dabei muss unter Verwendung des Schalters |\if@poorlayout| +% Rücksicht auf kleinere Unterschiede der Layouts genommen werden. +% Auf der Titelseite werden nacheinander alle Variablen ausgeben. +% Außerdem wird auf ein symmetrisches Seitenlayout umgeschaltet +% \begin{macrocode} +\RequirePackage{pbox} +% \end{macrocode} +% Damit das Trennzeichen zwischen Dozent und Semester auch +% wirklich nur dann ausgegeben, wenn beide einen Wert haben, muss +% ein zusätzlicher Test eingefügt werden, der später mit |\if@letesep| +% ausgewertet werden kann. +% \begin{macrocode} +\newif\if@letesep\@leteseptrue +\AtBeginDocument{ + \expandafter\ifstrempty\expandafter{\@lecturer}{\@letesepfalse}{} + \expandafter\ifstrempty\expandafter{\@term}{\@letesepfalse}{} +} +% \end{macrocode} +% \begin{macro}{\maketitle} +% Jetzt kann der |\maketitle|-Befhel definiert werden. +% \begin{macrocode} +\renewcommand{\maketitle}{% + \newgeometry{left=4cm,right=4cm,top=4cm,bottom=4cm}% + \begin{titlepage} + \if@poorlayout\singlespacing\fi + \centering + \textbf{\@uni}\par + \@seminar\par + \@lecturer\ + \if@letesep -- \fi + \@term\par + \vspace{4.5cm} + \textit{\@subject}\par + \if@poorlayout\vspace{0.35cm}\else\vspace{0.5cm}\fi + \sffamily\Huge\textbf{\@title}\par + \vspace{0.5cm} + \large\@subtitle\par + \vspace{3cm} + \normalfont\normalsize + \@examinerlabel\hspace{0.75em}% + \pbox[t]{\textwidth}{\@examiner}\par + \vspace{\fill} + \raggedright + \textbf{\@author}\par + \@study\hfill\@street\par + \@sterm\hfill\@city\par + \@email\hfill\@phone\par + \vspace{1\baselineskip} + \@date + \end{titlepage} +% \end{macrocode} +% Am Ende der Titelseite wird das vorgegebene Layout wieder hergestellt +% und der Einzug des ersten Absatzes unterdrückt. +% \begin{macrocode} + \restoregeometry + \@afterindentfalse + \@afterheading% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\makeshorttitle} +% Zusätzlich wird ein Befehl für einen kürzeren Titelkopf bereitgestellt +% \begin{macrocode} +\newcommand{\makeshorttitle}{ + \if@poorlayout\singlespacing\fi + \vspace*{1cm} + {\centering + \@author\par + \vspace{0.35cm} + \LARGE\sffamily\bfseries\@title\par + \vspace{0.2cm} + \normalsize\@subtitle\par + \vspace{0.6cm} + \normalfont + \@date\par + } + \vspace{1cm} + \if@poorlayout\setstretch{1.45}\fi + \@afterindentfalse + \@afterheading% +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{titlepage} +% Damit die Klasse auf die |titelpage|-Option reagieren kann, wird bei +% ausgeschalteter Titelseite der befehl |\maketitle| auf +% |\makeshorttitle| umgelenkt. +% \begin{macrocode} +\if@titlepage\else + \let\maketitle\makeshorttitle +\fi +% \end{macrocode} +% \end{macro} +% +% \subsection{Inhaltsverzeichnis} +% Da die Befehle zur Giederung und für das Inhaltsverzeichnis bereits +% von der Basisklasse bereitgestellt werden, wird hier nur das Layout +% des Inhaltsverzeichnis angepasst. Dazu wird das Paket \pkg{titletoc} +% verwendet. +% \begin{macro}{\tableofcontents} +% \begin{macrocode} +\RequirePackage{titletoc} +\titlecontents{section} + [0mm] + {\addvspace{5mm}} + {\sffamily\bfseries\large + \makebox[7mm][l]{\thecontentslabel}} + {\sffamily\bfseries} + {\hfill\sffamily\bfseries\large\contentspage} +\titlecontents{subsection} + [7mm] + {\addvspace{1mm}} + {\makebox[7mm][l]{\thecontentslabel}} + {} + {,~\thecontentspage} +\titlecontents*{subsubsection} + [14mm] + {\filright} + {\itshape} + {\itshape} + {\itshape,~\thecontentspage} + [~$\cdot$~] +% \end{macrocode} +% Außerdem wird die Tiefe des Inhaltsverzeichnis auf drei Ebenen +% beschränkt +% \begin{macrocode} +\setcounter{tocdepth}{3} +% \end{macrocode} +% und für das schlechte Layout muss das Inhaltsverzeichnis noch auf +% einfachen Zeilenabstand zurückgeschaltet werden. +% \begin{macrocode} +\if@poorlayout + \preto\tableofcontents{\singlespacing} + \appto\tableofcontents{\setstretch{1.45}} +\fi +% \end{macrocode} +% \end{macro} +% \subsection{Fußnoten} +% \begin{macro}{manyfnotes} +% Die Fußnoten werden nicht hochgestellt gesetzt, sondern als normal +% hohe Ziffern. Außerdem muss die Option |manyfnotes| hier ausgewertet +% werden. +% \begin{macrocode} +\if@manyfnotes + \deffootnote[1.75em]{1.75em}{1em}{ + \makebox[1.75em][l]{\thefootnotemark} + } +\else + \deffootnote[1.5em]{1.5em}{1em}{\makebox[1.5em][l]{\thefootnotemark}} +\fi +% \end{macrocode} +% \end{macro} +% \subsection{Aufzählungen} +% \begin{environment}{itemize} +% \begin{environment}{enumerate} +% Die Aufzählungsumgebungen werden bereits von \pkg{scrartcl} +% bereitgestellt, daher werden an dieser Stelle nur die +% Aufzählungszeichen angepasst. +% \begin{macrocode} +\renewcommand{\labelitemi}{\rule[0.35ex]{0.5ex}{0.5ex}} +\renewcommand{\labelitemii}{\rule[0.35ex]{0.5ex}{0.5ex}} +\renewcommand{\labelitemiii}{\rule[0.35ex]{0.5ex}{0.5ex}} +\renewcommand{\labelitemiv}{\rule[0.35ex]{0.5ex}{0.5ex}} +\renewcommand{\labelenumi}{\theenumi)} +\renewcommand{\labelenumii}{\theenumii)} +\renewcommand{\labelenumiii}{\theenumiii)} +\renewcommand{\labelenumiv}{\theenumiv)} +% \end{macrocode} +% \end{environment}\end{environment} +% \subsection{Zitate} +% Zum Formatieren der Zitate wird das Paket \pkg{csquotes} verwendet. +% Damit der Nutzer dennoch die Möglichkeit hat das Paket mit eigenen +% Optionen zu laden, muss am Ende der Präambel geprüft wurden, ob er das +% auch getan hat. +% \begin{macrocode} +\AtEndPreamble{ +\@ifpackageloaded{csquotes}{ +% \end{macrocode} +% Wenn ja wird eine Warnung ausgegeben +% \begin{macrocode} + \ClassWarning{musuos}{csquotes.sty loaded by user.\MessageBreak + Option 'qmarks' will be ignored.} +}{ +% \end{macrocode} +% \begin{macro}{qmarks} +% und wenn \pkg{csquotes} noch nicht geladen ist, wird es jetzt +% geladen und die Option |qmarks| wird ausgewertet. +% \begin{macrocode} +\RequirePackage{csquotes} +\expandafter\ifstrequal\expandafter{\MU@qmarks}{german}{ + \ExecuteQuoteOptions{style=german,german=quotes} +}{ + \expandafter\ifstrequal\expandafter{\MU@qmarks}{gfrench}{ + \ExecuteQuoteOptions{style=german,german=guillemets} + }{ + \expandafter\ifstrequal\expandafter{\MU@qmarks}{english}{ + \ExecuteQuoteOptions{style=english,english=american} + }{ + \expandafter\ifstrequal\expandafter{\MU@qmarks}{french}{ + \ExecuteQuoteOptions{style=french,french=guillemets} + }{ + \ClassError{musuos}{Unkown value for option 'qmarks'}{ + Use 'german', 'gfrench', 'french', 'english'\MessageBreak + or load csquotes.sty by yourself. + } + } + } + } +} +}} +% \end{macrocode} +% \end{macro} +% \begin{environment}{quote} +% Danach wird die Umgebung |quote| die alte Definition (aus +% \pkg{scrartl.cls}) gelöscht +% \begin{macrocode} +\let\quote\relax +\let\endquote\relax +% \end{macrocode} +% und mit einem Befehl aus dem \pkg{environ}-Paket die neue gemacht. +% Dabei muss wieder Rücksicht auf |poorlayout| genommen werden. +% \begin{macrocode} +\NewEnviron{quote}[1][]{% + \par\vspace{0.5\baselineskip}% + \if@poorlayout\setstretch{1.1}\fi% + \begin{addmargin}{2em}% + \footnotesize% + \if@bqqmarks\enquote{\BODY}\else\BODY\fi% + #1% + \end{addmargin}% + \vspace{0.5\baselineskip} + \if@poorlayout\setstretch{1.45}\fi% +} +% \end{macrocode} +% \end{environment} +% \begin{macro}{\elp} +% \begin{macro}{\sic} +% Abschließend werden noch die Abkürzungen |\elp| und |\sic| erstellt +% \begin{macrocode} +\newcommand{\elp}{[\kern0.5pt\dots\kern-1pt]\xspace} +\newcommand{\sic}{[sic]\xspace} +% \end{macrocode} +% \end{macro}\end{macro} +% +% \Finale +\endinput + \ No newline at end of file -- cgit v1.2.3