-
-
Save jens-ox/d1a1fec23b6050e7f736287a2eba681e to your computer and use it in GitHub Desktop.
Class file that I use for lecture notes
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| % Copyright (c) 2010 Michael Ummels <michael@ummels.de> | |
| % | |
| % Permission to use, copy, modify, and/or distribute this software for any | |
| % purpose with or without fee is hereby granted, provided that the above | |
| % copyright notice and this permission notice appear in all copies. | |
| % | |
| % THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | |
| % WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | |
| % MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | |
| % ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | |
| % WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | |
| % ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | |
| % OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | |
| \ProvidesClass{mydiss}[2016/07/26 v1.6 mydiss class (Michael Ummels)] | |
| \NeedsTeXFormat{LaTeX2e}[1996/06/01] | |
| % Options | |
| \newif\if@iso | |
| \@isofalse | |
| \newif\if@crop | |
| \@cropfalse | |
| \newif\if@fedra | |
| \@fedrafalse | |
| \DeclareOption{isopaper}{\@isotrue} | |
| \DeclareOption{crop}{\@croptrue} | |
| \DeclareOption{fedra}{\@fedratrue} | |
| \DeclareOption*{\PassOptionsToClass{\CurrentOption}{extbook}} | |
| \ProcessOptions\relax | |
| \LoadClass[9pt,fleqn]{extbook} | |
| % Packages | |
| \RequirePackage[ngerman]{babel} | |
| \RequirePackage{geometry} | |
| \RequirePackage{xcolor} | |
| \RequirePackage{etoolbox} | |
| \if@iso | |
| \RequirePackage[a4,cam,center]{crop} | |
| \else\if@crop | |
| \RequirePackage[cam,noinfo,width=176mm,height=254mm,center]{crop} | |
| \fi\fi | |
| \RequirePackage[clearempty,pagestyles,newlinetospace]{titlesec} | |
| \RequirePackage{titletoc} | |
| \RequirePackage[fleqn]{mathtools} | |
| \RequirePackage{enumitem} | |
| \RequirePackage{textcase} | |
| \RequirePackage{setspace} | |
| \RequirePackage{xspace} | |
| \RequirePackage{multirow} | |
| \RequirePackage{booktabs} | |
| \RequirePackage[utf8x]{inputenc} | |
| \RequirePackage[T1]{fontenc} | |
| \RequirePackage{crimson} | |
| \RequirePackage{amsmath} | |
| \RequirePackage{amsfonts} | |
| \RequirePackage{amssymb} | |
| \RequirePackage{fdsymbol} | |
| \RequirePackage[eqno]{tabfigures} | |
| \RequirePackage{natbib} | |
| \RequirePackage{index} | |
| \RequirePackage{tikz} | |
| \RequirePackage[pdfstartview={FitH},pdfborder={0 0 0},hyperindex=false]{hyperref} | |
| \hypersetup{ | |
| colorlinks, | |
| linkcolor={red!70!black}, | |
| citecolor={blue!50!black}, | |
| urlcolor={blue!80!black} | |
| } | |
| \RequirePackage[compatibility=true]{caption} | |
| \RequirePackage{floatrow} | |
| \RequirePackage[hyperref,amsmath]{ntheorem} | |
| \RequirePackage[capitalise]{cleveref} | |
| % Support for discretionary breakpoints and suppression of italic correction | |
| \newcommand{\dbr}{\discretionary{}{}{}} | |
| \newcommand{\nocorr}{\kern0pt} | |
| % Glyph-to-Unicode Translation for searching in PDFs (needs PdfTex >=1.4) | |
| \InputIfFileExists{glyphtounicode}{\pdfgentounicode=1}{} | |
| % Ornaments | |
| \if@fedra | |
| \newcommand{\mydiss@diamond}{\ding{104}} | |
| \else | |
| \newcommand{\mydiss@diamond}{\textbullet} | |
| \fi | |
| % Page style | |
| % Geometry settings | |
| \geometry{ | |
| paperwidth=156mm, | |
| paperheight=234mm, | |
| twoside, | |
| left=20.8mm, | |
| top=20.2mm, | |
| marginpar=23mm, | |
| headsep=1pc, | |
| marginparsep=1em, | |
| footskip=9ex | |
| } | |
| \geometry{ | |
| textwidth = 104mm, | |
| textheight = 177mm, | |
| } | |
| % Header/Footer | |
| \newpagestyle{main}{ | |
| \sethead[\small\itshape\ifthechapter{\thechapter\enspace}{}\chaptertitle][][]% | |
| {}{}{\small\itshape\ifthesection{\thesection\enspace}{}\sectiontitle} | |
| \setfoot*{}{}{\thepage} | |
| } | |
| \newpagestyle{nosub}{ | |
| \sethead[\small\itshape\ifthechapter{\thechapter\enspace}{}\chaptertitle][][]% | |
| {}{}{\small\itshape\ifthechapter{\thechapter\enspace}{}\chaptertitle} | |
| \setfoot*{}{}{\thepage} | |
| } | |
| \renewpagestyle{plain}{ | |
| \setfoot*{}{}{\thepage} | |
| } | |
| \pagestyle{main} | |
| % Line spread | |
| \newcommand{\diss@spread}{1.25} | |
| \setstretch{\diss@spread} | |
| %\setlength{\parskip}{0pt} | |
| % Indentation | |
| \newlength{\diss@indent} | |
| \setlength{\diss@indent}{1.5em} | |
| \setlength{\parindent}{\diss@indent} | |
| \setlength{\mathindent}{\diss@indent} | |
| \renewcommand\@makefntext[1]{\noindent\makebox[\diss@indent][r]{\@makefnmark}% | |
| \setstretch{\diss@spread} #1} | |
| % Penalties | |
| \pretolerance=60 | |
| \tolerance=2000 | |
| \widowpenalty=9999 | |
| \interdisplaylinepenalty=100 | |
| \interfootnotelinepenalty=1000 | |
| \predisplaypenalty=50 | |
| % Title | |
| \renewcommand{\title}[1]{% | |
| \gdef\@title{#1}% | |
| \pdfstringdef{\@pdftitle}{\@title}% | |
| \hypersetup{pdftitle=\@pdftitle}% | |
| } | |
| \renewcommand{\author}[1]{% | |
| \gdef\@author{#1}% | |
| \pdfstringdef{\@pdfauthor}{\@author}% | |
| \hypersetup{pdfauthor=\@pdfauthor}% | |
| } | |
| % Sectioning | |
| \providecommand{\figureversion}[1]{} | |
| \setcounter{secnumdepth}{1} | |
| \newcommand{\periodafter}[1]{#1.} | |
| \titleformat{\section}[hang]{\normalfont\Large\bfseries}{\thesection}{.5em}{} | |
| \titleformat{\subsection}[hang]{\normalfont\large\itshape}{\thesubsection}{.5em}{} | |
| \titleformat{\subsubsection}[runin]{\normalfont\itshape}{\thesubsubsection}% | |
| {.5em}{\periodafter} | |
| \definecolor{chaptergrey}{rgb}{0.7,0.7,0.7} | |
| \titleformat{name=\chapter}[display]% | |
| {\normalfont\hfuzz=\maxdimen}% | |
| {\color{chaptergrey}% | |
| %\ifodd\thepage\raggedleft\else\raggedright\fi% | |
| \raggedleft% | |
| \if@fedra% | |
| \usefont{T1}{\fdrsf@family-LF}{b}{n}% | |
| \else% | |
| \fontseries{bx}% | |
| \fi% | |
| \fontsize{96}{96}\selectfont% | |
| \setlength{\baselineskip}{\z@}% | |
| \edef\@tempa{\chaptertitlename}% | |
| \ifx\@tempa\chaptername\else% | |
| \begingroup% | |
| \if@fedra% | |
| \usefont{T1}{\fdrsf@textfamily}{b}{n}% | |
| \else% | |
| \fontseries{bx}% | |
| \fi% | |
| \fontsize{18}{18}\selectfont% | |
| \setlength{\baselineskip}{\z@}% | |
| \raisebox{25pt}{\chaptertitlename\enspace}% | |
| \endgroup% | |
| \fi% | |
| \thechapter}% | |
| {-1.5pc}% | |
| {%\ifodd\thepage\raggedleft\else\raggedright\fi% | |
| \raggedleft% | |
| \if@fedra% | |
| \usefont{T1}{\fdrsf@textfamily}{b}{n}% | |
| \else% | |
| \fontseries{bx}% | |
| \fi% | |
| \fontsize{24}{24}\selectfont}% | |
| [\addtocontents{loa}{\protect\addvspace{10pt}}] | |
| \titleformat{name=\chapter,numberless}[display]% | |
| {\normalfont\hfuzz=\maxdimen}% | |
| {}% | |
| {-1pc}% | |
| {%\ifodd\thepage\raggedleft\else\raggedright\fi% | |
| \raggedleft% | |
| \if@fedra% | |
| \usefont{T1}{\fdrsf@textfamily}{b}{n}% | |
| \else% | |
| \fontseries{bx}% | |
| \fi% | |
| \fontsize{24}{24}\selectfont} | |
| \titlespacing*{\chapter}{0pt}{*7}{*9} | |
| % Floats | |
| \renewcommand{\arraystretch}{\diss@spread} | |
| \renewcommand{\topfraction}{0.9} | |
| \renewcommand{\textfraction}{0.1} | |
| \setlength{\heavyrulewidth}{0.05em} | |
| \setlength{\lightrulewidth}{0.03em} | |
| \DeclareCaptionFont{spread}{\setstretch{\diss@spread}} | |
| \captionsetup{labelfont=bf,labelsep=period,textformat=period,font={small,spread}} | |
| \DeclareFloatVCode{toprule}{% | |
| \hrule height\heavyrulewidth\vskip 1ex% | |
| } | |
| \DeclareFloatVCode{topprule}{% | |
| \hrule height\heavyrulewidth\vskip 1.5ex% | |
| } | |
| \DeclareFloatVCode{midrule}{% | |
| \vskip 1ex\hrule height\lightrulewidth\vskip 1ex% | |
| } | |
| \DeclareFloatVCode{endrule}{% | |
| \vskip 1ex\hrule height\heavyrulewidth% | |
| } | |
| \captionsetup[ruled]{labelfont=bf,labelsep=period,textformat=period,font=spread} | |
| \DeclareNewFloatType{algorithm}{placement=tbp,name=Algorithm,fileext=loa,within=chapter} | |
| \contentsuse{algorithm}{loa} | |
| \newcommand{\listofalgorithms}{\listof{algorithm}{List of Algorithms}} | |
| \floatsetup[algorithm]{style=ruled,precode=toprule,midcode=midrule,postcode=endrule} | |
| %\floatsetup[figure]{precode=topprule,postcode=endrule} | |
| \floatsetup[table]{capposition=top} | |
| \newcommand{\keyw}[1]{\textbf{#1}} | |
| % Table of Contents | |
| \titlecontents{chapter}[1pc]% | |
| {\addvspace{2ex}\Large\filright}% | |
| {\contentslabel[\figureversion{tab}\thecontentslabel]{1pc}}{\hspace*{-1pc}}% | |
| {\nolinebreak\enskip\nolinebreak\mydiss@diamond\nolinebreak% | |
| \enspace\nolinebreak\thecontentspage}[] | |
| \titlecontents{section}[2.4pc]{\filright}% | |
| {\contentslabel[\figureversion{tab}\thecontentslabel]{1.4pc}}{\hspace*{-1.4pc}}% | |
| {\nolinebreak\enskip\nolinebreak\mydiss@diamond\nolinebreak% | |
| \enspace\nolinebreak\thecontentspage}[] | |
| \setcounter{tocdepth}{1} | |
| % List of Figures etc. | |
| \titlecontents{figure}[1.4pc]{\filright}% | |
| {\contentslabel[\figureversion{tab}\thecontentslabel]{1.4pc}}{\hspace*{-1.4pc}}% | |
| {\nolinebreak\enskip\nolinebreak\mydiss@diamond\nolinebreak% | |
| \enspace\nolinebreak\thecontentspage}[] | |
| \titlecontents{table}[1.4pc]{\filright}% | |
| {\contentslabel[\figureversion{tab}\thecontentslabel]{1.4pc}}{\hspace*{-1.4pc}}% | |
| {\nolinebreak\enskip\nolinebreak\mydiss@diamond\nolinebreak% | |
| \enspace\nolinebreak\thecontentspage}[] | |
| \titlecontents{algorithm}[1.4pc]{\filright}% | |
| {\contentslabel[\figureversion{tab}\thecontentslabel]{1.4pc}}{\hspace*{-1.4pc}}% | |
| {\nolinebreak\enskip\nolinebreak\mydiss@diamond\nolinebreak% | |
| \enspace\nolinebreak\thecontentspage}[] | |
| % References | |
| \crefformat{equation}{#2(#1)#3} | |
| \Crefformat{equation}{Eq.~#2(#1)#3} | |
| \crefrangeformat{equation}{#3(#1)#4--#5(#2)#6} | |
| \Crefrangeformat{equation}{Eqs.~#3(#1)#4--#5(#2)#6} | |
| \crefmultiformat{equation}{#2(#1)#3}{\crefpairconjunction#2(#1)#3}% | |
| {, #2(#1)#3}{\creflastconjunction#2(#1)#3} | |
| \Crefmultiformat{equation}{Eqs.~#2(#1)#3}{\crefpairconjunction#2(#1)#3}% | |
| {, #2(#1)#3}{\creflastconjunction#2(#1)#3} | |
| \crefrangemultiformat{equation}{#3(#1)#4--#5(#2)#6}% | |
| {\crefpairconjunction#3(#1)#4--#5(#2)#6}{, #3(#1)#4--#5(#2)#6}% | |
| {\creflastconjunction#3(#1)#4--#5(#2)#6} | |
| \Crefrangemultiformat{equation}{Eqs.~#3(#1)#4--#5(#2)#6}% | |
| {\crefpairconjunction#3(#1)#4--#5(#2)#6}{, #3(#1)#4--#5(#2)#6}% | |
| {\creflastconjunction#3(#1)#4--#5(#2)#6} | |
| \crefname{algorithm}{Algorithm}{Algorithms} | |
| \crefname{figure}{Figure}{Figures} | |
| % Theorems | |
| % Styles | |
| \newtheoremstyle{definition}% | |
| {\item[\hskip\labelsep\normalfont\bfseries ##1~##2.]}% | |
| {\item[\hskip\labelsep\normalfont\bfseries ##1~##2\normalfont\ (##3).]} | |
| \newtheoremstyle{nonumberdefinition}% | |
| {\item[\hskip\labelsep\normalfont\bfseries ##1.]}% | |
| {\item[\hskip\labelsep\normalfont\bfseries ##1\normalfont\ (##3).]} | |
| \newtheoremstyle{remark}% | |
| {\item[\hskip\labelsep\normalfont\itshape ##1~##2.]}% | |
| {\item[\hskip\labelsep\normalfont\itshape ##1~##2\/\normalfont\ (##3).]} | |
| \newtheoremstyle{nonumberremark}% | |
| {\item[\hskip\labelsep\normalfont\itshape ##1.]}% | |
| {\item[\hskip\labelsep\normalfont\itshape ##1\/\normalfont\ (##3).]} | |
| \newtheoremstyle{smalltheorem} | |
| {\item[\hskip\labelsep\normalfont\itshape\small ##1.]} | |
| {\item[\hskip\labelsep\normalfont\itshape\small ##1\/\normalfont\small\ (##3).]} | |
| {\normalfont\small} | |
| \AtBeginEnvironment{proof}{\small} | |
| % Declarations | |
| \theorembodyfont{\normalfont} | |
| \theoremstyle{definition} | |
| \theorempostskip{1.8em} | |
| \newtheorem{definition}{Definition}[chapter] | |
| \renewtheorem*{definition*}{Definition} | |
| \crefname{definition}{Definition}{Definitionen} | |
| \newtheorem{proposition}[definition]{Proposition} | |
| \renewtheorem*{proposition*}{Proposition} | |
| \crefname{proposition}{Proposition}{Propositionen} | |
| \newtheorem{lemma}[definition]{Lemma} | |
| \renewtheorem*{lemma*}{Lemma} | |
| \crefname{lemma}{Lemma}{Lemmas} | |
| \newtheorem{theorem}[definition]{Satz} | |
| \renewtheorem*{theorem*}{Satz} | |
| \crefname{theorem}{Satz}{Sätze} | |
| \newtheorem{corollary}[definition]{Korollar} | |
| \renewtheorem*{corollary*}{Korollar} | |
| \crefname{corollary}{Korollar}{Korollare} | |
| \newtheorem{example}[definition]{Beispiel} | |
| \renewtheorem*{example*}{Beispiel} | |
| \crefname{example}{Beispiel}{Beispiele} | |
| \newtheorem{problem}[definition]{Aufgabe} | |
| \renewtheorem*{problem*}{Aufgabe} | |
| \crefname{problem}{Aufgabe}{Aufgaben} | |
| \newtheorem{remark}{Bemerkung} | |
| \newtheorem{excourse}{Exkurs} | |
| \newtheorem{addition}{Ergänzung} | |
| \newtheorem{deduction}{Folgerung} | |
| \theoremstyle{nonumberremark} | |
| \newtheorem{claim}{Behauptung} | |
| \theoremstyle{smalltheorem} | |
| \newtheorem{proof}{Beweis} | |
| % QED symbol | |
| \if@fedra | |
| \renewcommand{\qedsymbol}{\ding{108}} | |
| \else | |
| \renewcommand{\qedsymbol}{$\square$} | |
| \fi | |
| \newcommand{\mathqed}{} | |
| \DeclareRobustCommand{\qed}{% | |
| \ifmmode \mathqed | |
| \else | |
| \leavevmode\unskip\penalty9999 \hbox{}\nobreak\hfill | |
| \quad\hbox{\qedsymbol}% | |
| \fi | |
| } | |
| % Lists | |
| \setlist{leftmargin=\diss@indent,labelsep=3pt,topsep=\parsep, | |
| parsep=\parskip,itemsep=\parskip}% | |
| \setenumerate{label={\figureversion{tab}\arabic*.},ref=\arabic*} | |
| %\setenumerate{label={\openbullet{\arabic*}},ref=\arabic*} | |
| \if@fedra | |
| \renewcommand{\labelitemi}{\mydiss@diamond} % Diamond | |
| \fi | |
| \renewcommand{\labelitemii}{--} | |
| \renewcommand{\labelitemiii}{--} | |
| \renewcommand{\labelitemiv}{--} | |
| % Quotes | |
| \renewenvironment{quote}{% | |
| \begin{list}{}{% | |
| \setlength\leftmargin{\diss@indent}% | |
| \setlength\rightmargin{\diss@indent}% | |
| \setlength\parsep{\parskip}% | |
| \setlength\itemsep{0pt}% | |
| }% | |
| \item% | |
| }{\end{list}} | |
| \renewenvironment{quotation}{% | |
| \begin{list}{}{% | |
| \setlength\leftmargin{\diss@indent}% | |
| \setlength\rightmargin{\diss@indent}% | |
| \setlength\parsep{\parskip}% | |
| \setlength\itemsep{0pt}% | |
| }% | |
| \item% | |
| }{\end{list}} | |
| % Bibliography | |
| \setcitestyle{aysep={}} | |
| \newcommand\cites[2][]{\citep[see][#1]{#2}} | |
| \setlength{\bibhang}{\diss@indent} | |
| % Indexing | |
| \newindex{default}{idx}{ind}{Index} | |
| \newindex{symbols}{sdx}{snd}{Notation} | |
| \newcommand{\symb}[2][]{\index[symbols]{#2}\@ifempty{#1}{}{\index[symbols]{#2|desc{#1}}}} | |
| \newcommand{\idxspace}[1]% | |
| {\let\next#1\ifx#1\hyperpage\nobreak\enspace\nobreak\else, \fi\next} | |
| \newcommand{\seealso}[2]{\emph{see also} #1} | |
| \renewenvironment{theindex}{% | |
| \edef\indexname{\the\@nameuse{idxtitle@\@indextype}}% | |
| \setlength{\columnseprule}{0pt}% | |
| \setlength{\columnsep}{2em}% | |
| \twocolumn[\@makeschapterhead{\indexname}]% | |
| \@mkboth{\indexname}{\indexname}% | |
| \setlength{\parindent}{0pt}% | |
| \thispagestyle{plain}% | |
| \let\item\@idxitem% | |
| \begingroup% | |
| \small% | |
| \raggedright% | |
| }{% | |
| \endgroup% | |
| \onecolumn% | |
| } | |
| \newenvironment{nomencl}[1]{% | |
| \begin{list}{}{% | |
| \renewcommand\makelabel[1]{##1\hfil}% | |
| \settowidth\labelwidth{\makelabel{#1}}% | |
| \setlength\labelsep{1em}% | |
| \setlength\leftmargin{\labelwidth}% | |
| \addtolength\leftmargin{\labelsep}% | |
| \setlength\rightmargin{0pt}% | |
| \setlength\parsep{\parskip}% | |
| \setlength\itemsep{2pt minus 1pt}% | |
| }% | |
| }{\end{list}} | |
| \newenvironment{thesymbols}{% | |
| \edef\indexname{\the\@nameuse{idxtitle@\@indextype}}% | |
| \@makeschapterhead{\indexname}% | |
| \@mkboth{\indexname}{\indexname}% | |
| \setlength{\parindent}{0pt}% | |
| \thispagestyle{plain}% | |
| \emph{Note:} See referenced pages for formal definitions. | |
| \par% | |
| \begingroup% | |
| \raggedright | |
| \begin{nomencl}{9999999999} | |
| }{% | |
| \end{nomencl}% | |
| \endgroup% | |
| } | |
| \renewcommand{\@idxitem}{\par\hangindent2em} | |
| \renewcommand{\subitem}{\par\hangindent2em\hspace*{1em}} | |
| \renewcommand{\subsubitem}{\par\hangindent2em\hspace*{1.5em}} | |
| % Math declarations | |
| \newcommand{\N}{\mathbb{N}} | |
| \newcommand{\Z}{\mathbb{Z}} | |
| \newcommand{\Q}{\mathbb{Q}} | |
| \newcommand{\R}{\mathbb{R}} | |
| \newcommand{\C}{\mathbb{C}} | |
| \newcommand{\ot}{\leftarrow} | |
| \newcommand{\To}{\implies} | |
| \newcommand{\e}{\text{\rmfamily e}} | |
| \renewcommand{\i}{\text{\rmfamily i}} | |
| \renewcommand{\O}{\mathcal{O}} | |
| \let\lim\undefined | |
| \DeclareMathOperator{\lim}{lim} | |
| \let\liminf\undefined | |
| \DeclareMathOperator{\liminf}{lim\,inf} | |
| \let\limsup\undefined | |
| \DeclareMathOperator{\limsup}{lim\,sup} | |
| \let\origphi\phi | |
| \let\phi\varphi | |
| \let\origtheta\theta | |
| \let\theta\vartheta | |
| \let\origepsilon\epsilon | |
| \let\epsilon\varepsilon | |
| \let\origupepsilon\upepsilon | |
| \let\upepsilon\upvarepsilon | |
| \let\smallfrac\@undefined | |
| \newcommand{\smallfrac}[2]{\ensuremath{\frac{#1}{#2}}} | |
| \newcommand{\term}[1]{\textcolor{red!70!black}{\textbf{#1}}} | |
| \endinput |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment