summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/stex/mikoslides/mikoslides.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/stex/mikoslides/mikoslides.dtx')
-rw-r--r--Master/texmf-dist/source/latex/stex/mikoslides/mikoslides.dtx811
1 files changed, 460 insertions, 351 deletions
diff --git a/Master/texmf-dist/source/latex/stex/mikoslides/mikoslides.dtx b/Master/texmf-dist/source/latex/stex/mikoslides/mikoslides.dtx
index 0384b64b182..7d8d226146c 100644
--- a/Master/texmf-dist/source/latex/stex/mikoslides/mikoslides.dtx
+++ b/Master/texmf-dist/source/latex/stex/mikoslides/mikoslides.dtx
@@ -4,41 +4,52 @@
% this file is released under the
% Gnu Library Public Licences (LGPL)
%
-% The development version of this file can be found at
-% https://svn.kwarc.info/repos/kwarc/projects/stex/sty/mikoslides.dtx
+% The original of this file is in the public repository at
+% http://github.com/KWARC/sTeX/
% \fi
%
% \iffalse
-%<cls>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
-%<cls>\ProvidesClass{mikoslides}[2012/01/28 v0.9 Jacobs slides]
+%<cls|package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
+%<cls>\ProvidesClass{mikoslides}[2016/04/07 v1.1 Jacobs slides Class]
+%<package>\ProvidesPackage{mikoslides}[2016/04/07 v1.1 Jacobs slides Package]
%
%<*driver>
\documentclass{ltxdoc}
-\usepackage{url,array,float}
+\usepackage{url,array,float,xspace}
\usepackage[show]{ed}
\usepackage{graphicx}
\usepackage[hyperref=auto,style=alphabetic]{biblatex}
-\bibliography{kwarc}
+\addbibresource{kwarcpubs.bib}
+\addbibresource{extpubs.bib}
+\addbibresource{kwarccrossrefs.bib}
+\addbibresource{extcrossrefs.bib}
\makeindex
\floatstyle{boxed}
\newfloat{exfig}{thp}{lop}
\floatname{exfig}{Example}
\def\tracissue#1{\cite{sTeX:online},
- \hyperlink{http://trac.kwarc.info/sTeX/ticket/#1}{issue #1}}
+\hyperlink{http://trac.kwarc.info/sTeX/ticket/#1}{issue #1}}
\usepackage{hyperref}
\begin{document}\DocInput{mikoslides.dtx}\end{document}
%</driver>
% \fi
%
-% \CheckSum{364}
+% \CheckSum{469}
%
% \changes{v0.1}{2005/12/06}{Initial Version}
% \changes{v0.2}{2006/01/11}{course notes back on seminar}
-% \changes{v0.3}{2007/05/16}{changing to jacobs logo}
+% \changes{v0.3}{2007/05/16}{changing to Jacobs logo}
% \changes{v0.4}{2007/10/16}{re-basing the whole thing on beamer}
% \changes{v0.4}{2008/09/06}{moving line-end-comment to \texttt{omdoc.dtx}}
% \changes{v0.5}{2009/06/17}{eliminating mytwocolumns, this is better done by \texttt{beamer.cls}}
% \changes{v0.9}{2010/06/18}{this is almost done}
+% \changes{v0.9}{2012/09/17}{basic options handling for the \texttt{frame} environment in
+% notes mode}
+% \changes{v0.9}{2013/08/23}{numbered sectocframes}
+% \changes{v1.0}{2014/01/07}{adding \texttt{\textbackslash frameimage}}
+% \changes{v1.1}{2015/10/25}{Removing the old title macros (use the regular ones instead)}
+% \changes{v1.1}{2015/10/25}{reinterpreting omgroup}
+% \changes{v1.1}{2015/11/04}{moving MathHub support out to separate package}
%
% \GetFileInfo{mikoslides.cls}
% \MakeShortVerb{\|}
@@ -48,20 +59,21 @@
% \def\atwin#1#2#3{\index{#1!#2!#3}\index{#3!#2 (#1)}}
% \def\atwintoo#1#2#3{{#1 #2 #3}\atwin{#1}{#2}{#3}}
%
-%\def\scsys#1{{{\sc #1}}\index{#1@{\sc #1}}}
+% \def\scsys#1{{{\sc #1}}\index{#1@{\sc #1}}}
% \def\stex{\hbox{\raisebox{-.5ex}S\kern-.5ex\TeX}}
% \def\sTeX{\stex}
% \def\cnxml{\scshape{CNXml}}
% \def\connexions{\scshape{Connexions}}
% \def\element#1{{\ttfamily{#1}}}
% \def\snippet#1{{\ttfamily{#1}}}
-% \def\cnxlatex{CNX\LaTeX}
-% \def\mathml{{\scshape{MathML}}}
-% \def\latexml{\hbox{{\LaTeX}ML}}
-% \def\omdoc{OMDoc}
-% \def\activemath{{\scshape{ActiveMath}}}
+% \def\cnxlatex{CNX\LaTeX\xspace}
+% \def\mathml{{\scshape{MathML}}\xspace}
+% \def\latexml{\hbox{{\LaTeX}ML}\xspace}
+% \def\omdoc{OMDoc\xspace}
+% \def\activemath{{\scshape{ActiveMath}}\xspace}
+% \def\textwarning{\includegraphics[width=1.2em]{dangerous-bend}\xspace}
%
-% \title{Slides and Course Notes for Jacobs University\thanks{Version {\fileversion}
+% \title{Slides and Course Notes\thanks{Version {\fileversion}
% (last revised {\filedate})}}
% \author{Michael Kohlhase\\
% Jacobs University, Bremen\\
@@ -70,37 +82,101 @@
%
% \begin{abstract}
% We present a document class from which we can generate both course slides and course
-% notes in a transparent way. Furthermore, we present a set of {\latexml} bindings for
-% these, so that we can also generate {\omdoc}-based course materials, e.g. for
-% inclusion in the {\activemath} system.
+% notes in a transparent way.
% \end{abstract}
+%
% \tableofcontents\newpage
+%
%\section{Introduction}
-% This Document class is derived from |beamer.cls|, specializes it with Jacobs stuff and
-% adds a notes version that is more suited to printing than the one supplied by
-% |beamer.cls|.
+%
+% This Document class is derived from |beamer.cls|~\cite{beamerclass:on}, specializes it
+% with a simple theme (Jacobs as a default) and adds a ``notes version'' for course notes
+% derived from the |omdoc| class~\cite{Kohlhase:smomdl} that is more suited to printing
+% than the one supplied by |beamer.cls|.
+%
%
%\section{The User Interface}\label{sec:user}
%
+% The |mikoslides| class takes the notion of a slide frame from Till Tantau's excellent
+% |beamer| class and adapts its notion of frames for use in the \sTeX and \omdoc. To
+% support semantic course notes, it extends the notion of mixing frames and explanatory
+% text, but rather than treating the frames as images (or integrating their contents into
+% the flowing text), the |mikoslides| package displays the slides as such in the course
+% notes to give students a visual anchor into the slide presentation in the course (and to
+% distinguish the different writing styles in slides and course notes).
+%
+% In practice we want to generate two documents from the same source: the slides for
+% presentation in the lecture and the course notes as a narrative document for home
+% study. To achieve this, the |mikoslides| class has two modes: \emph{slides mode} and
+% \emph{notes mode} which are determined by the package option.
+%
% \subsection{Package Options}\label{sec:user:options}
%
% The |mikoslides| class takes a variety of class options:\ednote{leaving out noproblems
-% for the momeent until we decide what to do with it.}
+% for the moment until we decide what to do with it.}
% \begin{compactitem}
-% \item q\DescribeMacro{showmeta}|showmeta|. If this is set, then the metadata keys are shown
-% (see~\cite{Kohlhase:metakeys:ctan} for details and customization options).
% \item The options \DescribeMacro{slides}|slides|\DescribeMacro and {notes}|notes| switch
-% between slides mode and notes mode (see Section~\ref{sec:user:notesslides}).
+% between slides mode and notes mode (see Section~\ref{sec:user:notesslides}).
% \item If the option \DescribeMacro{sectocframes}|sectocframes| is given, then special
-% frames with section table of contents are producedheaders \ednote{document the functionality}
+% frames with section table of contents are produced headers \ednote{document the functionality}
+% \item \DescribeMacro{showmeta}|showmeta|. If this is set, then the metadata keys are
+% shown (see~\cite{Kohlhase:metakeys:ctan} for details and customization options).
+% \item If the option \DescribeMacro{frameimages}|frameimages| is set, then slide mode
+% also shows the |\frameimage|-generated frames.
% \end{compactitem}
%
% \subsection{Notes and Slides}\label{sec:user:notesslides}
-%
+%
+% Slides are represented with the \DescribeEnv{frame}|frame| just like in the |beamer|
+% class, see~\cite{Tantau:ugbc} for details. The |mikoslides| class adds the
+% \DescribeEnv{note}|note| environment for encapsulating the course note
+% fragments.\footnote{MK: it would be very nice, if we did not need this environment, and
+% this should be possible in principle, but not without intensive LaTeX trickery. Hints to
+% the author are welcome.}
+%
+% \textwarning Note that it is essential to start and end the |notes| environment at the
+% start of the line -- in particular, there may not be leading blanks -- else {\LaTeX}
+% becomes confused and throws error messages that are difficult to decipher.
+%
+% \begin{exfig}
+% \begin{verbatim}
+% \begin{note}
+% We start this course with ...
+% \end{note}
+%
+% \begin{frame}
+% \frametitle{The first slide}
+% ...
+% \end{frame}
+% \begin{note}
+% ... and more explanatory text
+% \end{note}
+%
+% \begin{frame}
+% \frametitle{The second slide}
+% ...
+% \end{frame}
+% ...
+% \end{verbatim}
+% \caption{A typical Course Notes File}\label{fig:notesfile}
+% \end{exfig}
+%
+% By interleaving the |frame| and |note| environments, we can build course notes as shown
+% in Figure~\ref{fig:notesfile}.
+%
+% Sometimes, we want to integrate slides as images after all -- e.g. because we already
+% have a PowerPoint presentation, to which we want to add \sTeX notes. In this case we can
+% use \DescribeMacro{\frameimage}|\frameimage[|\meta{opt}|]{|\meta{path}|}|, where
+% \meta{opt} are the options of |\includegraphics| from the |graphicx|
+% package~\cite{CarRah:tpp99} and \meta{path} is the file path (extension can be left off
+% like in |\includegraphics|).
+%
% \subsection{Header and Footer Lines}\label{sec:user:headfootlines}
%
% \subsection{Colors and Highlighting}\label{sec:user:highlighting}
-% The \DescribeMacro{\textwarning}|\textwarning| macro generates a warning sign: \includegraphics[width=1.2em]{dangerous-bend}
+% The \DescribeMacro{\textwarning}|\textwarning| macro generates a warning
+% sign: \textwarning
+%
% \subsection{Front Matter, Titles, etc}\label{sec:user:matter}
%
% \subsection{Miscellaneous}\label{sec:user:misc}
@@ -109,110 +185,104 @@
%
% In this section we document known limitations. If you want to help alleviate them,
% please feel free to contact the package author. Some of them are currently discussed in
-% the \sTeX TRAC~\cite{sTeX:online}.
+% the \sTeX GitHub repository~\cite{sTeX:github:on}.
% \begin{compactenum}
-% \item the class should be divided into concerns. \tracissue{1684}
+% \item when option |book| which uses |\pagestyle{headings}| is given and semantic macros
+% are given in the |omgroup| titles, then they sometimes are not defined by the time the
+% heading is formatted. Need to look into how the headings are made. This is a problem
+% of the underlying |omdoc| package.
% \end{compactenum}
%
% \StopEventually{\newpage\PrintIndex\newpage\PrintChanges\printbibliography}
%
%\section{The Implementation}\label{sec:impl}
%
-% The |mikoslides| package generates two files: the {\LaTeX} package (all the code between
-% {\textsf{$\langle$*package$\rangle$}} and {\textsf{$\langle$/package$\rangle$}}) and the
-% {\latexml} bindings (between {\textsf{$\langle$*ltxml$\rangle$ and
-% $\langle$/ltxml$\rangle$}}). We keep the corresponding code fragments together,
-% since the documentation applies to both of them and to prevent them from getting out of
-% sync.
+%\subsection{Class and Package Options}\label{sec:impl:init}
%
-%\subsection{Initialization and Class Options}\label{sec:impl:init}
-%
-% For the {\latexml} bindings, we make sure the right perl packages are loaded.
-%
-% \begin{macrocode}
-%<*ltxml>
-# -*- CPERL -*-
-package LaTeXML::Package::Pool;
-use strict;
-use LaTeXML::Package;
-%</ltxml>
-% \end{macrocode}
-%
-% For {\LaTeX} we define some Package Options and switches for the |mikoslides| class and activate
-% them by passing them on to |beamer.cls| the appropriate packages.
+% We define some Package Options and switches for the |mikoslides| class and activate them
+% by passing them on to |beamer.cls| and |omdoc.cls| and the |mikoslides| package.
%
% \begin{macrocode}
%<*cls>
-\DeclareOption{showmeta}{\PassOptionsToPackage{\CurrentOption}{metakeys}}
\newif\ifnotes\notesfalse
-\newif\ifsectocframes\sectocframesfalse
-\newif\ifproblems\problemstrue
+\DeclareOption{notes}{\notestrue\PassOptionsToPackage{\CurrentOption}{mikoslides}}
+\DeclareOption{slides}{\notesfalse\PassOptionsToPackage{\CurrentOption}{mikoslides}}
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{omdoc}
+ \PassOptionsToClass{\CurrentOption}{beamer}
+ \PassOptionsToPackage{\CurrentOption}{mikoslides}}
+\ProcessOptions
+%</cls>
+% \end{macrocode}
+% now we do the same for the |mikoslides| package. Note that we also have to define the
+% same switches\ednote{MK: we may think about making all of them internal}, since we might
+% use |mikoslides.sty| in a different class.
+% \begin{macrocode}
+%<*package>
+\newif\if@mikoslides@mh@\@mikoslides@mh@false
+\DeclareOption{mh}{\@mikoslides@mh@true
+ \PassOptionsToPackage{\CurrentOption}{stex}
+ \PassOptionsToPackage{\CurrentOption}{smglom}
+ \PassOptionsToPackage{\CurrentOption}{tikzinput}}
+\newif\ifnotes\notesfalse
\DeclareOption{notes}{\notestrue}
\DeclareOption{slides}{\notesfalse}
-\DeclareOption{noproblems}{\problemsfalse}
+\newif\ifsectocframes\sectocframesfalse
\DeclareOption{sectocframes}{\sectocframestrue}
-\ifnotes
-\DeclareOption*{\PassOptionsToClass{\CurrentOption}{omdoc}}
-\else
-\DeclareOption*{\PassOptionsToClass{\CurrentOption}{beamer}}
-\fi
+\newif\ifframeimages\frameimagesfalse
+\DeclareOption{frameimages}{\frameimagestrue}
+\newif\if@part\@partfalse
+\DeclareOption{report}{\@parttrue\PassOptionsToPackage{\CurrentOption}{omdoc}}
+\DeclareOption{book}{\@parttrue\PassOptionsToPackage{\CurrentOption}{omdoc}}
+\newif\ifproblems\problemstrue
+\DeclareOption{noproblems}{\problemsfalse}
+\DeclareOption*{\PassOptionsToPackage{\CurrentOption}{stex}
+ \PassOptionsToPackage{\CurrentOption}{smglom}
+ \PassOptionsToPackage{\CurrentOption}{tikzinput}}
\ProcessOptions
-%</cls>
-%<*ltxml>
-RawTeX('\newif\ifnotes\notesfalse');
-RawTeX('\newif\ifproblems\problemsfalse');
-%</ltxml>
+%</package>
% \end{macrocode}
%
-% Depending on the options, we either load the |article|-based |omdoc| or the |beamer| class. In the first
-% case, we also have to make the |beamer|-specific things available to |article| via the
-% |beamerarticle| package. We use options to avoid loading theorem-like environments,
-% since we want to use our own from the $\sTeX$ packages.
+% Depending on the options, we either load the |article|-based |omdoc| or the |beamer|
+% class. In the first case, we also have to make the |beamer|-specific things available to
+% |article| via the |beamerarticle| package. We use options to avoid loading theorem-like
+% environments, since we want to use our own from the $\sTeX$ packages. On the \latexml
+% side we just load the omdoc class and provide the |\usetheme| macro that would otherwise
+% from the the |beamer| class.
% \begin{macrocode}
%<*cls>
\ifnotes
-\LoadClass{omdoc}
-\RequirePackage{a4wide}
-\RequirePackage{marginnote}
-\RequirePackage[notheorems,noamsthm]{beamerarticle}
+ \LoadClass{omdoc}
+ \RequirePackage{a4wide}
+ \RequirePackage{marginnote}
+ \RequirePackage{mdframed}
+ \RequirePackage[notheorems,noamsthm,noxcolor]{beamerarticle}
+ \RequirePackage[bookmarks,bookmarksopen,bookmarksnumbered,breaklinks,
+ linkcolor=black,citecolor=black,urlcolor=cyan,filecolor=cyan,colorlinks]{hyperref}
\else
-\LoadClass[notheorems,noamsthm,10pt]{beamer}
-\newcounter{Item}
-\newcounter{paragraph}
-\newcounter{subparagraph}
-\newcounter{Hfootnote}
-\usetheme{Jacobs}
+ \LoadClass[notheorems,noamsthm,10pt]{beamer}
+ \newcounter{Item}
+ \newcounter{paragraph}
+ \newcounter{subparagraph}
+ \newcounter{Hfootnote}
+ \usetheme{Jacobs}
\fi
+\RequirePackage{mikoslides}
%</cls>
-%<*ltxml>
-LoadClass('omdoc');
-DefConstructor('\usetheme{}','');
-%</ltxml>
% \end{macrocode}
%
-% now, we load the remaining packages for both versions. \ednote{MK: eventually (when tikz
-% support is fully realized in \latexml) get rid of the standalone package}
+% now, we load the remaining packages for both versions.
%
% \begin{macrocode}
-%<*cls>
+%<*package>
+\if@mikoslides@mh@\RequirePackage{mikoslides-mh}\fi
\RequirePackage{stex}
-\RequirePackage{latexml}
+\RequirePackage{smglom}
+\RequirePackage{tikzinput}
\RequirePackage{amssymb}
-\RequirePackage{tikz}
-\usepgflibrary{shapes}\usetikzlibrary{arrows}
-\RequirePackage{url}
\RequirePackage{amsmath}
\RequirePackage{comment}
-\RequirePackage{standalone}
-%</cls>
-%<*ltxml>
-RequirePackage('stex');
-RequirePackage('latexml');
-RequirePackage('amssymb');
-RequirePackage('graphicx');
-RequirePackage('tikz');
-RequirePackage('amsmath');
-%</ltxml>
+\RequirePackage{textcomp}
+\RequirePackage{url}
% \end{macrocode}
%
% \subsection{Notes and Slides}\label{sec:impl:noteslides}
@@ -221,145 +291,202 @@ RequirePackage('amsmath');
% here.
%
% \begin{macrocode}
-%<*cls>
\newcounter{slide}
-\newlength{\slidewidth}\setlength{\slidewidth}{13.5cm}
+\newlength{\slidewidth}\setlength{\slidewidth}{12.8cm}
\newlength{\slideheight}\setlength{\slideheight}{9cm}
-%</cls>
-%<*ltxml>
-DefRegister('\slidewidth' => Dimension('13.5cm'));
-DefRegister('\slideheight' => Dimension('9cm'));
-%</ltxml>
% \end{macrocode}
%
-% For course notes, we define the |note| environment to be a no-operation otherwise we declare the |note| environment as
-% a comment via the |comment| package.
-%
% \begin{environment}{note}
+% The |note| environment is used to leave out text in the |slides| mode. It does not have
+% a counterpart in OMDoc. So for course notes, we define the |note| environment to be a
+% no-operation otherwise we declare the |note| environment as a comment via the |comment|
+% package.
% \begin{macrocode}
-%<*cls>
-\ifnotes\renewenvironment{note}{}{}\else\excludecomment{note}\fi
-%</cls>
-%<*ltxml>
-DefEnvironment('{note}','#body');
-%</ltxml>
+\ifnotes%
+ \renewenvironment{note}{\ignorespaces}{}%
+\else%
+ \excludecomment{note}%
+\fi%
% \end{macrocode}
% \end{environment}
%
%
-% the next step is to set up the slide boxes in |article| mode. We set up sizes and
-% provide a box register for the frames and a counter for the slides.
+% We start by giving the {\latexml} binding for the |frame| environment from the |beamer|
+% class. We first set up the slide boxes in |article| mode. We set up sizes and provide a
+% box register for the frames and a counter for the slides.
%
% \begin{macrocode}
-%<*cls>
\ifnotes
-\newlength{\slideframewidth}\setlength{\slideframewidth}{2pt}
-\newsavebox{\myframebox}
-%</cls>
+ \newlength{\slideframewidth}
+ \setlength{\slideframewidth}{1.5pt}
% \end{macrocode}
%
% \begin{environment}{frame}
-% For the |frame| environment we construct a |lrbox| in the |\myframebox| register that
-% we can later put into an |\fbox| so that it looks like a slide. Furthermore, we
-% redefine the |itenize| environment so that it looks more like the one in |beamer| with
-% |Jacobs| theme.
+% We first define the keys.
% \begin{macrocode}
-%<*cls>
-\renewenvironment{frame}[1][]%
-{\stepcounter{slide}
-\def\itemize@level{outer}
-\def\itemize@outer{outer}
-\def\itemize@inner{inner}
-\renewcommand\metakeys@show@keys[2]{\marginnote{{\scriptsize ##2}}}
-\renewenvironment{itemize}
-{\ifx\itemize@level\itemize@outer\def\itemize@label{$\rhd$}\fi
- \ifx\itemize@level\itemize@inner\def\itemize@label{$\scriptstyle\rhd$}\fi
- \begin{list}
- {\itemize@label}
- {\setlength{\labelsep}{.3em}\setlength{\labelwidth}{.5em}\setlength{\leftmargin}{1.5em}}
- \edef\itemize@level{\itemize@inner}}
-{\end{list}}
- \noindent\hfill\begin{lrbox}{\myframebox}
- \begin{minipage}{\slidewidth}\sf}%
- {\miko@slidelabel\end{minipage}\end{lrbox}%
- \begin{center}\fbox{\usebox\myframebox}\end{center}\hfill}
-%</cls>
-%<*ltxml>
-DefEnvironment('{frame}[]',
- "<omdoc:omgroup layout='slide'>"
- . "#body\n"
- ."</omdoc:omgroup>\n\n",
- afterDigestBegin=>sub {
- $_[1]->setProperty(theory=>LookupValue('current_module')); });
-%</ltxml>#$
+ \addmetakey{frame}{label}
+ \addmetakey[yes]{frame}{allowframebreaks}
+ \addmetakey{frame}{allowdisplaybreaks}
+ \addmetakey[yes]{frame}{fragile}
+ \addmetakey[yes]{frame}{shrink}
+ \addmetakey[yes]{frame}{squeeze}
+% \end{macrocode}
+% We redefine the |itemize| environment so that it looks more like the one in |beamer|
+% with |Jacobs| theme. We create the box with the |mdframed| environment from the
+% equinymous package.
+% Then we define the environment, read them, and construct the slide number and label.
+% \begin{macrocode}
+ \renewenvironment{frame}[1][]{%
+ \metasetkeys{frame}{#1}%
+ \stepcounter{slide}%
+ \def\@currentlabel{\theslide}%
+ \ifx\frame@label\@empty%
+ \else%
+ \label{\frame@label}%
+ \fi%
+% \end{macrocode}
+% We redefine the |itemize| environment so that it looks more like the one in |beamer|
+% with |Jacobs| theme.
+% \begin{macrocode}
+ \def\itemize@level{outer}%
+ \def\itemize@outer{outer}%
+ \def\itemize@inner{inner}%
+ \renewcommand\newpage{}%
+ \renewcommand\metakeys@show@keys[2]{\marginnote{{\scriptsize ##2}}}%
+ \renewenvironment{itemize}{%
+ \ifx\itemize@level\itemize@outer%
+ \def\itemize@label{$\rhd$}%
+ \fi%
+ \ifx\itemize@level\itemize@inner%
+ \def\itemize@label{$\scriptstyle\rhd$}%
+ \fi%
+ \begin{list}%
+ {\itemize@label}%
+ {\setlength{\labelsep}{.3em}%
+ \setlength{\labelwidth}{.5em}%
+ \setlength{\leftmargin}{1.5em}%
+ }%
+ \edef\itemize@level{\itemize@inner}%
+ }{%
+ \end{list}%
+ }%
+% \end{macrocode}
+% We create the box with the |mdframed| environment from the equinymous package.
+% \begin{macrocode}
+ \begin{mdframed}[linewidth=\slideframewidth,skipabove=1ex,skipbelow=1ex,userdefinedwidth=\slidewidth,align=center]\sf%
+ }{%
+ \medskip\miko@slidelabel\end{mdframed}%
+ }%
% \end{macrocode}
% \end{environment}
%
-% the next step is to set up the slide boxes in |article| mode.
-%
+% Now, we need to redefine the frametitle (we are still in course notes mode).
+% \begin{macro}{\frametitle}
% \begin{macrocode}
-%<*cls>
-\renewcommand{\frametitle}[1]{{\Large\bf\sf\color{blue}{#1}}}
-\fi
-\makeindex
-%</cls>
-%<*ltxml>
-DefConstructor('\frametitle{}',
- "\n<omdoc:metadata><dc:title>#1</dc:title></omdoc:metadata>");
-%</ltxml>
+ \renewcommand{\frametitle}[1]{{\Large\bf\sf\color{blue}{#1}}\medskip}%
+\fi %ifnotes
% \end{macrocode}
+% \end{macro}
%
-% We start by giving the {\latexml} binding for the |frame| environment from the |beamer|
-% class. The |note| environment is used to blend out text in the |slides| mode. It does
-% not have a counterpart in OMDoc.
-%
+% \begin{macro}{\frameimage}
+% We have to make sure that the width is overwritten, for that we check the
+% |\Gin@ewidth| macro from the |graphicx| package\ednote{MK@DG; we need to do that in
+% the LaTeXML binding as well!}
% \begin{macrocode}
-%<*cls>
-\ifproblems\newenvironment{problems}{}{}\else\excludecomment{problems}\fi
-%</cls>
-%<*ltxml>
-DefEnvironment('{problems}','#body');
-%</ltxml>
+\newrobustcmd\frameimage[2][]{%
+ \stepcounter{slide}%
+ \ifframeimages%
+ \def\Gin@ewidth{}\setkeys{Gin}{#1}%
+ \ifnotes%
+ \else%
+ \vfill%
+ \fi%
+ \ifx\Gin@ewidth\@empty%
+ \mycgraphics[width=\slidewidth,#1]{#2}\else\mycgraphics[#1]{#2}%
+ \fi%
+ \par\strut\hfill{\footnotesize Slide \arabic{slide}}%
+ \ifnotes%
+ \else%
+ \vfill%
+ \fi%
+ \fi%
+}% ifframeimages
% \end{macrocode}
-%\ednote{subtitle is difficult to model in DC metadata. I guess that we want to collect
-%the subtitle into dc:title}
-%
+% \end{macro}
+%
% \subsection{Header and Footer Lines}\label{sec:impl:headfootlines}
%
% Now, we set up the infrastructure for the footer line of the slides, we use boxes for
% the logos, so that they are only loaded once, that considerably speeds up processing.
+% \begin{macro}{\setslidelogo}
+% The default logo is the logo of Jacobs University. Customization can be done by |\setslidelogo{|\meta{logo name}|}|.
% \begin{macrocode}
-%<*cls>
\newlength{\slidelogoheight}
-\ifnotes\setlength{\slidelogoheight}{.4cm}\else\setlength{\slidelogoheight}{1cm}\fi
-\newsavebox{\slidelogo}\sbox{\slidelogo}{\includegraphics[height=\slidelogoheight]{jacobs-logo}}
+\ifnotes%
+ \setlength{\slidelogoheight}{.4cm}%
+\else%
+ \setlength{\slidelogoheight}{1cm}%
+\fi%
+\newsavebox{\slidelogo}%
+\sbox{\slidelogo}{\includegraphics[height=\slidelogoheight]{jacobs-logo}}%
+\newrobustcmd{\setslidelogo}[1]{%
+ \sbox{\slidelogo}{\includegraphics[height=\slidelogoheight]{#1}}%
+}%
% \end{macrocode}
-%
-% Now, we set up the copyright and licensing, the copyright remains with the author, but
-% we use the Creative Commons Attribuition-ShareAlike license to strengthen den public
-% domain. Here the problem is that we want a hyperref on the CC logo, if hyperref is
-% loaded, and otherwise not. As hyperref is always loaded, we have to find out at the
-% beginning of the document whether it is, set up a switch, and later in the footer line
-% decide what to do.
+% \end{macro}
%
+% \begin{macro}{\setsource}
+% |\source| stores the writer's name. By default it is {\it Michael Kohlhase} since he is the main user and designer of this package. |\setsource{|\meta{name}|}| can change the writer's name.
% \begin{macrocode}
\def\source{Michael Kohlhase}% customize locally
-\def\copyrightnotice{\footnotesize\copyright:\hspace{.3ex}{\source}}
-\newsavebox{\cclogo}\sbox{\cclogo}{\includegraphics[height=\slidelogoheight]{cc_somerights}}
-\newif\ifcchref\cchreffalse
-\AtBeginDocument{\@ifpackageloaded{hyperref}{\cchreftrue}{\cchreffalse}}
-\def\licensing{\ifcchref\href{http://creativecommons.org/licenses/by-sa/2.5/}{\usebox{\cclogo}}\else{\usebox{\cclogo}}\fi}
+\newrobustcmd{\setsource}[1]{\def\source{#1}}%
% \end{macrocode}
-%
-% Now, we set up the slide label for the |article| mode\ednote{see that we can use the
-% themes for the slides some day. This is all fake.}
+% \end{macro}
+%
+% \begin{macro}{\setlicensing}
+% Now, we set up the copyright and licensing. By default we use the Creative Commons Attribuition-ShareAlike license to strengthen the public domain. If package |hyperref| is loaded, then we can attach a hyperlink to the license logo. |\setlicensing[|\meta{url}|]{|\meta{logo name}|}| is used for customization, where ||\meta{url}|| is optional.
+% \begin{macrocode}
+\def\copyrightnotice{\footnotesize\copyright:\hspace{.3ex}{\source}}%
+\newsavebox{\cclogo}%
+\sbox{\cclogo}{\includegraphics[height=\slidelogoheight]{cc_somerights}}%
+\newif\ifcchref\cchreffalse%
+\AtBeginDocument{%
+ \@ifpackageloaded{hyperref}{\cchreftrue}{\cchreffalse}
+}%
+\def\licensing{%
+ \ifcchref%
+ \href{http://creativecommons.org/licenses/by-sa/2.5/}{\usebox{\cclogo}}%
+ \else%
+ {\usebox{\cclogo}}%
+ \fi%
+}%
+\newrobustcmd{\setlicensing}[2][]{%
+ \def\@url{#1}%
+ \sbox{\cclogo}{\includegraphics[height=\slidelogoheight]{#2}}%
+ \ifx\@url\@empty%
+ \def\licensing{{\usebox{\cclogo}}}%
+ \else%
+ \def\licensing{%
+ \ifcchref%
+ \href{#1}{\usebox{\cclogo}}%
+ \else%
+ {\usebox{\cclogo}}%
+ \fi%
+ }%
+ \fi%
+}%
+% \end{macrocode}
+% \end{macro}
%
% \begin{macro}{\slidelabel}
+% Now, we set up the slide label for the |article| mode.\ednote{see that we can use the themes for the slides some day. This is all fake.}
% \begin{macrocode}
-\newcommand{\miko@slidelabel}%
-{\vbox to \slidelogoheight{\vss\hbox to \slidewidth%
-{\licensing\hfill\copyrightnotice\hfill\arabic{slide}\hfill\usebox{\slidelogo}}}}
-%</cls>
+\newrobustcmd\miko@slidelabel{%
+ \vbox to \slidelogoheight{%
+ \vss\hbox to \slidewidth%
+ {\licensing\hfill\copyrightnotice\hfill\arabic{slide}\hfill\usebox{\slidelogo}}%
+ }%
+}%
% \end{macrocode}
% \end{macro}
%
@@ -369,8 +496,10 @@ DefEnvironment('{problems}','#body');
% content-oriented macros for highlighting rather than directly using color markup.
% The first thing to to is to adapt the green so that it is dark enough for most beamers
% \begin{macrocode}
-%<*cls>
-\AtBeginDocument{\definecolor{green}{rgb}{0,.5,0}\definecolor{purple}{cmyk}{.3,1,0,.17}}
+\AtBeginDocument{%
+ \definecolor{green}{rgb}{0,.5,0}%
+ \definecolor{purple}{cmyk}{.3,1,0,.17}%
+}%
% \end{macrocode}
%
% We customize the |\defemph|, |\notemph|, and |\stDMemph| macros with colors for the use
@@ -383,194 +512,174 @@ DefEnvironment('{problems}','#body');
\def\notemph#1{{\textcolor{magenta}{#1}}}
\def\stDMemph#1{{\textcolor{blue}{#1}}}
\def\@@lec#1{(\textcolor{green}{#1})}
-%</cls>
-%<*ltxml>
-#DefMacro('\defemph{}','{\textcolor{magenta}{#1}}');
-#DefMacro('\notemph{}','{\textcolor{magenta}{#1}}');
-%</ltxml>
% \end{macrocode}
%
% I like to use the dangerous bend symbol for warnings, so we provide it here.
-% \begin{macro}{\textwarigrening}
+% \begin{macro}{\textwarning}
% as the macro can be used quite often we put it into a box register, so that it is only
% loaded once.
% \begin{macrocode}
-%<*cls>
+\pgfdeclareimage[width=.9em]{miko@small@dbend}{dangerous-bend}
+\def\smalltextwarning{%
+ \pgfuseimage{miko@small@dbend}%
+ \xspace%
+}%
\pgfdeclareimage[width=1.5em]{miko@dbend}{dangerous-bend}
-\def\textwarning{\raisebox{-.05cm}{\pgfuseimage{miko@dbend}}\xspace}
-%</cls>b
-%<*ltxml>
-DefMacro('\textwarning',"");
-%</ltxml>
+\newrobustcmd\textwarning{%
+ \raisebox{-.05cm}{\pgfuseimage{miko@dbend}}%
+ \xspace%
+}%
+\pgfdeclareimage[width=2.5em]{miko@big@dbend}{dangerous-bend}%
+\newrobustcmd\bigtextwarning{%
+ \raisebox{-.05cm}{\pgfuseimage{miko@big@dbend}}%
+ \xspace%
+}%
% \end{macrocode}
% \end{macro}
%
% \subsection{Front Matter, Titles, etc}
%
-% We need to redefine the frontmatter macros inherited from the |beamer| class, since
-% there they take an optional argument.
+% We need to redefine the frontmatter macros inherited from the |beamer| class for
+% LaTeXML, since there they take an optional argument.
% \begin{macrocode}
-%<*ltxml>
-DefMacro('\title[]{}', '\@add@frontmatter{ltx:title}{#1}');
-DefMacro('\date[]{}', '\@add@frontmatter{ltx:date}[role=creation]{#1}');
-DefMacro('\author[]{}', sub { andSplit(T_CS('\@author'),$_[1]); });#$
% \end{macrocode}
-%</ltxml>
-%
-% Now, we specialize the slide environment that we have implemented above or inherited
-% from |seminar.cls| for some abbreviations, e.g. separator slides and title slides.
% \begin{macrocode}
-%<*cls>
-\newcommand\titleframe{\begin{frame}\titlepage\end{frame}}
-\newenvironment{titleframewith}{\begin{frame}\titlepage}{\end{frame}}
-\newenvironment{ttitle}{\begin{center}\LARGE\begin{tabular}{|c|}\hline}%
- {\\\hline\end{tabular}\end{center}\vspace{1ex minus 1ex}}
-\newenvironment{ttitlejoint}[1]%
-{\newbox\boxwith\setbox\boxwith\hbox{\begin{tabular}{c}{\em joint work with}\\#1\end{tabular}}%
-\begin{center}\LARGE\begin{tabular}{c}\color{red}}%
-{\\\box\boxwith\end{tabular}\end{center}%
-\vspace{1ex minus 1ex}}
-%</cls>
-%<*ltxml>
-DefConstructor('\titleframe',"<omdoc:ignore>titleframe elided here</omdoc:ignore>");
-DefEnvironment('{titleframewith}',
- "<omdoc:ignore>begin elided titleframe</omdoc:ignore>"
- . "#body"
- ."<omdoc:ignore>end elided titleframe</omdoc:ignore>");
-DefEnvironment('{titleslide}',"");
-DefEnvironment('{titleslide}',"<omdoc:omgroup>#body</omdoc:omgroup>");
-DefEnvironment('{ttitle}', "\n<dc:title>#body</dc:title>");
-%</ltxml>
+% Must be first command on slide to make positioning work.
+\newrobustcmd\putgraphicsat[3]{%
+ \begin{picture}(0,0)\put(#1){\includegraphics[#2]{#3}}\end{picture}%
+}%
+\newrobustcmd\putat[2]{%
+ \begin{picture}(0,0)\put(#1){#2}\end{picture}%
+}%
% \end{macrocode}
%
+% \subsection{Sectioning}
+%
+% If the |sectocframes| option is set, then we make section frames. We first define a set
+% of counters
% \begin{macrocode}
-% Must be first command on slide to make positioning work.
-%<*cls>
-\newcommand{\putgraphicsat}[3]{%
- \begin{picture}(0,0)\put(#1){\includegraphics[#2]{#3}}\end{picture}}
-\newcommand{\putat}[2]{\begin{picture}(0,0)\put(#1){#2}\end{picture}}
-%</cls>
-%<*ltxml>
-%</ltxml>
+\ifsectocframes%
+ \if@part%
+ \newcounter{mpart}%
+ \newcounter{mchapter}%
+ \newcounter{msection}[mchapter]%
+ \else%
+ \newcounter{msection}%
+ \fi%
+ \newcounter{msubsection}[msection]%
+ \newcounter{msubsubsection}[msubsection]%
+ \newcounter{msubsubsubsection}[msubsubsection]%
+\fi% ifsectocframes
% \end{macrocode}
+% and then
% \begin{macrocode}
-%<*cls>
-\ifsectocframes
-%\AtBeginChapter[]{\begin{frame}<beamer>\frametitle{Chapter Outline}\tableofcontents[currentsection]\end{frame}}
-%\AtBeginSection[]{\begin{frame}<beamer>\frametitle{Section Outline}\tableofcontents[currentsection]\end{frame}}
-%\AtBeginSubsection[]{\begin{frame}<beamer>\frametitle{Subsection Outline}\tableofcontents[currentsubsection]\end{frame}}
-%\AtBeginSubsubsection[]{\begin{frame}<beamer>\frametitle{Subsubsection Outline}\tableofcontents[currentsubsubsection]\end{frame}}
-\def\at@begin@omgroup#1{\message{atbeginomgroup}\begin{frame}<beamer>\frametitle{Outline}\tableofcontents[section]\end{frame}}
-\fi
-%</cls>
+\ifnotes\else% only in slides
+ \renewenvironment{omgroup}[2][]{%
+ \metasetkeys{omgroup}{#1}\sref@target%
+ \advance\section@level by 1%
+ \ifsectocframes%
+ \begin{frame}%
+ \vfill\Large\centering%
+ \red{%
+ \ifcase\section@level\or%
+ \stepcounter{mpart}Part \Roman{mpart}\or%
+ \stepcounter{mchapter}Chapter \arabic{mchapter}\or
+ \stepcounter{msection}\if@part\arabic{mchapter}.\fi\arabic{msection}\or
+ \stepcounter{msubsection}\if@part\arabic{mchapter}.\fi\arabic{msection}.\arabic{msubsection}\or
+ \stepcounter{msubsubsection}\if@part\arabic{mchapter}.\fi\arabic{msection}.\arabic{msubsection}.\arabic{msubsubsection}.\or
+ \stepcounter{msubsubsubsection}\if@part\arabic{mchapter}.\fi\arabic{msection}.\arabic{msubsection}.\arabic{msubsubsection}.\arabic{msubsubsubsection}%
+ \fi% end ifcase
+ \quad #2%
+ }%
+ \vfill%
+ \end{frame}%
+ \fi %ifsectocframes
+ }
+ {\advance\section@level by -1}%
+\fi% ifnotes
+% \end{macrocode}
%
% \subsection{Miscellaneous}
%
-% the following macro is only to work around problems in the |tikz| support in \latexml.
+% The following fixes an error I do not understand, this has something to do with
+% beamer compatibility, which has similar definitions but only up to 1.
% \begin{macrocode}
-%<*cls>
-\newcommand\tikzinput[2][]{\input{#2}}
-%</cls>
-%<*ltxml>
-DefMacro('\tikzinput[] {}','\includegraphics[#1]{#2}');
-%</ltxml>
-% \end{macrocode}
-
-% We need to disregard the columns macros introduced by the |beamer| class
+\expandafter\def\csname Parent2\endcsname{}
% \begin{macrocode}
-%<*ltxml>
-DefEnvironment('{columns}','#body');
-DefEnvironment('{column}{}','#body');
-%</ltxml>
-% \end{macrocode}
%
-% We also need to deal with overlay specifications introduced by the |beamer|
-% class.\ednote{this is just to keep latexml quiet, no real functionality here.}
-%
-% \ednote{Deyan: We reuse the CMP itemizations defined in the omdoc.cls.ltxml binding,
-% adjusting the parameters to be overlay-sensitive }
+% We need to disregard the columns macros introduced by the |beamer| class
% \begin{macrocode}
-%<*ltxml>
-DefConstructor('\uncover','#1');
-#Define a Beamer Overlay Parameter type
- DefParameterType('BeamerOverlay', sub {
- my ($gullet) = @_;
- my $tok = $gullet->readXToken;
- if (ref $tok && ToString($tok) eq '<') {
- $gullet->readUntil(T_OTHER('>'));
- } else {
- $gullet->unread($tok) if ref $tok;
- undef; }},
- reversion=> sub {
- (T_OTHER('<'), $_[0]->revert, T_OTHER('>'));
- });
-
-#Take the "from" field of the overlay range
-sub overlayFrom {
- return "" unless defined $_[0];
- my $overlay=ToString($_[0]); $overlay =~ /^(\d+)/; $1;}
-
-#Reuse the CMP itemizations, only adjust the \item constructors.
-DefMacro('\beamer@group@item[] OptionalBeamerOverlay IfBeginFollows', sub {
- my($gullet,$tag,$overlay,$needwrapper)=@_;
- $overlay=$overlay||T_OTHER("");
- ( T_CS('\group@item@maybe@unwrap'),
- ($needwrapper ? (Invocation(T_CS('\beamer@group@item@wrap'),$tag,$overlay)->unlist) : ()) ); });
-DefConstructor('\beamer@group@item@wrap {} OptionalBeamerOverlay',
- "<omdoc:omtext ?#2(overlay='&overlayFrom(#2)')()>"
- . "?#1(<dc:title>#1</dc:title>)()"
- . "<omdoc:CMP>",
- beforeDigest=>sub {
- Let('\group@item@maybe@unwrap','\group@item@unwrap');
- #$_[0]->bgroup;
-return; },
- properties=>sub{ RefStepItemCounter(); });
-
-
-#DefConstructor('\beamer@itemize@item[] OptionalBeamerOverlay',
-# "<omdoc:li ?#2(overlay='&overlayFrom(#2)')() >"
-# . "?#1(<dc:title>#1</dc:title>)()",
-# properties=>sub{ RefStepItemCounter(); });
-DefConstructor('\beamer@enumerate@item[] OptionalBeamerOverlay',
- "<omdoc:li ?#2(overlay='&overlayFrom(#2)')() >"
- . "?#1(<dc:title>#1</dc:title>)()",
- properties=>sub{ RefStepItemCounter(); });
-DefConstructor('\beamer@description@item[] OptionalBeamerOverlay',
- "<omdoc:di ?#2(overlay='&overlayFrom(#2)')() >"
- . "?#1(<omdoc:dt>#1</omdoc:dt>)()<omdoc:dd>", # trust di and dt to autoclose
- properties=>sub{ RefStepItemCounter(); });
-%</ltxml>#$
+\ifnotes%
+ \renewenvironment{columns}{%
+ \par\noindent%
+ \begin{minipage}%
+ \slidewidth\centering\leavevmode%
+ }{%
+ \end{minipage}\par\noindent%
+ }%
+ \newsavebox\columnbox%
+ \renewenvironment{column}[1]{%
+ \begin{lrbox}{\columnbox}\begin{minipage}{#1}%
+ }{%
+ \end{minipage}\end{lrbox}\usebox\columnbox%
+ }%
+\fi%
% \end{macrocode}
% Now, some things that are imported from the |pgf| and |beamer| packages:
% \begin{macrocode}
-%<*ltxml>
-DefMacro('\putgraphicsat{}{}{}','\mygraphics[#2]{#3}');
-DefMacro('\putat{}{}','#2');
-%</ltxml>
% \end{macrocode}
%
-% \subsection{Finale}
%
-% Finally, we set the slide body font to the sans serife, and we terminate the {\latexml}
-% bindings file with a success mark for perl.
% \begin{macrocode}
-%<cls>\ifnotes\else\sf\fi
-%<ltxml>1;
+\ifproblems%
+ \newenvironment{problems}{}{}%
+\else%
+ \excludecomment{problems}%
+\fi%
+%</package>
% \end{macrocode}
% \Finale
\endinput
-
% \iffalse
%%% Local Variables:
%%% mode: doctex
%%% TeX-master: t
%%% End:
% \fi
-
-% LocalWords: mikoslides dtx beamer omdoc notheorems noamsthm beamerarticle
-% LocalWords: graphicx slidelabel stex latexml amssymb tikz url CPERL amsmath
-% LocalWords: LoadClass RequirePackage DefRegister DefEnvironment omgroup rgb
-% LocalWords: afterDigestBegin setProperty LookupValue DefConstructor hyperref
-% LocalWords: cmyk lec DefMacro titleslide ttitle RawTeX metadata etoolbox
-% LocalWords: noproblems linkcolor bookmarksopen citecolor urlcolor colorlinks
-% LocalWords: breaklinks plainpages pdfpagelabels srcref
+% LocalWords: mikoslides dtx beamer omdoc notheorems noamsthm beamerarticle sc Licences
+% LocalWords: graphicx slidelabel stex latexml amssymb tikz url CPERL amsmath filedate
+% LocalWords: LoadClass RequirePackage DefRegister DefEnvironment omgroup rgb frameimage
+% LocalWords: afterDigestBegin setProperty LookupValue DefConstructor hyperref Tantau's
+% LocalWords: cmyk lec DefMacro titleslide ttitle RawTeX metadata etoolbox cls emph ugbc
+% LocalWords: noproblems linkcolor bookmarksopen citecolor urlcolor colorlinks Tantau di
+% LocalWords: breaklinks plainpages pdfpagelabels srcref iffalse texttt atwin exfig dt
+% LocalWords: mytwocolumns twintoo atwintoo scsys sc hbox raisebox cnxml impl notesfile
+% LocalWords: scshape ttfamily cnxlatex mathml activemath fileversion newpage tpp99 dd
+% LocalWords: maketitle tableofcontents ednote compactitem showmeta showmeta beamerclass
+% LocalWords: sectocframes sectocframes textwarning textwarning compactenum eq omgroups
+% LocalWords: includegraphics tracissue printbibliography textsf langle textsf rangle
+% LocalWords: langle ltxml metakeys newif ifnotes notesfalse ifsectocframes rangle putat
+% LocalWords: sectocframesfalse ifproblems problemstrue notestrue marginnote frontmatter
+% LocalWords: problemsfalse sectocframestrue mdframed noxcolor newcounter ifx equinymous
+% LocalWords: Hfootnote usetheme tikzinput usepgflibrary usetikzlibrary rhd ignorespaces
+% LocalWords: tikzmark textcomp newlength slidewidth setlength slidewidth miko setkeys
+% LocalWords: slideheight slideheight renewenvironment excludecomment itenize Gin@ewidth
+% LocalWords: slideframewidth slideframewidth surroundwithmdframed addmetakey Gen@ewidth
+% LocalWords: allowframebreaks allowdisplaybreaks metasetkeys stepcounter sbox mpart baz
+% LocalWords: currentlabel theslide renewcommand scriptsize scriptstyle hspace mchapter
+% LocalWords: medskip linewidth skipabove skipbelow frametitle newenvironment msection
+% LocalWords: slidelogoheight newsavebox slidelogo slidelogo jacobs-logo vbox ifcase
+% LocalWords: Attribuition-ShareAlike copyrightnotice footnotesize cclogo vss minipage
+% LocalWords: cclogo somerights ifcchref cchreffalse ifpackageloaded usebox mycgraphics
+% LocalWords: cchreftrue usebox newcommand hfill hfill definecolor definecolor endinput
+% LocalWords: defemph notemph stDMemph STpresent textcolor textwarigrening ltx HorIacJuc
+% LocalWords: pgfdeclareimage dbend pgfuseimage xspace titleframe titlepage mycgraphics
+% LocalWords: titleframewith hline vspace ttitlejoint newbox boxwith boxwith msubsection
+% LocalWords: putgraphicsat beginomgroup ifnum vfill vfill noindent leavevmode cscpnrr11
+% LocalWords: columnbox lrbox needwrapper unlist omtext bgroup autoclose pgf readXToken
+% LocalWords: mygraphics doctex NeedsTeXFormat textbackslash userdefinedwidth foobar
+% LocalWords: includegrahics smalltextwarning msubsubsection msubsubsubsection ldots
+% LocalWords: frameimages frameimages ifframeimages frameimagesfalse frameimagestrue
+% LocalWords: expandafter csname endcsname specializes customization flexiformal colors
+% LocalWords: initialize Initialization defindex realized itemize newrobustcmd
+% LocalWords: specialize centering itemizations setsource setlicensing