% \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 %\NeedsTeXFormat{LaTeX2e}[1999/12/01] %\ProvidesClass{mikoslides}[2019/03/20 v1.2 MiKo slides Class] %\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} % % \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} % % \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} % % \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} % % \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% % % \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