summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/hpsdiss
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/hpsdiss
Initial commit
Diffstat (limited to 'macros/latex/contrib/hpsdiss')
-rw-r--r--macros/latex/contrib/hpsdiss/hpsdiss.dtx1218
-rw-r--r--macros/latex/contrib/hpsdiss/hpsdiss.ins3
-rw-r--r--macros/latex/contrib/hpsdiss/hpsdiss.pdfbin0 -> 217818 bytes
3 files changed, 1221 insertions, 0 deletions
diff --git a/macros/latex/contrib/hpsdiss/hpsdiss.dtx b/macros/latex/contrib/hpsdiss/hpsdiss.dtx
new file mode 100644
index 0000000000..40daa19bb9
--- /dev/null
+++ b/macros/latex/contrib/hpsdiss/hpsdiss.dtx
@@ -0,0 +1,1218 @@
+% \iffalse meta-comment
+%
+% Copyright 2000 by Hanspeter Schmid
+%
+% This file may be distributed under the terms of the
+% GNU General Public License. The latest version of this license
+% can be found at http://www.gnu.org/copyleft/gpl.html
+%
+% \fi
+% \iffalse
+%
+%<*driver>
+% \fi
+\ProvidesFile{hpsdiss.dtx}[2000/10/26 v1.0 Hanspeter's dissertation style]
+% \iffalse
+\documentclass{ltxdoc}
+\GetFileInfo{hpsdiss.dtx}
+\title{hpsdiss: Dissertation class for ETH Z\"urich}
+\date{\filedate}
+\author{%
+ Hanspeter Schmid, hanspi@computer.org}
+\begin{document}
+\maketitle
+\DocInput{\filename}
+\end{document}
+%</driver>
+% \fi
+%
+% \CheckSum{1517}
+%
+% \section{Please \ldots}
+%
+% rename this class when you make \emph{any} changes. I absolutely
+% don't want different versions floating around. I will not give
+% any support to anybody who breaks this rule.
+% Questions? Use e-mail, my address is |hanspi@computer.org|.
+%
+% \section{Introduction}
+%
+% I developed this \LaTeX\ class to typeset my own dissertation at the
+% ETH Z\"urich. I was never satisfied with the conventional layout,
+% which was to fill an A5 page with a font size of 10pt. Then the lines
+% become too long, in my opinion.
+%
+% The class |hpsdiss.cls| produces shorter lines, has wide outer
+% margins, and prints section numbers, figure and table numbers, and of
+% course margin notes into these wide margins. In my dissertation,
+% I used the command |\Abstract| (see
+% below) to give every single paragraph its little abstract in the
+% margin, as an aid for the reader who browses through the book and also
+% to communicate what the main idea behind every paragraph is.
+%
+% Other features of this class are:
+% \begin{itemize}
+% \item It can typeset everything with a ragged right margin (that's how I
+% prefer it).
+% \item It redefines the environments |sidewaysfigure| and
+% |sidewaystable| such that they produce sensible captions.
+% \item It provides several commands to let material extend into the
+% margins (figures, tables \ldots).
+% \item It provides a special chapter title page that contains the
+% title, a quote, and a chapter abstract.
+% \item It provides a special environment |bkgnd| for historical and
+% personal information, which uses a different font to differ it
+% optically from the purely scientific part of the dissertation.
+% \item It has an option |specialfonts| that switches to a nice font
+% combination: Times for main text, Gill Sans for headings, and Codex
+% for the background information. Unfortunately, this option is
+% useless for most users, since it relies on fonts that are not in the
+% public domain.
+% \item It generates the official title page of the dissertation
+% ``Series in Signal and Information Processing,'' and also the back
+% of the book.
+% \end{itemize}
+%
+% Many things in this class are configurable by class options, and it
+% also provides several commands. The commands and environments that
+% are interesting for the users of this class are marked in the margin
+% and are described there.
+%
+% \StopEventually{}
+%
+% \changes{v1.0}{2000/10/26}{Generated from my old hpsdiss.cls}
+%
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\ProvidesClass{hpsdiss}[2000/10/26 PhD thesis class by Hanspeter Schmid]
+% \end{macrocode}
+%
+% \section{Class Options}
+%
+% This class bases on book.cls, and almost all options that it does not
+% understand itself are passed on to |book.cls|. Only the option
+% |twocolumn| is rejected, because it does not make sense. Font size
+% options like |11pt| \ldots should not be used, since the font sizes
+% are hard-wired.
+%
+% |hpsdiss| has quite a few options of its own. |raggedright| lets all
+% text appear with a ragged right margin, using the macro |\RaggedRight|
+% from the package |ragged2e|. |specialfonts| is described above.
+%
+% Most options are there to determine what the title page looks like.
+% The options belong to three sets: language, gender, and degree. The
+% default language is English, other languages can be used with the
+% options |deutsch|, |italiano|, and |francais|. The default gender of
+% the author is male, use the option |female| if you're a woman. This
+% plays a role in conjunction with the options |deutsch| and |francais|.
+% The default doctoral degree is ``Doctor of Technical Sciences,'' use
+% the option |scnat| for ``Natural Sciences'' and |scmath| for
+% ``Mathematics.''
+%
+% \begin{macrocode}
+\DeclareOption{twocolumn}{%
+ \@latex@warning{hpsdiss.cls does not accept the option `twocolumn'.}%
+ \OptionNotUsed}
+\DeclareOption{raggedright}{\newcommand{\TextAlignment}{\RaggedRight}}
+\DeclareOption{specialfonts}{\newcommand{\SpecialFonts}{\relax}}
+\DeclareOption{deutsch}{\newcommand{\DT@deutsch}{\relax}}
+\DeclareOption{francais}{\newcommand{\DT@francais}{\relax}}
+\DeclareOption{italiano}{\newcommand{\DT@italiano}{\relax}}
+\DeclareOption{scnat}{\newcommand{\DT@scnat}{\relax}}
+\DeclareOption{scmath}{\newcommand{\DT@scmath}{\relax}}
+\DeclareOption{female}{\newcommand{\DT@female}{\relax}}
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{book}}
+\PassOptionsToClass{twoside}{book}
+\ProcessOptions
+\LoadClass{book}
+% \end{macrocode}
+%
+% This packages requires several other packages that we now
+% load: |geometry| to set the page
+% layout, |calc| for arithemtics within arguments, |ragged2e| for
+% producing ragged-right text, |rotating| for tables and figures
+% that are turned sideways, and |mparhack| such that the margin
+% paragraphs work (more) properly. Finally, |graphicx| and
+% |colordvi| are required for the title page.
+%
+% \begin{macrocode}
+\RequirePackage{geometry}
+\RequirePackage{calc}
+\RequirePackage{ragged2e}
+\RequirePackage{rotating}
+\RequirePackage{mparhack}
+\RequirePackage{graphicx}
+\RequirePackage{colordvi}
+% \end{macrocode}
+%
+% \section{Page Layout}
+%
+% \begin{macro}{\MarginParWidth}
+% \begin{macro}{\MarginParSep}
+% \begin{macro}{\TotalWidth}
+%
+% The page is laid out as a main text block with a 26-mm outer margin
+% to be printed on A5 paper. These dimensions can be changed by modifying
+% |\MarginParWidth|, |\MarginParSep|, and |\TotalWidth|, but please don't
+% change this unless you are prepared to find out what else you need to
+% change as well.
+%
+% \begin{macrocode}
+\newcommand{\MarginParWidth}{26mm}
+\newcommand{\MarginParSep}{4mm}
+\newcommand{\TotalWidth}{118.5mm}
+\geometry{paper=a5paper,dvips=true,twoside=true}
+\geometry{width=\TotalWidth,height=192mm,top=7mm,twosideshift=7mm}
+\geometry{headheight=4mm,headsep=9mm}
+\geometry{nofoot}
+\geometry{marginparsep=\MarginParSep,marginparwidth=\MarginParWidth}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\CapFont}
+% \begin{macro}{\CapNumFont}
+% \begin{macro}{\SecFont}
+% \begin{macro}{\SecNumFont}
+% \begin{macro}{\ChapFont}
+% \begin{macro}{\TitleFont}
+% \begin{macro}{\HeaderFont}
+% \begin{macro}{\BackgroundFont}
+%
+% The following macros define, in this order, the fonts used for
+% captions, caption lables, section titles, section numbers, chapter
+% titles, the document title, the page headings, and the |background|
+% environment, and the fonts used on the official title page.
+% There is a conventional version and a version called by
+% the option |specialfonts|.
+%
+% \begin{macrocode}
+\ifx\SpecialFonts\undefined
+ \newcommand{\CapFont}{\em}
+ \newcommand{\CapNumFont}{\sf\bfseries}
+ \newcommand{\SecFont}{\sf\bfseries}
+ \newcommand{\SecNumFont}{\sf\bfseries}
+ \newcommand{\ChapFont}{\sf\bfseries}
+ \newcommand{\TitleFont}{\sf\bfseries}
+ \newcommand{\HeaderFont}{\sf\small}
+ \newcommand{\BackgroundFont}{\em}
+ \newcommand{\DTfont@author}{\sf\bfseries}
+ \newcommand{\DTfont@normal}{\sf}
+ \newcommand{\DTfont@series}{\sf\bfseries}
+ \newcommand{\DTfont@title}{\sf\bfseries}
+\else
+ \newcommand{\CapFont}{\em}
+ \newcommand{\CapNumFont}{\usefont{T1}{bgs}{b}{r}\selectfont}
+ \newcommand{\SecFont}{\usefont{T1}{bgs}{b}{r}\selectfont}
+ \newcommand{\SecNumFont}{\usefont{T1}{bgs}{b}{r}\selectfont}
+ \newcommand{\ChapFont}{\usefont{T1}{bgs}{b}{r}\selectfont}
+ \newcommand{\TitleFont}{\usefont{T1}{bgs}{b}{r}\selectfont}
+ \newcommand{\HeaderFont}{\usefont{T1}{bgs}{r}{r}\selectfont}
+ \newcommand{\BackgroundFont}{%
+ \usefont{T1}{bc9}{r}{r}\selectfont%
+ \renewcommand{\emph}[1]{{##1}}}
+ \newcommand{\DTfont@author}{\usefont{T1}{bgs}{b}{r}\selectfont}
+ \newcommand{\DTfont@normal}{\usefont{T1}{bgs}{r}{r}\selectfont}
+ \newcommand{\DTfont@series}{\usefont{T1}{bgs}{b}{r}\selectfont}
+ \newcommand{\DTfont@title}{\usefont{T1}{bgs}{b}{r}\selectfont}
+\fi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\noparskip}
+%
+% This class uses the European book layout, i.e., a layout that has
+% no paragraph identations, but some paragraph skip. This is sometimes
+% not wanted in tables of contents, so we provide a macro that makes
+% it possible to produce tables of contents with tight vertical spacing
+% by writing something like |{\noparskip \tableofcontents}|.
+%
+% \begin{macrocode}
+\newcommand{\noparskip}{\parskip=\z@ \@plus\z@ \@minus\z@}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% Now come the details of the paragraph layout. If |raggedright| is not
+% used, |\TextAlignment| must be set anyway, and |\parindent| must be
+% set to zero. (The command |\RaggedRight| does that too). The text
+% alignement command is issued at the begin of the document, and the
+% parskip is also set to a reasonable, non-zero value. Finally, clubs
+% and widows are punished hard.
+% \begin{macrocode}
+\ifx\TextAlignment\undefined
+ \newcommand{\TextAlignment}{\relax}
+ \parindent=0pt
+\else\fi
+\AtBeginDocument{\TextAlignment}
+\parskip=2ex \@plus 0.5ex \@minus 0.5ex
+\widowpenalty 10000
+\clubpenalty 10000
+\@clubpenalty 10000
+% \end{macrocode}
+% Lists are generally defined with tighter vertical spacing, the
+% following was adapted from |book.cls|.
+% \begin{macrocode}
+\def\@listi{\leftmargin\leftmargini
+ \parsep \z@ \@plus2\p@ \@minus\z@
+ \topsep \z@ \@plus2\p@ \@minus\z@
+ \itemsep\z@ \@plus2\p@ \@minus\z@}
+\let\@listI\@listi
+\@listi
+\def\@listii{\leftmargin\leftmarginii
+ \labelwidth\leftmarginii
+ \advance\labelwidth-\labelsep
+ \topsep \z@ \@plus2\p@ \@minus\z@
+ \parsep \z@ \@plus\p@ \@minus\z@
+ \itemsep \parsep}
+\def\@listiii{\leftmargin\leftmarginiii
+ \labelwidth\leftmarginiii
+ \advance\labelwidth-\labelsep
+ \topsep \z@ \@plus\p@ \@minus\z@
+ \parsep \z@ \@minus\z@
+ \partopsep \z@ \plus\z@ \@minus\z@
+ \itemsep \topsep}
+\def\@listiv {\leftmargin\leftmarginiv
+ \labelwidth\leftmarginiv
+ \advance\labelwidth-\labelsep}
+\def\@listv {\leftmargin\leftmarginv
+ \labelwidth\leftmarginv
+ \advance\labelwidth-\labelsep}
+\def\@listvi {\leftmargin\leftmarginvi
+ \labelwidth\leftmarginvi
+ \advance\labelwidth-\labelsep}
+% \end{macrocode}
+% I use font size 10pt, and noything else, thus it is hard-wired.
+% The following is adapted from |bk10.clo|.
+% \begin{macrocode}
+\renewcommand\normalsize{%
+ \@setfontsize\normalsize\@xpt\@xiipt
+ \abovedisplayskip 10\p@ \@plus2\p@ \@minus\z@
+ \abovedisplayshortskip \z@ \@plus3\p@ \@minus\z@
+ \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
+ \belowdisplayskip \abovedisplayskip
+ \let\@listi\@listI}
+\normalsize
+\renewcommand\small{%
+ \@setfontsize\small\@ixpt{11}%
+ \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus\z@
+ \abovedisplayshortskip \z@ \@plus2\p@
+ \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@
+ \def\@listi{\leftmargin\leftmargini
+ \topsep \z@ \@plus2\p@ \@minus\z@
+ \parsep \z@ \@plus\p@ \@minus\z@
+ \itemsep \parsep}%
+ \belowdisplayskip \abovedisplayskip
+ }
+\renewcommand\footnotesize{%
+ \@setfontsize\footnotesize\@viiipt{9.5}%
+ \abovedisplayskip 6\p@ \@plus2\p@ \@minus\z@
+ \abovedisplayshortskip \z@ \@plus\p@
+ \belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@
+ \def\@listi{\leftmargin\leftmargini
+ \topsep \z@ \@plus\p@ \@minus\z@
+ \parsep \z@ \@plus\p@ \@minus\z@
+ \itemsep \parsep}%
+ \belowdisplayskip \abovedisplayskip
+}
+% \end{macrocode}
+%
+% \section{Page Headings}
+%
+% The running feet are empty in this page style.
+% \begin{macrocode}
+\def\ps@headings{%
+ \let\@oddfoot\@empty\let\@evenfoot\@empty
+% \end{macrocode}
+% On left pages: skip to the left of the margin, typeset the page
+% number, and then typeset the heading text above the normal text.
+% \begin{macrocode}
+ \def\@evenhead{%
+ \hskip-\marginparsep\hskip-\marginparwidth%
+ \makebox[\marginparsep+\marginparwidth][l]{\HeaderFont\thepage}%
+ {\makebox[\textwidth][l]{\HeaderFont\vphantom{g}\leftmark}}}
+% \end{macrocode}
+% Right pages: Typeset the heading text above the normal text,
+% and then typeset the page number at the right edge of the
+% margin. The trailing |\hskip|s prevent overfull hboxes.
+% \begin{macrocode}
+ \def\@oddhead{%
+ {\makebox[\textwidth][r]{\HeaderFont\vphantom{g}\rightmark}}%
+ \makebox[\marginparsep+\marginparwidth][r]{\HeaderFont\thepage}%
+ \hskip-\marginparsep\hskip-\marginparwidth}
+% \end{macrocode}
+% When using this page style, the content of the running heading is
+% determined by the chapter and section titles.
+% \begin{macrocode}
+ \let\@mkboth\markboth
+% \end{macrocode}
+% |book.cls| uses the |\chaptermark| and |\sectionmark| macros to fill
+% the running heads. In contrast to the standard |book.cls|,
+% I don't want headings to appear in capital letters, so I had
+% to remove all the |\makeuppercase| commands.
+% \begin{macrocode}
+ \def\chaptermark##1{%
+ \markboth {%
+ \ifnum \c@secnumdepth >\m@ne %
+ \if@mainmatter \@chapapp\ \thechapter. \ \fi %
+ \fi %
+ ##1}{}}%
+ \def\sectionmark##1{%
+ \markright {%
+ \ifnum \c@secnumdepth >\z@ %
+ \thesection. \ %
+ \fi %
+ ##1}}}
+% \end{macrocode}
+% And now execute |\ps@headings|.
+% \begin{macrocode}
+\pagestyle{headings}
+% \end{macrocode}
+% Unfortunatley, the original |book.cls| makes all headings in
+% Tables of Contents, Lists of Figures, Lists of Tables, and
+% in the Bibliography section appear in capital letters too.
+% I don't want this, and remove all the |\makeuppercase| commands
+% from the definitions made in |book.cls|.
+% \begin{macrocode}
+\renewcommand\tableofcontents{%
+ \chapter*{\contentsname\@mkboth{\contentsname}{\contentsname}}%
+ \@starttoc{toc}}
+\renewcommand\listoffigures{%
+ \chapter*{\listfigurename\@mkboth{\listfigurename}{\listfigurename}}%
+ \@starttoc{lof}}
+\renewcommand\listoftables{%
+ \chapter*{\listtablename\@mkboth{\listtablename}{\listtablename}}%
+ \@starttoc{lot}}
+% \end{macrocode}
+%
+% \section{Bibliography}
+%
+% In addition to the headings problem, I want the bibliography
+% to show the reference fields in the margin.
+% I use a global variable |\ThePage| that will contain the
+% page number of the page on which a particular bibliography
+% entry is printed. Unfortunatley, this can only be determined
+% when the box containing the entry is shipped out. So I have
+% to use the |.aux| file to store and retrieve this information.
+% First, define a counter that is used to generate the
+% internally used labels.
+% \begin{macrocode}
+\newcounter{autolabels}%
+\renewenvironment{thebibliography}[1]
+{\chapter*{\bibname\@mkboth{\bibname}{\bibname}}%
+ \small %
+ \addcontentsline{toc}{chapter}{\bibname}
+% \end{macrocode}
+% Now re-define the command that makes the bibliography labels.
+% I'll comment that in detail, the same trick is used below with
+% fewer comments for all sorts of other things.
+% \begin{macrocode}
+ \renewcommand{\@mklab}[1]{%
+% \end{macrocode}
+% Increase the counter and automatically generate a label.
+% \begin{macrocode}
+ \refstepcounter{autolabels}%
+ \label{autolabel:\theautolabels}%
+% \end{macrocode}
+% In the first run of \LaTeX, the label does not exists yet
+% (it has to be read back from an |.aux| file). To prevent
+% an error, assume that the page on which
+% this bibliography entry starts is page number 1.
+% \begin{macrocode}
+ \expandafter\ifx\csname r@autolabel:\theautolabels \endcsname\relax %
+ \edef\ThePage{1}%
+ \else %
+ \edef\ThePage{\pageref{autolabel:\theautolabels}}%
+ \fi %
+% \end{macrocode}
+% Now typeset the lable into \emph{both} margins and align it to
+% the right if it is in the right margin. Display it only on the
+% side where it is needed. Doinf this is very important, if the
+% boxes are not precisely identical, \LaTeX might typeset it at
+% the bottom of page~130 in the first run, then flip the label to
+% the other side in the second run, but find out that the whole
+% thing should better be placed at the top of page~131. Then it
+% would go back again in the run after, and oscillate for ever.
+% I really don't whant this!
+% \begin{macrocode}
+ \makebox[0pt][l]{\hbox{}\hskip\textwidth \hskip\marginparsep %
+ \ifodd\ThePage {##1}\else \phantom{##1}\fi}%
+ \makebox[0pt][l]{\hbox{}\hskip-\marginparsep \makebox[0pt][r]{%
+ \ifodd\ThePage \phantom{##1}\else{##1}\fi }}%
+ \hfil\hbox{}}
+ \list{\@biblabel{\@arabic\c@enumiv}}%
+% \end{macrocode}
+% Since the labels are now in the margin, I have to remove the
+% space that is normally assigned to the labels.
+% \begin{macrocode}
+ {\labelwidth=0pt%
+ \leftmargin=0pt%
+ \labelsep=0pt%
+ \itemsep=1ex%
+ \@openbib@code
+ \usecounter{enumiv}%
+ \let\p@enumiv\@empty
+ \renewcommand\theenumiv{\@arabic\c@enumiv}}%
+ \sloppy
+ \clubpenalty4000
+ \@clubpenalty \clubpenalty
+ \widowpenalty4000%
+ \sfcode`\.\@m}
+{%
+ \normalsize %
+ \def\@noitemerr
+ {\@latex@warning{Empty `thebibliography' environment}}%
+ \endlist}
+% \end{macrocode}
+%
+% \section{Captions}
+%
+% Rotated figures need a conventional caption style, so I generate
+% a flag saying whether we are inside a rotated float
+% (adapted from |rotating.sty|).
+% \begin{macrocode}
+\renewcommand\sidewaysfigure{\let\inside@rotated@float=\relax %
+ \@rotfloat{figure}}
+\renewcommand\sidewaystable{\let\inside@rotated@float=\relax %
+ \@rotfloat{table}}
+% \end{macrocode}
+% The command |\caption| generates the automatic label.
+% \begin{macrocode}
+\def\caption{%
+ \ifx\@captype\@undefined
+ \@latex@error{\noexpand\caption outside float}\@ehd
+ \expandafter\@gobble
+ \else
+ \stepcounter{autolabels}%
+ \refstepcounter\@captype
+ \label{autolabel:\theautolabels}%
+ \expandafter\@firstofone
+ \fi
+ {\@dblarg{\@caption\@captype}}%
+ }
+% \end{macrocode}
+% The definition of the following macro is |\long| in order to allow more
+% than one paragraph in the argument of |\caption|.
+% \begin{macrocode}
+\long\def\@makecaption#1#2{%
+ \vskip\abovecaptionskip
+ \expandafter\ifx\csname r@autolabel:\theautolabels \endcsname\relax %
+ \edef\ThePage{1}%
+ \else %
+ \edef\ThePage{\pageref{autolabel:\theautolabels}}%
+ \fi
+% \end{macrocode}
+% Captions of normal floats:
+% Place a zero-width box that puts its contents
+% right-aligned. The contents are a zero-width box that
+% places a left-aligned label, and two horizontal spaces.
+% Then typeset the caption text |\raggedright| (without
+% hyphenation) and |\raggedleft| into full-width parboxes.
+% Finally, append a zero-width
+% box. Inside, move to the right edge of the margin, and
+% put another zero-width box that places a right-aligned
+% caption label. (Note how the trick against oscillations
+% is used again.)
+% \begin{macrocode}
+ \ifx\inside@rotated@float\undefined
+ \makebox[0pt][r]{\makebox[0pt][l]{\CapNumFont %
+ \ifodd\ThePage \phantom{#1}\else {#1}\fi}%
+ \hskip\marginparsep \hskip\marginparwidth \hbox{}}%
+ \makebox[0pt][l]{%
+ \ifodd\ThePage %
+ \parbox[t]{\TotalWidth-\MarginParWidth-\MarginParSep}%
+ {\raggedleft \CapFont #2}%
+ \else %
+ \phantom{\parbox[t]{\TotalWidth-\MarginParWidth-\MarginParSep}%
+ {\raggedleft \CapFont #2}}%
+ \fi}%
+ \makebox[0pt][l]{%
+ \ifodd\ThePage %
+ \phantom{\parbox[t]{\TotalWidth-\MarginParWidth-\MarginParSep}%
+ {\raggedright \CapFont #2}}%
+ \else %
+ \parbox[t]{\TotalWidth-\MarginParWidth-\MarginParSep}%
+ {\raggedright \CapFont #2}%
+ \fi}%
+ \hfill %
+ \makebox[0pt][l]{\hbox{}\hskip\marginparsep \hskip\marginparwidth %
+ \makebox[0pt][r]{\CapNumFont %
+ \ifodd\ThePage {#1}\else \phantom{#1}\fi}}%
+ \vskip\belowcaptionskip %
+% \end{macrocode}
+% Captions of rotated floats are treated as in |books.cls|.
+% \begin{macrocode}
+ \else
+ \sbox\@tempboxa{{\CapNumFont #1:} \CapFont #2}%
+ \ifdim \wd\@tempboxa >\hsize
+ {\CapNumFont #1:} \CapFont #2\par
+ \else
+ \global \@minipagefalse
+ \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
+ \fi %
+ \fi}
+% \end{macrocode}
+% Finally, set the vertical spacing of captions.
+% \begin{macrocode}
+\setlength\abovecaptionskip{6\p@}
+\setlength\belowcaptionskip{10\p@}
+% \end{macrocode}
+%
+% \section{Parts, Chapters, Sections, \ldots}
+%
+% No headings on the page where a part begins.
+% \begin{macrocode}
+\renewcommand\part{%
+ \if@openright \cleardoublepage \else \clearpage \fi
+ \thispagestyle{empty}%
+% \end{macrocode}
+% Never ever swap to twocolumn-mode afterwards!
+% \begin{macrocode}
+ \@tempswafalse
+% \end{macrocode}
+% I need an empty box to prevent the fil glue from disappearing.
+% \begin{macrocode}
+ \null\vfil
+% \end{macrocode}
+% Use |\secdef| to indicate which commands to use to make
+% the actual heading.
+% \begin{macrocode}
+ \secdef\@part\@spart}
+\def\@part[#1]#2{%
+ \ifnum \c@secnumdepth >-2\relax
+ \refstepcounter{part}%
+ \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
+ \else
+ \addcontentsline{toc}{part}{#1}%
+ \fi
+% \end{macrocode}
+% Clear the mark registers and center the title on the page.
+% Also prevent breaking between
+% lines, and reset the font. Finally, use a box that spans the full
+% width of the page (defined below).
+% \begin{macrocode}
+ \markboth{}{}%
+ \fullwidthbox{%
+ \centering
+ \interlinepenalty \@M
+ \normalfont
+ \ifnum \c@secnumdepth >-2\relax
+ \huge\ChapFont \partname~\thepart
+ \par
+ \vskip 20\p@
+ \fi
+ \Huge \ChapFont #2\par%
+ }
+ \@endpart}
+% \end{macrocode}
+% The following macro does the actual formatting of the title of
+% the part when the star form of the user command was used.
+% In this case never print a number. Otherwise the formatting
+% is the same.
+% \begin{macrocode}
+\def\@spart#1{%
+ \fullwidthbox{
+ \centering
+ \interlinepenalty \@M
+ \normalfont
+ \Huge \ChapFont #1\par%
+ }
+ \@endpart}
+% \end{macrocode}
+%
+% The chapter start page gets a special layout:
+% \begin{macrocode}
+\renewcommand\chapter{%
+ \if@openright \cleardoublepage \else \clearpage \fi
+ \thispagestyle{empty}%
+ \@tempswafalse
+% \end{macrocode}
+% Prevent floats from appearing at the top of this page
+% because it looks weird to see a floating object above a chapter
+% title.
+% \begin{macrocode}
+ \global\@topnum\z@
+% \end{macrocode}
+% Supress the indentation of the first paragraph by
+% setting the switch |\@afterindent| to false. Use |\secdef|
+% to specify the macros to use for actually setting the chapter
+% title.
+% \begin{macrocode}
+ \@afterindentfalse
+ \secdef\@chapter\@schapter}
+% \end{macrocode}
+% The chapter always starts on an odd page, so playing with
+% spaces is not difficult here. First normal chapters,
+% then the ones where the star form was used.
+% Note that the |\vskip| after the numbered version of the
+% chapter head is only |12\p@|, since a |\chapquote| is
+% expected afterwards that gives the remaining |40\p@|.
+% \begin{macrocode}
+\def\@makechapterhead#1{%
+ {\parindent \z@ \raggedleft \normalfont
+ \ifnum \c@secnumdepth >\m@ne
+ \if@mainmatter
+ \huge \ChapFont \@chapapp\space \thechapter
+ \par\nobreak
+ \vskip 12\p@
+ \fi
+ \fi
+ \interlinepenalty\@M
+ \Huge \ChapFont #1\par\nobreak
+ \vskip 12\p@
+ }}
+\def\@makeschapterhead#1{%
+ {\parindent \z@ \raggedleft
+ \normalfont
+ \interlinepenalty\@M
+ \Huge \ChapFont #1\par\nobreak
+ \vskip 40\p@
+ }}
+% \end{macrocode}
+%
+% \begin{macro}{\chapquote}
+% \begin{macro}{\chapnoquote}
+% And here comes the macro for quotations, use as
+% |\chapquote{Quotation}{Author}|. If you don't want
+% quotes after chapter titles, use |\chapnoquote|
+% to correct the vertical spacing.
+% \begin{macrocode}
+\newcommand{\chapquote}[2]{%
+ {\ChapFont
+ \RaggedLeft #1
+
+ (#2)
+ \vskip 40\p@
+ }}
+\newcommand{\chapnoquote}{\null\vskip 28\p@}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{environment}{chapabstract}
+% In my dissertation, I used raggedright, but this looks ugly on
+% the chapter title page. So I wrote the following environment
+% that switches |\RaggedRight| off and used it for writing
+% the abstracts of the chapters.
+% \begin{macrocode}
+\newenvironment{chapabstract}{%
+ \setlength{\leftskip} {\z@skip}%
+ \setlength{\@rightskip} {\z@skip}%
+ \setlength{\rightskip} {\@rightskip}%
+ \parfillskip=0pt plus 1fil %
+ }{\par}
+% \end{macrocode}
+% \end{environment}
+%
+% Use a different font for sections:
+% The following gives a normal heading with white space above
+% and below the section heading, the title set in |\SecFont\Large|,
+% and no indentation on the first paragraph.
+% \begin{macrocode}
+\renewcommand{\section}{%
+ \@startsection {section}{1}{\z@}%
+ {-3.5ex \@plus -1ex \@minus -.2ex}%
+ {2.3ex \@plus.2ex}%
+ {\SecFont\Large}}
+\renewcommand{\subsection}{%
+ \@startsection{subsection}{2}{\z@}%
+ {-3.25ex\@plus -1ex \@minus -.2ex}%
+ {1.5ex \@plus .2ex}%
+ {\SecFont\large}}
+\renewcommand{\subsubsection}{%
+ \@startsection{subsubsection}{3}{\z@}%
+ {-3.25ex\@plus -1ex \@minus -.2ex}%
+ {1.5ex \@plus .2ex}%
+ {\SecFont\normalsize}}
+% \end{macrocode}
+% Paragraphs are never numbered; they just make their
+% Argument bold.
+% \begin{macrocode}
+\renewcommand{\paragraph}[1]{\noindent\textbf{#1}}
+% \end{macrocode}
+% No trailing period in the section number
+% \begin{macrocode}
+\def\@seccntformat#1{\csname the#1\endcsname}
+\def\@sect#1#2#3#4#5#6[#7]#8{%
+ \ifnum #2>\c@secnumdepth
+ \let\@svsec\@empty
+% \end{macrocode}
+% If the present section is not numbered, assume that
+% it is on an odd page. This does not matter since
+% no section number will be typeset (see below).
+% \begin{macrocode}
+ \edef\ThePage{1}
+ \else
+ \stepcounter{autolabels}
+ \refstepcounter{#1}%
+ \expandafter\ifx\csname r@autolabel:\theautolabels \endcsname\relax %
+ \edef\ThePage{1}%
+ \else %
+ \edef\ThePage{\pageref{autolabel:\theautolabels}}%
+ \fi
+% \end{macrocode}
+% Since |\@seccntformat| might end with an improper |\hskip| which
+% is scanning forward for plus or minus, we end the definition
+% of |\@svsec| with |\relax| as a precaution.
+% \begin{macrocode}
+ \protected@edef\@svsec{\@seccntformat{#1}\relax}%
+ \fi
+ \@tempskipa #5\relax
+ \ifdim \@tempskipa>\z@
+ \begingroup
+% \end{macrocode}
+% To prevent oscillation as well as possible, always typeset
+% the section number on both sides of the section heading, but
+% one will always be invisible.
+% \begin{macrocode}
+ {%
+% \end{macrocode}
+% Label in the right margin: typeset a zero-width box whose
+% argument is left-aligned. The argument contains spaces to move
+% the inner zero-width box to the right edge of the margin.
+% \begin{macrocode}
+ \makebox[0pt][l]{%
+ \hbox{}\hskip\textwidth \hskip\marginparsep %
+ \hskip\marginparwidth \makebox[0pt][r]{#6\SecNumFont %
+ \ifodd \ThePage \@svsec \else \phantom{\@svsec}\fi %
+ }}%
+% \end{macrocode}
+% Label in the left margin: analogous.
+% \begin{macrocode}
+ \makebox[0pt][r]{%
+ \makebox[0pt][l]{#6\SecNumFont %
+ \ifodd \ThePage \phantom{\@svsec}\else \@svsec \fi }%
+ \hskip\marginparwidth \hskip\marginparsep}%
+% \end{macrocode}
+% And now comes the section title itself.
+% \begin{macrocode}
+ #6{\interlinepenalty \@M #8\@@par}}%
+ \endgroup
+ \csname #1mark\endcsname{#7}%
+ \addcontentsline{toc}{#1}{%
+ \ifnum #2>\c@secnumdepth \else
+ \protect\numberline{\csname the#1\endcsname}%
+ \fi
+ #7}%
+ \else
+% \end{macrocode}
+% Unnumbered sections
+% \begin{macrocode}
+ \def\@svsechd{%
+ #6{\hskip #3\relax
+ \@svsec #8}%
+ \csname #1mark\endcsname{#7}%
+ \addcontentsline{toc}{#1}{%
+ \ifnum #2>\c@secnumdepth \else
+ \protect\numberline{\csname the#1\endcsname}%
+ \fi
+ #7}}%
+ \fi
+ \@xsect{#5}%
+ \ifnum #2>\c@secnumdepth %
+% \end{macrocode}
+% Don't generate an automatic label for unnumbered sections.
+% \begin{macrocode}
+ \else %
+ \label{autolabel:\theautolabels}%
+ \fi %
+ }
+% \end{macrocode}
+%
+% \section{Boxes extending into the margin}
+%
+% \begin{macro}{\fullwidthbox}
+% Macro that can typeset things into the margin and uses
+% the full available width of the document
+% \begin{macrocode}
+\long\def\fullwidthbox#1{%
+ \stepcounter{autolabels}%
+% \end{macrocode}
+% Save the label of this box for later, in case
+% the counter |autolabels| is changed within the argument.
+% \begin{macrocode}
+ \def\@fullwidthboxlabel{autolabel:\theautolabels}%
+ \expandafter\ifx\csname r@autolabel:\theautolabels \endcsname\relax %
+ \edef\ThePage{1}%
+ \else %
+ \edef\ThePage{\pageref{autolabel:\theautolabels}}%
+ \fi %
+ \ifodd\ThePage %
+% \end{macrocode}
+% No shift on odd pages.
+% \begin{macrocode}
+ \else %
+% \end{macrocode}
+% Shift to the left edge of the margin on even pages.
+% \begin{macrocode}
+ \hbox{}\hskip-\marginparwidth \hskip-\marginparsep %
+ \fi %
+ \makebox[0pt][l]{%
+ \begin{minipage}{\linewidth+\marginparwidth+\marginparsep}%
+ #1%
+ \end{minipage}%
+ }%
+% \end{macrocode}
+% The following line is adapted from the definition of
+% |\refstepcounter| in |latex.ltx| (actually |ltxref.dtx|). It
+% forces |\label| on the line after to write down the correct
+% page number.
+% \begin{macrocode}
+ \protected@edef\@currentlabel{\relax}%
+ \label{\@fullwidthboxlabel}%
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\fullwidthinfloat}
+% The same again for use in Figures and other floats that already
+% have a label. Arguments: |#1| is the label, |#2| contains whatever
+% goes into the box.
+% \begin{macrocode}
+\long\def\fullwidthinfloat#1#2{%
+ \expandafter\ifx\csname r@#1\endcsname\relax %
+ \edef\ThePage{1}%
+ \else %
+ \edef\ThePage{\pageref{#1}}%
+ \fi %
+ \ifodd\ThePage %
+ \else %
+ \hbox{}\hskip-\marginparwidth \hskip-\marginparsep %
+ \fi %
+ \makebox[0pt][l]{%
+ \parbox{\linewidth+\marginparwidth+\marginparsep}{%
+ \ifodd\ThePage %
+ \else %
+ \null \hfill %
+ \fi %
+ \ifodd\ThePage \raggedright \else \raggedleft \fi %
+ #2%
+ }%
+ }%
+ }%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Abstract}
+% \begin{macro}{\MarginPar}
+% \begin{macro}{\MarginParVar}
+% Margin Paragraphs whose contents are aligned differently on even and odd
+% pages. |\Abstract| makes a margin paragraph in |\foortnotesize|
+% that is left-aligned on even pages and right-aligned on odd pages.
+% |\MarginPar| does the same without changing the font size.
+% |\MarginParVar| is right-aligned on even pages and left-aligned
+% on odd pages.
+% \begin{macrocode}
+\newcommand{\Abstract}[1]{%
+ {\footnotesize %
+ \marginpar[\footnotesize\raggedright\hspace{0pt}{#1}]%
+ {\footnotesize\raggedleft\hspace{0pt}{#1}}}}
+\newcommand{\MarginPar}[1]{%
+ \marginpar[\RaggedRight\hspace{0pt}{#1}]{\RaggedLeft\hspace{0pt}{#1}}}
+\newcommand{\MarginParVar}[1]{%
+ \marginpar[\RaggedLeft\hspace{0pt}{#1}]{\RaggedRight\hspace{0pt}{#1}}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \section{Background environment}
+%
+% \begin{environment}{background}
+% Described in the introduction. It just changes the font.
+% \begin{macrocode}
+\newenvironment{bkgnd}{\begingroup \BackgroundFont}{\endgroup}
+% \end{macrocode}
+% \end{environment}
+%
+% \clearpage
+% \section{Title Page \ldots}
+%
+% \begin{macro}{\DTauthor}
+% \begin{macro}{\DTborn}
+% \begin{macro}{\DTcitizen}
+% \begin{macro}{\DTdate}
+% \begin{macro}{\DTdegree}
+% \begin{macro}{\DTexaminers}
+% \begin{macro}{\DTnumber}
+% \begin{macro}{\DTtitle}
+% \begin{macro}{\DTvolume}
+% \begin{macro}{\DTissn}
+% \begin{macro}{\DTisbn}
+% \begin{macro}{\DTprice}
+% \begin{macro}{\DTimage}
+% These thirteen macros contain the information to be typeset on the
+% title page. |\DTimage| may contain the file name of image,
+% which must be in EPS and have aspect ratio 32x202\@. The image
+% should be comparatively dark, since the writing on top of it is white.
+% If no image file is given, a black rectangle is used.
+% \begin{macrocode}
+\newcommand{\DTauthor}{Hanspeter Schmid}
+\newcommand{\DTborn}{February 8, 1969}
+\newcommand{\DTcitizen}{H\"arkingen SO}
+\newcommand{\DTdate}{November 2000}
+\newcommand{\DTdegree}{dipl.\ El.-Ing.\ ETH}
+\newcommand{\DTexaminers}{Prof.\ Dr.\ George S. Moschytz, examiner\\
+ Prof.\ Dr.\ Qiuting Huang, co-examiner}
+\newcommand{\DTnumber}{13878}
+\newcommand{\DTtitle}{Single-Amplifier\\ Biquadratic\\ MOSFET--C Filters}
+\newcommand{\DTvolume}{1}
+\newcommand{\DTissn}{1616-671X}
+\newcommand{\DTisbn}{3-89649-616-6}
+\newcommand{\DTprice}{98,--}
+%\newcommand{\DTimage}{test1g.eps}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The following code defines the text for the title page
+% according to the options passed to |hpsdiss.cls|.
+% \begin{macrocode}
+\newcommand{\DT@accepted}{accepted on the recommendation of}
+\newcommand{\DT@born}{born on}
+\newcommand{\DT@citizen}{citizen of}
+\newcommand{\DT@dissertation}{A dissertation submitted to the\\
+ Swiss Federal Institute of Technology, Z\"urich\\
+ for the degree of}
+\newcommand{\DT@dissertationB}{}
+\newcommand{\DT@doctor}{Doctor of Technical Sciences}
+\ifx\DT@scnat\undefined\else
+ \renewcommand{\DT@doctor}{Doctor of Natural Sciences}
+\fi
+\ifx\DT@scmath\undefined\else
+ \renewcommand{\DT@doctor}{Doctor of Mathematics}
+\fi
+\newcommand{\DT@number}{Diss.~ETH No~}
+\newcommand{\DT@presented}{presented by}
+\ifx\DT@deutsch\undefined\else
+ \renewcommand{\DT@accepted}{Angenommen auf Antrag von}
+ \renewcommand{\DT@born}{geboren am}
+ \renewcommand{\DT@citizen}{von}
+ \renewcommand{\DT@dissertation}{Abhandlung\\
+ zur Erlangung des Titels}
+ \renewcommand{\DT@dissertationB}{\\der Eidgen\"ossischen
+ Technischen Hochschule Z\"urich}
+ \ifx\DT@female\undefdined
+ \newcommand{\DT@@doctor}{Doktor}
+ \else
+ \newcommand{\DT@@doctor}{Doktorin}
+ \fi
+ \renewcommand{\DT@doctor}{\DT@@doctor\ der technischen
+ Wissenschaften}
+ \ifx\DT@scnat\undefined\else
+ \renewcommand{\DT@doctor}{\DT@@doctor\ der Naturwissenschaften}
+ \fi
+ \ifx\DT@scmath\undefined\else
+ \renewcommand{\DT@doctor}{\DT@@doctor\ der Mathematik}
+ \fi
+ \renewcommand{\DT@number}{Diss.~ETH Nr.~}
+ \renewcommand{\DT@presented}{vorgelegt von}
+\fi
+\ifx\DT@italiano\undefined\else
+ \renewcommand{\DT@accepted}{accettata su proposta di}
+ \renewcommand{\DT@born}{nato il}
+ \renewcommand{\DT@citizen}{attinente di}
+ \renewcommand{\DT@dissertation}{Dissertatzione presentata al\\
+ Politecnico Federale di Zurigo\\
+ per il conseguimento del titolo di}
+ \renewcommand{\DT@doctor}{Dottore in scienze techniche}
+ \ifx\DT@scnat\undefined\else
+ \renewcommand{\DT@doctor}{Dottore in scienze naturali}
+ \fi
+ \ifx\DT@scmath\undefined\else
+ \renewcommand{\DT@doctor}{Dottore in matematica}
+ \fi
+ \renewcommand{\DT@number}{Diss.~ETH no~}
+ \renewcommand{\DT@presented}{da}
+\fi
+\ifx\DT@francais\undefined\else
+ \renewcommand{\DT@accepted}{accept\'ee sur proposition du}
+ \ifx\female\undefined
+ \renewcommand{\DT@born}{n\'e le}
+ \else
+ \renewcommand{\DT@born}{n\'ee le}
+ \fi
+ \renewcommand{\DT@citizen}{originaire de}
+ \renewcommand{\DT@dissertation}{pr\'esent\'ee \`a\\
+ L'\'Ecole Polytechnique F\'ed\'erale Z\"urich\\
+ pour l'obtention du titre de}
+ \renewcommand{\DT@doctor}{Docteur d\'es sciences techniques}
+ \ifx\DT@scnat\undefined\else
+ \renewcommand{\DT@doctor}{Docteur d\'es sciences naturelles}
+ \fi
+ \ifx\DT@scmath\undefined\else
+ \renewcommand{\DT@doctor}{Docteur d\'es sciences math\'ematiques}
+ \fi
+ \renewcommand{\DT@number}{Th\`ese~EPFZ No~}
+ \renewcommand{\DT@presented}{par}
+\fi
+% \end{macrocode}
+%
+% \begin{macro}{\disstitle}
+% \begin{macro}{\dissinnertitle}
+% \begin{macro}{\dissback}
+% These macros print the title page, the internal title page
+% (without the image or black rectangle, but with the name
+% of the publisher in front of the date),
+% and the back side of the book.
+%
+% The correct numbers in the command |\begin{picture}(0,0)(220,110)|
+% depend on the page layout.
+% \begin{macrocode}
+\newcommand{\dissinnertitle}{%
+ \newcommand{\DT@innertitle}{\relax}%
+ \disstitle}
+\newcommand{\disstitle}{%
+ \thispagestyle{empty}%
+ {\parskip=0pt%
+ \parindent=0pt%
+ \unitlength=0.1mm%
+ \null\vfill%
+ \begin{picture}(0,0)(220,110)%
+ \ifx\DT@innertitle\undefined
+ \put(40,40){%
+ \makebox(0,0)[bl]{%
+ \ifx\DTimage\undefined %
+ \rule{32mm}{202mm}%
+ \else %
+ \includegraphics[width=32mm,height=202mm]{\DTimage}%
+ \fi %
+ }}
+ \fi
+ \put(60,2020){%
+ \makebox(0,0)[tl]{%
+ \hbox to 28mm{%
+ \vbox to 194mm{%
+ \begin{minipage}[t]{28mm}
+ \DTfont@series \Large \raggedleft
+ \White{Series in}%
+ \makebox[0cm][l]{\null\hspace*{6mm}\hbox{%
+ \normalsize \DTfont@normal %
+ \DT@number \DTnumber}}\\
+ \White{Signal and}\\
+ \White{Information}\\
+ \White{Processing}\\[1.5ex]
+ \White{Volume \DTvolume}
+ \end{minipage}
+
+ \vfill
+
+ \begin{minipage}[b]{28mm}
+ \DTfont@series \Large \raggedleft
+ \White{Hartung}\\
+ \White{Gorre}\\
+ \White{Konstanz}%
+ \makebox[0cm][l]{\null\hspace*{6mm}\hbox{%
+ \normalsize \DTfont@normal %
+ \ifx\DT@innertitle\undefined\else %
+ Hartung-Gorre Verlag, Konstanz, %
+ \fi %
+ \DTdate}}
+ \end{minipage}}}}}
+ \put(400,2020){%
+ \makebox(0,0)[tl]{%
+ \hbox to 97mm{%
+ \vbox to 194mm{%
+ \DTfont@normal \phantom{\DT@number \DTnumber}
+
+ \vfill
+
+ \Huge {\DTfont@title \DTtitle}
+
+ \normalsize
+
+ \vfill
+
+ \DT@dissertation\\
+ \DT@doctor \DT@dissertationB
+
+ \vfill
+
+ \DT@presented
+
+ \medskip
+
+ \LARGE {\DTfont@author \DTauthor}
+ \normalsize
+
+ \medskip
+ \DTdegree\\
+ \DT@born\ \DTborn\\
+ \DT@citizen\ \DTcitizen
+
+ \vfill
+
+ \DT@accepted\\
+ \DTexaminers
+
+ \bigskip
+
+ \phantom{\DTdate}
+ }}}}%
+ \end{picture}%
+ }%
+ \clearpage
+ \thispagestyle{empty}
+ \hbox{}
+ \clearpage}
+\newcommand{\dissback}{%
+ \thispagestyle{empty}
+ \hbox{}
+ \clearpage
+ \thispagestyle{empty}%
+ {\parskip=0pt%
+ \parindent=0pt%
+ \unitlength=0.1mm%
+ \null\vfill%
+ \begin{picture}(0,0)(360,110)%
+ \put(80,2020){%
+ \makebox(0,0)[tl]{%
+ \hbox to 132.5mm{%
+ \vbox to 194mm{%
+ \null\vfill
+
+ \begin{minipage}[b]{132.5mm}
+ \Large
+ \DTfont@series
+ Series in Signal and Information Processing\\
+ \DTfont@normal edited by Hans-Andrea Loeliger\\[1.5ex]
+ $\boldsymbol \sum$ Hartung-Gorre Verlag
+ Konstanz\\[1.5ex]
+ ISSN \DTissn\quad ISBN \DTisbn\quad DM \DTprice
+ \end{minipage}
+ }}}}%
+ \end{picture}%
+ }}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \section{Conclusion}
+%
+% I was convinced by people on |comp.text.tex| to submit this class
+% to CTAN such that people might learn from it. Thanks to everybody
+% who commented on my layout, I have used some of the comments to
+% improve the look of my dissertation.
+%
+% \Finale
+%
diff --git a/macros/latex/contrib/hpsdiss/hpsdiss.ins b/macros/latex/contrib/hpsdiss/hpsdiss.ins
new file mode 100644
index 0000000000..d66fafe9f1
--- /dev/null
+++ b/macros/latex/contrib/hpsdiss/hpsdiss.ins
@@ -0,0 +1,3 @@
+\def\batchfile{hpsdiss.ins}
+\input docstrip.tex
+\generateFile{hpsdiss.cls}{t}{\from{hpsdiss.dtx}{}}
diff --git a/macros/latex/contrib/hpsdiss/hpsdiss.pdf b/macros/latex/contrib/hpsdiss/hpsdiss.pdf
new file mode 100644
index 0000000000..52bf2998b3
--- /dev/null
+++ b/macros/latex/contrib/hpsdiss/hpsdiss.pdf
Binary files differ