summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/semproc
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/semproc
Initial commit
Diffstat (limited to 'macros/latex/contrib/semproc')
l---------macros/latex/contrib/semproc/README1
-rw-r--r--macros/latex/contrib/semproc/README.txt14
-rw-r--r--macros/latex/contrib/semproc/semproc.dtx740
-rw-r--r--macros/latex/contrib/semproc/semproc.pdfbin0 -> 363791 bytes
4 files changed, 755 insertions, 0 deletions
diff --git a/macros/latex/contrib/semproc/README b/macros/latex/contrib/semproc/README
new file mode 120000
index 0000000000..c3ca07460a
--- /dev/null
+++ b/macros/latex/contrib/semproc/README
@@ -0,0 +1 @@
+README.txt \ No newline at end of file
diff --git a/macros/latex/contrib/semproc/README.txt b/macros/latex/contrib/semproc/README.txt
new file mode 100644
index 0000000000..ed7b4722f9
--- /dev/null
+++ b/macros/latex/contrib/semproc/README.txt
@@ -0,0 +1,14 @@
+----------------------------------------------------------------
+semproc --- LaTeX class for seminar proceedings
+E-mail: tobias.columbus@kit.edu
+Released under the LaTeX Project Public License v1.3c or later
+See http://www.latex-project.org/lppl.txt
+----------------------------------------------------------------
+
+This class provides some means for typesetting seminar proceedings based on
+KOMA-Script's scrreprt class and etoc: It offers an alternative to \chapter that
+typesets the speaker and if necessary the typist of the notes for the talk in
+question. Moreover, the class provides two types of table of contents. A global
+table of contents showing only the talks of the seminar and the respective
+speakers and a local table of contents for each talk showing the sections and
+subsections of the respective talk.
diff --git a/macros/latex/contrib/semproc/semproc.dtx b/macros/latex/contrib/semproc/semproc.dtx
new file mode 100644
index 0000000000..073eb0768e
--- /dev/null
+++ b/macros/latex/contrib/semproc/semproc.dtx
@@ -0,0 +1,740 @@
+% \iffalse meta-comment
+% !TEX program = pdfLaTeX
+%
+%<*internal>
+\iffalse
+%</internal>
+%
+%<*exampletex>
+\documentclass[a4paper,openright,parskip=half-]{semproc}
+\addglobalbib{example.bib}
+\usepackage[ngerman,english]{babel}
+\begin{document}
+\author{Max Mustermann}
+\title{Example}
+\maketitle
+\globaltoc
+\chapter{Introduction}
+This document serves as an example for the \verb|semproc| class.
+
+The reader should note that this introduction, which is typeset as a
+\verb|\chapter| shows up in the table of contents. However, the numbering scheme
+of talks and chapters is confusing at best. \verb|semproc| therefore offers a
+macro \verb|\nonumchapter| for unnumbered chapters that show up in the table of
+contents and may be used e.\,g.\ for introductions as in the following second
+introduction.
+
+\nonumchapter{Second Introduction}
+This is a second introduction with no number but still showing up in the table
+of contents.
+
+\talk[speaker={Donald Knuth}]{Notation}
+\begin{summary}
+ This could be a manuscript for a talk entitled ``Notation'' given by
+ Donald Knuth at Stanford university. A video recording is available at
+ \cite{video}.
+\end{summary}
+\localtoc
+\section{Introduction}
+An introduction could go here.
+\section{Examples of Notation}
+\subsection{Notation for integrals}
+One could compare Leibniz' and Newton's notation for integrals as Knuth does in
+his talk.
+\subsection{Frege's Grundgesetze}
+Even if Knuth does not talk about the notation in \citeauthor{frege}'s
+\cite{frege}, there is even a paper~\cite{onfrege} on it.
+\section{Outlook}
+A final section with final words.
+\localbib
+
+\talk[speaker={Somebody},notes={Somebody else}]{On Something}
+\begin{summary}
+ Some Summary
+\end{summary}
+\localtoc
+\section{Section A}
+\section{Section B}
+
+\selectlanguage{ngerman}
+\talk[speaker={Hans}]{\"Uber etwas Wichtiges}
+\begin{summary}
+ Hier sieht man, dass \verb|semproc| an andere Sprachen, wie zum Beispiel
+ \verb|ngerman| angepasst werden kann. Momentan werden aber nur \verb|english|
+ und \verb|ngerman| unterstützt.
+\end{summary}
+\end{document}
+%</exampletex>
+%<*examplebib>
+@article{onfrege,
+ AUTHOR = {Green, J. J. and Rossberg, Marcus and Ebert, Philip A.},
+ TITLE = {The convenience of the typesetter; notation and typography in
+ {F}rege's {\itshape {G}rundgesetze der {A}rithmetik}},
+ JOURNAL = {Bull. Symb. Log.},
+ VOLUME = {21},
+ YEAR = {2015},
+ NUMBER = {1},
+ PAGES = {15--30},
+ ISSN = {1079-8986},
+ DOI = {10.1017/bsl.2015.5},
+}
+@book {frege,
+ AUTHOR = {Frege, G.},
+ TITLE = {Grundgesetze der {A}rithmetik. {B}and {I}, {II}},
+ PUBLISHER = {Georg Olms Verlagsbuchhandlung, Hildesheim},
+ YEAR = {1962},
+ PAGES = {Vol. I, xxxii+254 pp.; Vol. II, xvi+266},
+}
+@misc {video,
+ AUTHOR = {Donald Knuth},
+ TITLE = {Notation},
+ URL = {https://goo.gl/f122V5}
+}
+%</examplebib>
+%<*readme>
+----------------------------------------------------------------
+semproc --- LaTeX class for seminar proceedings
+E-mail: tobias.columbus@kit.edu
+Released under the LaTeX Project Public License v1.3c or later
+See http://www.latex-project.org/lppl.txt
+----------------------------------------------------------------
+
+This class provides some means for typesetting seminar proceedings based on
+KOMA-Script's scrreprt class and etoc: It offers an alternative to \chapter that
+typesets the speaker and if necessary the typist of the notes for the talk in
+question. Moreover, the class provides two types of table of contents. A global
+table of contents showing only the talks of the seminar and the respective
+speakers and a local table of contents for each talk showing the sections and
+subsections of the respective talk.
+%</readme>
+%
+%<*internal>
+\fi
+\def\nameofplainTeX{plain}
+\ifx\fmtname\nameofplainTeX\else
+ \expandafter\begingroup
+\fi
+%</internal>
+%
+%<*install>
+\input docstrip.tex
+\keepsilent
+\askforoverwritefalse
+\preamble
+----------------------------------------------------------------
+semproc --- LaTeX class for seminar proceedings
+E-mail: tobias.columbus@kit.edu
+Released under the LaTeX Project Public License v1.3c or later
+See http://www.latex-project.org/lppl.txt
+----------------------------------------------------------------
+
+\endpreamble
+\postamble
+
+Copyright (C) 2015 by Tobias Columbus <tobias.columbus@kit.edu>
+
+This work may be distributed and/or modified under the
+conditions of the LaTeX Project Public License (LPPL), either
+version 1.3c of this license or (at your option) any later
+version. The latest version of this license is in the file:
+
+http://www.latex-project.org/lppl.txt
+
+This work is "maintained" (as per LPPL maintenance status) by
+Tobias Columbus.
+
+This work consists of the files semproc.dtx
+and the derived files semproc.ins,
+ semproc.pdf,
+ semproc.cls,
+ example.tex,
+ example.bib,
+ example.pdf
+
+\endpostamble
+\usedir{tex/latex/semproc}
+\generate{
+ \file{\jobname.cls}{\from{\jobname.dtx}{class}}
+}
+%</install>
+%<install>\endbatchfile
+%
+%<*internal>
+\usedir{source/latex/semproc}
+\generate{
+ \file{\jobname.ins}{\from{\jobname.dtx}{install}}
+}
+\generate{
+ \file{example.tex}{\from{\jobname.dtx}{exampletex}}
+}
+\generate{
+ \file{example.bib}{\from{\jobname.dtx}{examplebib}}
+}
+\nopreamble\nopostamble
+\usedir{doc/latex/semproc}
+\generate{
+ \file{README.txt}{\from{\jobname.dtx}{readme}}
+}
+\ifx\fmtname\nameofplainTeX
+ \expandafter\endbatchfile
+\else
+ \expandafter\endgroup
+\fi
+%</internal>
+%
+%<*driver>
+\ProvidesFile{\jobname.dtx}
+%</driver>
+%<class>\NeedsTeXFormat{LaTeX2e}
+%<class>\ProvidesClass{semproc}
+%<*class>
+ [2015/06/15 v0.1 LaTeX class for seminar proceedings]
+%</class>
+%
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage[T1]{fontenc}
+\usepackage{lmodern}
+\usepackage[numbered]{hypdoc}
+\usepackage{listings}
+\usepackage{xcolor}
+\usepackage{tabularx}
+\parindent=0em
+\parskip=0.5ex
+\lstset{
+ basicstyle=\small\ttfamily,
+ language=[LaTeX]TeX,
+}
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\begin{document}
+ \DocInput{\jobname.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+%\GetFileInfo{\jobname.dtx}
+%
+%\title{
+% \textsf{semproc} --- LaTeX class for seminar proceedings\thanks{
+% This file describes version \fileversion, last revised \filedate.
+% }
+%}
+%\author{
+% Tobias Columbus\thanks{E-mail: tobias.columbus@kit.edu}
+%}
+%\date{Released \filedate}
+%
+%\maketitle
+%
+%\changes{v0.1}{2015/06/15}{First public release}
+%
+% \section{Documentation}
+% The class |semproc| is derived from KOMA-Script's class |scrreprt|. In
+% addition to |scrreprt|'s many features, it provides |\talk| as an alternative
+% to the |\chapter| command and some means to have a table of contents and a
+% bibliography for each such |\talk|. Currently, |semproc| supports German and
+% English.
+%
+% \subsection{Macros}
+%
+% \DescribeMacro{\talk} |\talk| \oarg{speaker=\{Speaker\},notes=\{Typist\}}
+% \marg{title} starts a new talk with title \meta{title}, speaker \meta{Speaker}
+% and typist \meta{Typist}. The |\talk| macro also starts a new
+% |biblatex|-refsection.
+%
+% \DescribeMacro{\globaltoc} |\globaltoc| typesets a global table of contents
+% consisting of the various talks and its speakers.
+%
+% \DescribeMacro{\localtoc} |\localtoc| typesets a local table of contents
+% consisting of the sections and subsections in the current talk.
+%
+%
+% \DescribeMacro{\localbib} |\localbib| typesets a bibliography for the current
+% talk.
+%
+% \DescribeMacro{\nonumchapter} |\nonumchapter| \marg{title} starts a new
+% unnumbered |\chapter*| with \meta{title} but makes sure the chapter occurs in
+% the global table of contents. More precisely, |\nonumchapter| is just a
+% wrapper around |\chapter*| and |\etoctoccontentsline*|.
+%
+% \subsection{Environments}
+%
+% \DescribeEnv{summary} The |summary| environment is a drop-in
+% replacement for the |abstract| environment.
+%
+% \subsection{Customization}
+% |semproc| allows for customization of the fonts used in the heading of a talk
+% and in the local and global table of contents. The fonts may be customized
+% with |\setkomafont| or |\addtokomafont| as described in the documentation of
+% KOMA-Script. All fonts are shown in table~\ref{table:fonts}.
+% \begin{table}
+% \begin{tabularx}{\textwidth}{lXX}
+% Font & Usage & Default \\\hline
+% talkhead & Font of the head of a talk heading, i.\,e.\ the line
+% ``Talk~3''. & |\usekomafont{disposition}| |\usekomafont{section}| \\
+% talktitle & Font of the title of a talk &
+% |\usekomafont{disposition}| |\usekomafont{chapter}| \\
+% talkspeakers & Font of the speaker and typist of a talk &
+% |\usekomafont{disposition}| \\\\
+% globaltocspeaker & Speaker in an entry in the global table of contents &
+% |\sffamily| \\
+% globaltocnumber& Number of an entry in the global table of contents &
+% |\usekomafont{disposition}| \\
+% globaltoctitle& Title of an entry in the global table of contents &
+% |\usekomafont{disposition}| \\
+% globaltocpage& Page number of an entry in the global table of contents &
+% |\usekomafont{disposition}| \\\\
+% localtocheading & Heading of the local table of contents
+% typeset with |\localtoc| & |\usekomafont{disposition}| \\
+% localtocnumber & Number of an entry in the local table of contents &
+% |\sffamily| \\
+% localtoctitle& Title of an entry in the local table of contents &
+% |\sffamily| \\
+% localtocpage & Page number of an entry in the local table of contents &
+% |\sffamily| \\\\
+% summaryheading & Font for the heading of a |summary| environment &
+% |\usekomafont{disposition}|
+% \end{tabularx}
+% \caption{Fonts that can be customized.}\label{table:fonts}
+% \end{table}
+%
+% \subsection{Packages}
+% |semproc| loads the following packages: |xkeyval|, |xcolor| |etoc|,
+% |hyperref|, |bookmark|, |etoolbox|, |biblatex| and |csquotes|. Moreover, it
+% passes the option |dvipsnames| to the package |xcolor|, which is loaded
+% automatically by hyperref. For the precise arguments to these packages, the
+% reader is referred to the implementation.
+%
+% Note however, that bibliographies should be typeset using |biblatex| as
+% opposed to |bibtex|.
+%
+% \subsection{Example}
+% An example can be found in the file |example.tex|.
+%
+%\StopEventually{
+% \PrintChanges
+% \PrintIndex
+%}
+%
+%
+% \section{Implementation}
+% \begin{macrocode}
+%<*class>
+% \end{macrocode}
+%
+%\begin{macro}{scrreprt}
+% Load |scrreprt| and pass all options to |scrreprt|.
+% \begin{macrocode}
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{scrreprt}}
+\ProcessOptions\relax
+\LoadClass{scrreprt}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{Packages}
+% We load |xkeyval| for processing the names of the speaker/typist of each talk.
+% \begin{macrocode}
+\RequirePackage{xkeyval}
+% \end{macrocode}
+% We load |xcolor| and pass option |dvipsnames| as we set |RoyalBlue| as default
+% colour for all links.
+% \begin{macrocode}
+\PassOptionsToPackage{dvipsnames}{xcolor}
+\RequirePackage{xcolor}
+% \end{macrocode}
+% We load |etoc| for creating the macros for the local table of contents per
+% talk and the global table of contents.
+% \begin{macrocode}
+\RequirePackage{etoc}
+% \end{macrocode}
+% We load |hyperref| for references. Option |hypertexnames| must be set to
+% |false|, otherwise referencing the talks is buggy -- at least the last time I
+% tried.
+% \begin{macrocode}
+\RequirePackage%
+ [unicode=true,colorlinks=true,hypertexnames=false]
+ {hyperref}
+\RequirePackage{bookmark}
+\hypersetup{allcolors={RoyalBlue}}
+% \end{macrocode}
+% We load |etoolbox| for |\ifdefvoid| used in |\semproc@talk@head|.
+% \begin{macrocode}
+\RequirePackage{etoolbox}
+% \end{macrocode}
+% We load |biblatex| for managing bibliographies per talk via refsections and
+% |csquotes| as it is recommended by |biblatex|.
+% \begin{macrocode}
+\RequirePackage{biblatex}
+\RequirePackage{csquotes}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{Internationalization}
+% Using |\providecaptionname| of KOMA-Script, we define language dependent
+% strings. Currently only German and English are supported.
+%
+% We first define the german variants:
+% \begin{macrocode}
+\providecaptionname{german,ngerman}%
+ {\talkname}{Vortrag}
+\providecaptionname{german,ngerman}%
+ {\notesname}{Notizen von}
+\providecaptionname{german,ngerman}%
+ {\nospeakername}{Kein Vortragender}
+\providecaptionname{german,ngerman}%
+ {\localtocheadingname}{Inhalt}
+\providecaptionname{german,ngerman}%
+ {\summaryname}{Zusammenfassung}
+% \end{macrocode}
+% Next, we define the english variants:
+% \begin{macrocode}
+\providecaptionname{USenglish,UKenglish,english}%
+ {\talkname}{Talk}
+\providecaptionname{USenglish,UKenglish,english}%
+ {\notesname}{Notes by}
+\providecaptionname{USenglish,UKenglish,english}%
+ {\nospeakername}{No speaker}
+\providecaptionname{USenglish,UKenglish,english}%
+ {\localtocheadingname}{Contents}
+\providecaptionname{USenglish,UKenglish,english}%
+ {\summaryname}{Abstract}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{Fonts}
+% Using KOMA-Script's |\newkomafont|, we define various fonts that we use in
+% this class. First, we define the fonts |talkhead|, |talktitle| and
+% |talkspeakers|, which are used for the heading, i.e.\ the line ``Talk 1'',
+% title and speakers/typists of the respective talk.
+% \begin{macrocode}
+\newkomafont{talkhead}
+ {\usekomafont{disposition}\usekomafont{section}}
+\newkomafont{talktitle}
+ {\usekomafont{disposition}\usekomafont{chapter}}
+\newkomafont{talkspeakers}
+ {\usekomafont{disposition}}
+% \end{macrocode}
+% Next, we define the fonts |globaltocspeaker|, |globaltocnumber|,
+% |globaltocpage| and |globaltoctitle|, which are used for the speaker, number,
+% page and title of the talk in the global table of contents.
+% \begin{macrocode}
+\newkomafont{globaltocspeaker}
+ {\sffamily}
+\newkomafont{globaltocnumber}
+ {\usekomafont{disposition}}
+\newkomafont{globaltocpage}
+ {\usekomafont{disposition}}
+\newkomafont{globaltoctitle}
+ {\usekomafont{disposition}}
+% \end{macrocode}
+% Similarly, we define the fonts |localtocnumber|, |localtocpage|,
+% |localtoctitle| for the local table of contents. Additionally, we define
+% |localtocheading|, which is the font of the heading of the local table of
+% contents.
+% \begin{macrocode}
+\newkomafont{localtocheading}
+ {\usekomafont{disposition}}
+\newkomafont{localtocnumber}
+ {\sffamily}
+\newkomafont{localtocpage}
+ {\sffamily}
+\newkomafont{localtoctitle}
+ {\sffamily}
+% \end{macrocode}
+% Finally, we define the font |summaryheading|, which is the font of the heading
+% of the |summary| environment also defined in this class.
+% \begin{macrocode}
+\newkomafont{summaryheading}
+ {\usekomafont{disposition}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\nonumchapter}
+% |\nonumchapter|\marg{title} is a thin wrapper around |\chapter*| and
+% |\etoctoccontentsline*|.
+% \begin{macrocode}
+\newcommand{\nonumchapter}[1]{%
+ \chapter*{#1}%
+ \etoctoccontentsline*{chapter}{#1}{0}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{Talk counter}
+% A new counter for the talks.
+% \begin{macrocode}
+\newcounter{talk}
+\setcounter{talk}{0}
+% \end{macrocode}
+% Compatibility with autoref.
+% \begin{macrocode}
+\def\talkautorefname{\talkname}
+% \end{macrocode}
+% We let sections be numbered within the talk, equations within the section and
+% without referring to the chapter. The latter is achieved by redefining
+% |\thesection| and |\theHsection| for hyperref.
+% \begin{macrocode}
+\@addtoreset{section}{talk}
+\@addtoreset{equation}{section}
+\renewcommand\thesection{\arabic{section}}
+\renewcommand\theHsection{\arabic{section}}
+\renewcommand\theequation{\thesection.\arabic{equation}}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\semproc@talk@head}
+% The macro |\semproc@talk@head|\marg{title} typesets the heading of the talk
+% with the given title. The counter |talk| has to be incremented and the values
+% of |\semproc@talk@speaker| and |\semproc@talk@notes| have to be set before
+% calling |\semproc@talk@head|.
+% \begin{macrocode}
+\newcommand{\semproc@talk@head}[1]{%
+ {\noindent\usekomafont{talkhead}\talkname~\thetalk}%
+ {\par\nobreak\vskip2ex}%
+ {\usekomafont{talktitle}\noindent#1}
+ \vskip1ex\noindent\hrulefill\vskip1ex
+ {
+ \usekomafont{talkspeakers}
+ \noindent\semproc@talk@speaker%
+ \ifdefvoid{\semproc@talk@notes}{}{%
+ \hfill{\notesname~\semproc@talk@notes}%
+ }
+ \par\nobreak%
+ }%
+ \vskip 3.5ex
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\talk}
+% The main macro of this class is |\talk| \oarg{speaker={Speaker},
+% notes={Notes}} \marg{title} intended to replace |\chapter|. We first prepare
+% the optional key/value options.
+% \begin{macrocode}
+\define@key{talk}{speaker}%
+ [\nospeakername]%
+ {\def\semproc@talk@speaker{#1}}
+\define@key{talk}{notes}%
+ []%
+ {\def\semproc@talk@notes{#1}}
+% \end{macrocode}
+% The macro |\talk| parses the key/value options, increments the counter |talk|
+% and calls |\semproc@talk@head| for typesetting the heading. Finally, it starts
+% a new |biblatex| refsection and writes all the data to the |.aux| file via
+% |etoc|'s |\etoccontentsline| macro. The |\@currentlabelname| is set for
+% correct references.
+% \begin{macrocode}
+\newcommand*\talk[2][\empty]{%
+ \presetkeys{talk}{speaker,notes}{}%
+ \setkeys{talk}{#1}%
+ \refstepcounter{talk}%
+ \cleardoubleoddplainpage%
+ \thispagestyle{\chapterpagestyle}%
+ \semproc@talk@head{#2}
+ \renewcommand\@currentlabelname{#2}
+ \newrefsection%
+ \etoctoccontentsline*{talk}%
+ {\protect\numberline{\thetalk}#2}{0}
+ \etoctoccontentsline{speaker}%
+ {\protect\numberline{}\semproc@talk@speaker}
+ \renewcommand\@currentlabelname{#2}
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{Various lengths and a box}
+% Lengths for typesetting the local and global tables of contents.
+% \begin{macrocode}
+\newlength{\semproc@toc@skip}
+\setlength{\semproc@toc@skip}{4em}
+\newlength{\semproc@toc@calc}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\semproc@toc@skipafter}
+% |\semproc@toc@skipafter| \marg{style} typesets |\etocnumber| with the chosen
+% \meta{style} and then skips the difference of |\semproc@toc@skip| and the
+% width of |\etocnumber|.
+% \begin{macrocode}
+\newcommand\semproc@toc@skipafter[1]{%
+ \settowidth{\semproc@toc@calc}%
+ {#1\etocthenumber}%
+ \addtolength{\semproc@toc@calc}%
+ {-\semproc@toc@skip}%
+ \setlength{\semproc@toc@calc}%
+ {-\semproc@toc@calc}%
+ \noindent{#1\etocnumber}%
+ \hskip\semproc@toc@calc%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\globaltoc}
+% |\globaltoc| prints out a global table of contents showing only the talks and
+% the respective speakers/typists.
+% \begin{macrocode}
+\newcommand{\globaltoc}{%
+ \begingroup
+ \etocsetnexttocdepth{1}
+ \etocsetlevel{speaker}{1}
+ \etocsetlevel{section}{2}
+ \etocsetlevel{talk}{0}
+ \etocsetlevel{chapter}{0}
+% \end{macrocode}
+% The speaker is written below the title of the talk with
+% |\semproc@toc@skip| indentation and font |globaltocspeaker|.
+% \begin{macrocode}
+ \etocsetstyle{speaker}
+ {}
+ {}
+ {%
+ \hskip\semproc@toc@skip%
+ {\usekomafont{globaltocspeaker}\etocthename}%
+ \nobreak\hfill\nobreak\par%
+ }
+ {}
+% \end{macrocode}
+% Before each talk entry in the global table of contents, we have a vertical
+% skip of |1ex|. Then, the number of the talk is written left-aligned and the
+% title of the talk is written on the same line with indentation
+% |\semproc@toc@skip|.
+% \begin{macrocode}
+ \etocsetstyle{talk}
+ {}
+ {\vskip1ex\leavevmode\relax}
+ {%
+ \semproc@toc@skipafter{\usekomafont{globaltocnumber}}%
+ {%
+ \usekomafont{globaltoctitle}%
+ \etocname%
+ }%
+ \nobreak%
+ \leaders\hbox to .3cm{\hss.}\hfill%
+ \nobreak%
+ \makebox[1cm][r]{%
+ \usekomafont{globaltocpage}%
+ \hss\etocpage%
+ }\par%
+ }
+ {}
+ \tableofcontents
+ \endgroup
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\localtoc}
+% |\localtoc| prints out a local table of contents consisting only of the
+% sections and subsections in the current talk.
+% \begin{macrocode}
+\newcommand{\localtoc}{%
+ \begingroup
+ \let\parskip@old%
+ \parskip\parskip0ex%
+ \etocsetnexttocdepth{2}
+ \etocsetlevel{section}{1}
+ \etocsetlevel{subsection}{2}
+ \etocsetlevel{talk}{-2}
+ \etocsetlevel{speaker}{-2}
+ \etocsetlevel{chapter}{-2}
+% \end{macrocode}
+% Every section except the first one has a |\vskip| of |1ex| before it is
+% typeset. Then, sections are written with |\semproc@toc@skip| indentation.
+% \begin{macrocode}
+ \etocsetstyle{section}
+ {}
+ {%
+ \ifthenelse{\equal{\etocthenumber}{1}}%
+ {}%
+ {\vskip1ex}%
+ }
+ {%
+ \semproc@toc@skipafter{%
+ \usekomafont{localtocnumber}%
+ }%
+ {%
+ \usekomafont{localtoctitle}%
+ \etocname%
+ }%
+ \nobreak%
+ \leaders\hbox to .3cm{\hss.}\hfill%
+ \nobreak%
+ \makebox[1cm][r]{%
+ \usekomafont{localtocpage}%
+ \hss\etocpage%
+ }\vskip0.5ex%
+ }
+ {}
+% \end{macrocode}
+% Subsections are written with |\semproc@toc@skip| indentation and no additional
+% vertical space.
+% \begin{macrocode}
+ \etocsetstyle{subsection}
+ {}
+ {}
+ {%
+ \semproc@toc@skipafter{%
+ \usekomafont{localtocnumber}%
+ }%
+ {%
+ \usekomafont{localtoctitle}%
+ \etocname
+ }%
+ \nobreak%
+ \leaders\hbox to .3cm{\hss.}\hfill%
+ \nobreak%
+ \makebox[1cm][r]{%
+ \usekomafont{localtocpage}%
+ \hss\etocpage%
+ }\vskip0.5ex%
+ }
+ {}
+% \end{macrocode}
+% Finally, we define the heading of the table of contents and typeset it.
+% \begin{macrocode}
+ \etocsettocstyle{%
+ \centerline{%
+ \usekomafont{localtocheading}%
+ \localtocheadingname%
+ }
+ }{}
+ \localtableofcontents
+ \parskip\parskip@old
+ \endgroup
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{environment}{summary}
+% Instead of using the |abstract| environment, we define a |summary| environment
+% to be used for each talk.
+% \begin{macrocode}
+\newenvironment{summary}
+ {%
+ \centerline{%
+ \usekomafont{summaryheading}%
+ \summaryname%
+ }%
+ \let\parindent@old\parindent\parindent0em%
+ }{%
+ \parindent\parindent@old\vskip3.5ex%
+ }
+% \end{macrocode}
+%\end{environment}
+%
+%\begin{macro}{\localbib}
+% \begin{macrocode}
+\newcommand{\localbib}{%
+ \printbibliography[heading=subbibliography]%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% \begin{macrocode}
+%</class>
+% \end{macrocode}
+%\Finale
diff --git a/macros/latex/contrib/semproc/semproc.pdf b/macros/latex/contrib/semproc/semproc.pdf
new file mode 100644
index 0000000000..1c5690046a
--- /dev/null
+++ b/macros/latex/contrib/semproc/semproc.pdf
Binary files differ