diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/stex/sty/mikoslides/mikoslides.dtx |
Initial commit
Diffstat (limited to 'macros/latex/contrib/stex/sty/mikoslides/mikoslides.dtx')
-rw-r--r-- | macros/latex/contrib/stex/sty/mikoslides/mikoslides.dtx | 810 |
1 files changed, 810 insertions, 0 deletions
diff --git a/macros/latex/contrib/stex/sty/mikoslides/mikoslides.dtx b/macros/latex/contrib/stex/sty/mikoslides/mikoslides.dtx new file mode 100644 index 0000000000..1fc76db644 --- /dev/null +++ b/macros/latex/contrib/stex/sty/mikoslides/mikoslides.dtx @@ -0,0 +1,810 @@ +% \iffalse meta-comment +% A LaTeX Class for Jacobs University Slides +% Copyright (c) 2007 Michael Kohlhase, all rights reserved +% this file is released under the +% Gnu Library Public Licences (LGPL) +% +% The original of this file is in the public repository at +% http://github.com/KWARC/sTeX/ +% \fi +% +% \iffalse +%<cls|package>\NeedsTeXFormat{LaTeX2e}[1999/12/01] +%<cls>\ProvidesClass{mikoslides}[2019/03/20 v1.2 MiKo slides Class] +%<package>\ProvidesPackage{mikoslides}[2019/03/20 v1.2 MiKo slides Package] +% +%<*driver> +\documentclass{ltxdoc} +\usepackage[utf8]{inputenc} +\usepackage{url,array,float,xspace} +\usepackage[show]{ed} +\usepackage{graphicx,paralist} +\usepackage[hyperref=auto,style=alphabetic]{biblatex} +\addbibresource{kwarcpubs.bib} +\addbibresource{extpubs.bib} +\addbibresource{kwarccrossrefs.bib} +\addbibresource{extcrossrefs.bib} +\makeindex +\floatstyle{boxed} +\newfloat{exfig}{thp}{lop} +\floatname{exfig}{Example} +\def\githubissue#1{\cite{sTeX:github:on}, +\hyperlink{https://github.com/KWARC/sTeX/issues/#1}{issue #1}} +\usepackage{hyperref} +\begin{document} +\RecordChanges +\DocInput{mikoslides.dtx} +\end{document} +%</driver> +% \fi +% +% \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.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} +% \changes{v1.2}{2018/12/03}{changed to keyval class/package options, allowed arbitrary classes} +% +% \GetFileInfo{mikoslides.cls} +% \MakeShortVerb{\|} +% +% \def\twin#1#2{\index{#1!#2}\index{#2!#1}} +% \def\twintoo#1#2{{#1 #2}\twin{#1}{#2}} +% \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\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\xspace} +% \def\mathml{{\scshape{MathML}}\xspace} +% \def\omdoc{OMDoc\xspace} +% \def\activemath{{\scshape{ActiveMath}}\xspace} +% \def\textwarning{\includegraphics[width=1.2em]{dangerous-bend}\xspace} +% +% \title{Slides and Course Notes\thanks{Version {\fileversion} +% (last revised {\filedate})}} +% \author{Michael Kohlhase\\ +% FAU Erlangen-N\"urnberg\\ +% \url{http://kwarc.info/kohlhase}} +% \maketitle +% +% \begin{abstract} +% We present a document class from which we can generate both course slides and course +% notes in a transparent way. +% \end{abstract} +% +% \tableofcontents\newpage +% +%\section{Introduction} +% +% The |mikoslides| document class is derived from |beamer.cls|~\cite{beamerclass:on}, it +% 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 moment until we decide what to do with it.} +% \begin{itemize} +% \item The options \DescribeMacro{slides}|slides|\DescribeMacro and {notes}|notes| switch +% 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 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. +% \item \DescribeMacro{topsect}|topsect=|\meta{sect} can be used to specify the +% top-level sectioning level; the default for \meta{setc} is |section|. +% \end{itemize} +% +% \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|). +% +% If we want to transclude a the contents of a file as a note, we can use the +% \DescribeMacro{\ninputref}|\ninputref| macro. |\ninputref{foo}| is equivalent to +%\begin{verbatim} +% \begin{note} +% \inputref{foo} +% \end{note} +% \end{verbatim} +% +% There are some environments that tend to occur at the top-level of |note| +% environments. We make convenience versions of these: e.g. the +% \DescribeEnv{nomtext}|nomtext| environment is just an |omtext| inside a |note| +% environemnt (but looks nicer in the source, since it avoids one level of source +% indenting). Similarly, we have the \DescribeEnv{nomgroup}|nomgroup| environment. +% +% \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: \textwarning +% +% \subsection{Front Matter, Titles, etc}\label{sec:user:matter} +% +% \subsection{Miscellaneous}\label{sec:user:misc} +% +% \section{Limitations}\label{sec:limitations} +% +% 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 GitHub repository~\cite{sTeX:github:on}. +% \begin{enumerate} +% \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{enumerate} +% +% \StopEventually{\newpage\PrintIndex\newpage\PrintChanges\printbibliography} +% +%\section{The Implementation}\label{sec:impl} +% +%\subsection{Class and Package Options}\label{sec:impl:init} +% +% 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. We pass +% the |nontheorem| option to the |statements| package when we are not in notes mode, since +% the |beamer| package has its own (overlay-aware) theorem environments. +% +% \begin{macrocode} +%<*cls> +\RequirePackage{kvoptions} +\RequirePackage{etoolbox} +\SetupKeyvalOptions{family=mks@cls,prefix=mks@cls@} +\DeclareStringOption[article]{class} +\AddToKeyvalOption*{class}{\PassOptionsToClass{class=\mks@cls@class}{omdoc} + \ifdefstring{\mks@cls@class}{book}{\PassOptionsToPackage{topsect=part}{mikoslides}}{} + \ifdefstring{\mks@cls@class}{report}{\PassOptionsToPackage{topsect=part}{mikoslides}}}{} +\DeclareBoolOption{notes} +\DeclareComplementaryOption{slides}{notes} +\DeclareDefaultOption{\PassOptionsToClass{\CurrentOption}{omdoc} + \PassOptionsToClass{\CurrentOption}{beamer} + \PassOptionsToPackage{\CurrentOption}{mikoslides}} +\ProcessKeyvalOptions{mks@cls} +%</cls> +% \end{macrocode} +% now we do the same for the |mikoslides| package. +% \begin{macrocode} +%<*package> +\RequirePackage{kvoptions} +\SetupKeyvalOptions{family=mks@sty,prefix=mks@sty@} +\DeclareStringOption[section]{topsect} +\DeclareBoolOption{mh} +\AddToKeyvalOption*{mh}{ + \PassOptionsToPackage{mh}{stex} + \PassOptionsToPackage{mh}{smglom} + \PassOptionsToPackage{mh}{tikzinput}} +\newif\ifnotes\notestrue +\DeclareBoolOption{notes} +\AddToKeyvalOption*{notes}{\notestrue\PassOptionsToPackage{notes}{statements}} +\DeclareComplementaryOption{slides}{notes} +\AddToKeyvalOption*{slides}{\notesfalse\PassOptionsToPackage{nontheorem}{statements}} +\DeclareBoolOption{sectocframes} +\AddToKeyvalOption*{sectocframes}{\PassOptionsToPackage{msection}{statements}} +\DeclareBoolOption{frameimages} +\DeclareBoolOption{noproblems} +\DeclareDefaultOption{\PassOptionsToPackage{\CurrentOption}{stex} + \PassOptionsToPackage{\CurrentOption}{smglom} + \PassOptionsToPackage{\CurrentOption}{tikzinput}} +\ProcessKeyvalOptions{mks@sty} +%</package> +% \end{macrocode} +% +% Depending on the options, we either load the |article|-based |omdoc| or the |beamer| +% class (and set some counters). +% \begin{macrocode} +%<*cls> +\ifmks@cls@notes + \LoadClass{omdoc} +\else + \LoadClass[10pt,notheorems]{beamer} + \newcounter{Item} + \newcounter{paragraph} + \newcounter{subparagraph} + \newcounter{Hfootnote} +\fi +% \end{macrocode} +% now it only remains to load the |mikoslides| package that does all the rest. +% \begin{macrocode} +\RequirePackage{mikoslides} +%</cls> +% \end{macrocode} +% +% In |notes| mode, 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. The first batch +% of packages we want are loaded on |mikoslides.sty|. These are the general ones, we will +% load the \sTeX-specific ones after we have done some work (e.g. defined the counters +% |m*|). Only the |stex-logo| package is already needed now for the default theme. +% +% \begin{macrocode} +%<*package> +\ifmks@sty@notes +\RequirePackage{a4wide} +\RequirePackage{marginnote} +\RequirePackage{xcolor} +\RequirePackage{mdframed} +\RequirePackage[noxcolor,noamsthm]{beamerarticle} +\fi +\ifmks@sty@mh\RequirePackage{mikoslides-mh}\fi +\RequirePackage{etoolbox} +\RequirePackage{amssymb} +\RequirePackage{amsmath} +\RequirePackage{comment} +\RequirePackage{textcomp} +\RequirePackage{url} +\RequirePackage{graphicx} +\RequirePackage{stex-logo} +\RequirePackage{pgf} +\ifmks@sty@notes +\RequirePackage[bookmarks,bookmarksopen,bookmarksnumbered,breaklinks, +linkcolor=black,citecolor=black,urlcolor=cyan,filecolor=cyan,colorlinks]{hyperref} +\fi +% \end{macrocode} +% +% finally, we require the |metakeys| package from \sTeX, so that we can use the +% |\addmetakey| mechanism. +% +% \begin{macrocode} +\RequirePackage{metakeys} +% \end{macrocode} +% +% \subsection{Notes and Slides}\label{sec:impl:noteslides} +% +% For the lecture notes cases, we also provide the |\usetheme| macro that would otherwise +% from the the |beamer| class. While the latter loads |beamertheme|\meta{theme}{.sty}, the +% notes version loads |beamernotestheme|\meta{theme}|.sty|.\ednote{MK: This is not ideal, but +% I am not sure that I want to be able to provide the full theme functionality there.} +% \begin{macrocode} +\ifmks@sty@notes +\renewcommand\usetheme[2][]{\usepackage[#1]{beamernotestheme#2}} +\fi +% \end{macrocode} +% We define the sizes of slides in the notes. Somehow, we cannot get by with the same +% here. +% +% \begin{macrocode} +\newcounter{slide} +\newlength{\slidewidth}\setlength{\slidewidth}{12.8cm} +\newlength{\slideheight}\setlength{\slideheight}{9cm} +% \end{macrocode} +% +% \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} +\ifmks@sty@notes% + \renewenvironment{note}{\ignorespaces}{}% +\else% + \excludecomment{note}% +\fi% +% \end{macrocode} +% \end{environment} +% +% \begin{macro}{\ninputref} +% \begin{macrocode} +\newcommand\ninputref[2][]{\ifmks@sty@notes\inputref[#1]{#2}\fi} +% \end{macrocode} +% \end{macro} +% +% +% 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} +\ifmks@sty@notes + \newlength{\slideframewidth} + \setlength{\slideframewidth}{1.5pt} +% \end{macrocode} +% +% \begin{environment}{frame} +% We first define the keys. +% \begin{macrocode} + \addmetakey{frame}{label} + \addmetakey[yes]{frame}{allowframebreaks} + \addmetakey{frame}{allowdisplaybreaks} + \addmetakey[yes]{frame}{fragile} + \addmetakey[yes]{frame}{shrink} + \addmetakey[yes]{frame}{squeeze} + \addmetakey[yes]{frame}{t} +% \end{macrocode} +% 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|. +% \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} +% +% Now, we need to redefine the frametitle (we are still in course notes mode). +% \begin{macro}{\frametitle} +% \begin{macrocode} + \renewcommand{\frametitle}[1]{{\Large\bf\sf\color{blue}{#1}}\medskip}% +\fi %ifnotes +% \end{macrocode} +% \end{macro} +% +% \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} +\newrobustcmd\frameimage[2][]{% + \stepcounter{slide}% + \ifmks@sty@frameimages% + \def\Gin@ewidth{}\setkeys{Gin}{#1}% + \ifmks@sty@notes\else\vfill\fi% + \ifx\Gin@ewidth\@empty% + \mycgraphics[width=\slidewidth,#1]{#2}\else\mycgraphics[#1]{#2}% + \fi% + \par\strut\hfill{\footnotesize Slide \arabic{slide}}% + \ifmks@sty@notes\else\vfill\fi% + \fi% +}% ifframeimages +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\pause} +% \ednote{MK: fake it in notes mode for now} +% \begin{macrocode} +\ifmks@sty@notes\newcommand\pause{}\fi +% \end{macrocode} +% \end{macro} +% +% \begin{environment}{nomtext} +% \begin{macrocode} +\ifmks@sty@notes\newenvironment{nomtext}[1][]{\begin{omtext}[#1]}{\end{omtext}}% +\else\excludecomment{nomtext}\fi% +% \end{macrocode} +% \end{environment} +% +% \begin{environment}{nomgroup} +% \begin{macrocode} +\ifmks@sty@notes\newenvironment{nomgroup}[2][]{\begin{omgroup}[#1]{#2}}{\end{omgroup}}% +\else\excludecomment{nomgroup}\fi% +% \end{macrocode} +% \end{environment} +% \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} +\newlength{\slidelogoheight} +\ifmks@sty@notes% + \setlength{\slidelogoheight}{.4cm}% +\else% + \setlength{\slidelogoheight}{1cm}% +\fi% +\newsavebox{\slidelogo}% +\sbox{\slidelogo}{\sTeX}% +\newrobustcmd{\setslidelogo}[1]{% + \sbox{\slidelogo}{\includegraphics[height=\slidelogoheight]{#1}}% +}% +% \end{macrocode} +% \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 +\newrobustcmd{\setsource}[1]{\def\source{#1}}% +% \end{macrocode} +% \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} +\newrobustcmd\miko@slidelabel{% + \vbox to \slidelogoheight{% + \vss\hbox to \slidewidth% + {\licensing\hfill\copyrightnotice\hfill\arabic{slide}\hfill\usebox{\slidelogo}}% + }% +}% +% \end{macrocode} +% \end{macro} +% +% \subsection{Colors and Highlighting}\label{sec:impl:highlighting} +% +% We first specify sans serif fonts as the default. +% +% \begin{macrocode} +\sffamily +% \end{macrocode} +% +% Now, we set up an infrastructure for highlighting phrases in slides. Note that we use +% 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} +\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 +% in the |statements| package. Furthermore we customize the |\@@lec| macro for the +% appearance of line end comments in |\lec|. +% +% \begin{macrocode} +% \def\STpresent#1{\textcolor{blue}{#1}} +\def\defemph#1{{\textcolor{magenta}{#1}}} +\def\notemph#1{{\textcolor{magenta}{#1}}} +\def\stDMemph#1{{\textcolor{blue}{#1}}} +\def\@@lec#1{(\textcolor{green}{#1})} +% \end{macrocode} +% +% I like to use the dangerous bend symbol for warnings, so we provide it here. +% \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} +\pgfdeclareimage[width=.8em]{miko@small@dbend}{dangerous-bend} +\def\smalltextwarning{% + \pgfuseimage{miko@small@dbend}% + \xspace% +}% +\pgfdeclareimage[width=1.2em]{miko@dbend}{dangerous-bend} +\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} +% +% \begin{macrocode} +\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\ednote{I forget: why not use the counters from beamer/article? --> document +% this.} +% \begin{macrocode} +\ifmks@sty@sectocframes% +\ifdefstring\mks@sty@topsect{part}{% + \newcounter{mpart}\newcounter{mchapter}\newcounter{msection}[mchapter]} +{\ifdefstring\mks@sty@topsect{chapter}{% + \newcounter{mchapter}\newcounter{msection}[mchapter]} + {\newcounter{msection}}} +\newcounter{msubsection}[msection]% +\newcounter{msubsubsection}[msubsection]% +\newcounter{msubsubsubsection}[msubsubsection]% +\fi% ifsectocframes +% \end{macrocode} +% +% Now that we have defined the counters, we can load the \sTeX-specific packages (in +% particular |statements| that needs these counters). +% +% \begin{macrocode} +\RequirePackage{stex} +\RequirePackage{smglom} +\RequirePackage{tikzinput} +% \end{macrocode} +% +% Finally, we set the \DescribeMacro{\section@level}|\section@level| macro that governs +% sectioning. +% +% \begin{macrocode} +\section@level=2 +\ifdefstring{\mks@sty@topsect}{part}{\section@level=0}{} +\ifdefstring{\mks@sty@topsect}{chapter}{\section@level=1}{} +% \end{macrocode} +% +% Now \sTeX is loaded, we redefine the |omgroup| environment to produce section toc frames +% (if the option |sectocframes| is specified.)\ednote{MK: we should probably just redefine +% omgroup@num and omgroup@nonum, since they do the actual work so that we can add the +% sectocframes behavior here without having to copy the internals. Then there is less +% material that can get out of sync. Additionally, we should have a hook in the original +% code of those so that we can increment the slides counter in notes node (to keep slides +% in sync)} +% +% \begin{macrocode} +\ifmks@sty@notes\else% only in slides +\def\part@prefix{\ifdefstring\mks@sty@topsect{part}{\arabic{mchapter}.}{}} +\renewenvironment{omgroup}[2][]{% + \metasetkeys{omgroup}{#1}\sref@target% + \advance\section@level by 1% + \ifmks@sty@sectocframes% + \stepcounter{slide} + \begin{frame}[noframenumbering]% + \vfill\Large\centering% + \red{% + \ifcase\section@level\or + \stepcounter{mpart} + \def\@@label{Part \Roman{mpart}} + \def\currentsectionlevel{part} + \or% + \stepcounter{mchapter} + \def\@@label{Chapter \arabic{mchapter}} + \def\currentsectionlevel{chapter} + \or + \stepcounter{msection} + \def\@@label{\part@prefix\arabic{msection}} + \def\currentsectionlevel{section} + \or + \stepcounter{msubsection} + \def\@@label{\part@prefix\arabic{msection}.\arabic{msubsection}} + \def\currentsectionlevel{subsection} + \or + \stepcounter{msubsubsection} + \def\@@label{\part@prefix\arabic{msection}.\arabic{msubsection}.\arabic{msubsubsection}} + \def\currentsectionlevel{subsubsection} + \or + \stepcounter{msubsubsubsection} + \def\@@label{\part@prefix\arabic{msection}.\arabic{msubsection}.\arabic{msubsubsection}.\arabic{msubsubsubsection}} + \def\currentsectionlevel{subsubsubsection} + \fi% end ifcase + \@@label\sref@label@id\@@label + \quad #2% + }% + \vfill% + \end{frame}% + \fi %ifmks@sty@sectocframes +} +{\advance\section@level by -1}% +\fi% ifmks@sty@notes +% \end{macrocode} +% +% \subsection{Miscellaneous} +% +% We set up a |beamer| template for theorems like ams style, but without a block +% environment. +% \begin{macrocode} +\def\inserttheorembodyfont{\normalfont} +\defbeamertemplate{theorem begin}{miko} +{\inserttheoremheadfont\inserttheoremname\inserttheoremnumber + \ifx\inserttheoremaddition\@empty\else\ (\inserttheoremaddition)\fi% + \inserttheorempunctuation\inserttheorembodyfont\xspace} +\defbeamertemplate{theorem end}{miko}{} +% \end{macrocode} +% and we set it as the default one. +% \begin{macrocode} +\setbeamertemplate{theorems}[miko] +% \end{macrocode} +% 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} +\expandafter\def\csname Parent2\endcsname{} +% \end{macrocode} +% We need to disregard the columns macros introduced by the |beamer| class in the notes. +% \begin{macrocode} +\ifmks@sty@notes% + \renewenvironment{columns}[1][]{% + \par\noindent% + \begin{minipage}% + \slidewidth\centering\leavevmode% + }{% + \end{minipage}\par\noindent% + }% + \newsavebox\columnbox% + \renewenvironment<>{column}[2][]{% + \begin{lrbox}{\columnbox}\begin{minipage}{#2}% + }{% + \end{minipage}\end{lrbox}\usebox\columnbox% + }% +\fi% ifnotes +% \end{macrocode} +% +% \begin{macrocode} +\ifmks@sty@noproblems% + \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 sc Licences +% LocalWords: graphicx slidelabel stex 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 smalltextwarnings 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 |