diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/talk/talk.cls')
-rw-r--r-- | Master/texmf-dist/tex/latex/talk/talk.cls | 390 |
1 files changed, 390 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/talk/talk.cls b/Master/texmf-dist/tex/latex/talk/talk.cls new file mode 100644 index 00000000000..794a8d0bae1 --- /dev/null +++ b/Master/texmf-dist/tex/latex/talk/talk.cls @@ -0,0 +1,390 @@ +%% talk -- (talk.cls) Class file +%% A LaTeX class for creating presentations +%% Author: Martin Wiebusch +%% +%% This file may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3 +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of LaTeX +%% version 2003/12/01 or later. + + +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesClass{talk}[2005/08/09 v1.0.1] + +\def\pres@dt@notes{notes} +\def\pres@dt@slides{slides} +\def\pres@dt@screen{screen} +\def\pres@doctype{} +\newif\if@pres@rotate + +\def\@ifnotes#1#2{\ifx\pres@doctype\pres@dt@notes#1\else#2\fi} +\def\@ifslides#1#2{\ifx\pres@doctype\pres@dt@slides#1\else#2\fi} +\def\@ifscreen#1#2{\ifx\pres@doctype\pres@dt@screen#1\else#2\fi} + +\DeclareOption{notes}{\global\let\pres@doctype\pres@dt@notes} +\DeclareOption{slides}{\global\let\pres@doctype\pres@dt@slides} +\DeclareOption{screen}{\global\let\pres@doctype\pres@dt@screen} +\DeclareOption{rotate}{\@pres@rotatetrue} +\DeclareOption{norotate}{\@pres@rotatefalse} +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}} + +\ExecuteOptions{screen,rotate} +\ProcessOptions\relax + +\LoadClass{article} + +\RequirePackage{multido} +\RequirePackage{amsmath} +\RequirePackage{graphicx} +\RequirePackage{pgf} +%\RequirePackage{hyperref} + +% collect@body (from amsmath.sty) +% +\long\def\pres@addto@envbody#1{\global\@envbody\@xp{\the\@envbody#1}} +\long\def\pres@collect@body#1{% + \@envbody{\@xp#1\@xp{\the\@envbody}}% + \edef\process@envbody{\the\@envbody\@nx\end{\@currenvir}}% + \@envbody\@emptytoks \def\begin@stack{b}% + \begingroup + \@xp\let\csname\@currenvir\endcsname\pres@collect@@body + \edef\process@envbody{\@xp\@nx\csname\@currenvir\endcsname}% + \process@envbody +} +\long\def\pres@push@begins#1\begin#2{% + \ifx\end#2\else b\@xp\pres@push@begins\fi +} +\long\def\pres@collect@@body#1\end#2{% + \edef\begin@stack{\pres@push@begins#1\begin\end \@xp\@gobble\begin@stack}% + \ifx\@empty\begin@stack + \endgroup + \@checkend{#2}% + \pres@addto@envbody{#1}% + \else + \pres@addto@envbody{#1\end{#2}}% + \fi + \process@envbody % A little tricky! Note the grouping +} + + +% some definitions +% +\newlength{\slidewidth} +\newlength{\slideheight} +\def\pres@currentslidestyle{} +\def\pres@oldslidestyle{} +\def\@slidetitle{} +\def\@slidebody{} +\long\def\pres@defslidebody#1{\long\gdef\@slidebody{#1}} +\def\pres@slidesmag{1} + + +% section and subsection handling +% +\long\def\@tableofcontents{} +\newcommand{\pres@artsection}[2][]{} +\newcommand{\pres@artsubsection}[2][]{} +\@ifnotes{% + \let\pres@artsection\section + \let\pres@artsubsection\subsection +}{} +\def\pres@addtocsection#1#2#3{% + \expandafter\gdef\expandafter\@tableofcontents\expandafter{\@tableofcontents\@maketocsection{#1}{#2}{#3}}% +} +\def\pres@addtocsubsection#1#2#3#4{% + \expandafter\gdef\expandafter\@tableofcontents\expandafter{\@tableofcontents\@maketocsubsection{#1}{#2}{#3}{#4}}% +} +\def\section{\@ifnextchar[{\@@pres@section}{\@pres@section}} +\def\@pres@section#1{\@@pres@section[#1]{#1}} +\def\@@pres@section[#1]#2{% + \pres@artsection[#1]{#2} + \@ifnotes{}{\refstepcounter{section}} + \addtocontents{ttc}{\string\pres@addtocsection{\the\c@section}{#1}{#2}} +} +\def\subsection{\@ifnextchar[{\@@pres@subsection}{\@pres@subsection}} +\def\@pres@subsection#1{\@@pres@subsection[#1]{#1}} +\def\@@pres@subsection[#1]#2{% + \pres@artsubsection[#1]{#2} + \@ifnotes{}{\refstepcounter{subsection}} + \addtocontents{ttc}{\string\pres@addtocsubsection{\the\c@section}{\the\c@subsection}{#1}{#2}} +} +\long\def\@ifcurrentsection#1#2#3{\ifnum\c@section=#1 #2\else#3\fi} +\long\def\@ifcurrentsubsection#1#2#3{\ifnum\c@subsection=#1 #2\else#3\fi} +\@input{\jobname.ttc}% +\newwrite\tf@ttc +\immediate\openout\tf@ttc\jobname.ttc\relax +\newwrite\tf@toc +\immediate\openout\tf@toc\jobname.toc\relax + + +% table of contents +% +\long\def\maketitle{} +\long\def\tableofcontents{} +\long\def\pres@ifinrange#1#2[#3.#4-#5.#6]#7#8{% + \ifnum#1=#3 + \ifnum#2<#4 #8\else #7\fi + \else + \ifnum#1=#5 + \ifnum#2>#6 #8\else #7\fi + \else + \ifnum#1<#3 #8\else + \ifnum#1>#5 #8\else #7\fi + \fi + \fi + \fi +} +\long\def\@ifinrange#1#2#3#4#5{\pres@ifinrange{#1}{#2}[#3]{#4}{#5}} + + +% default make commands +% +\long\def\pres@defaultslide{% + \vspace*{1.2em minus 0.4em}% + \centerline{\LARGE\@slidetitle}% + \vspace*{1.8em minus 0.6em}% + \@slidebody% + \vfill% + \raggedleft\tiny\@title\ -- \theslidelabel% +} +\def\pres@defaultslidebackground{% + \pgfsetlinewidth{0.8pt} + \color{black} + \pgfrect[stroke]{\pgfpoint\z@\z@}{\pgfpoint\slidewidth\slideheight} +} +\def\pres@restoredefaults{% + \gdef\@makeslidecontent{\pres@defaultslide} + \gdef\@makeslidebackground{\pres@defaultslidebackground} + \gdef\@makeslide{% + \begin{pgfpicture}\z@\z@\z@\z@% + \@makeslidebackground% + \end{pgfpicture}% + \begin{minipage}[b][\slideheight][t]{\slidewidth}% + \@makeslidecontent% + \end{minipage}% + } + \gdef\@makenotesslide{\par\hspace*{\fill}\@makeslide\hspace*{\fill}\par} + \gdef\@maketocsection##1##2##3{} + \gdef\@maketocsubsection##1##2##3##4{} +} +\pres@restoredefaults + + +% the slide environment +% +\@ifnotes{\def\pres@makeslide{\noindent\@makenotesslide}}{} +\@ifslides{% + \def\pres@makeslide{% + \vspace*{\fill}% + \noindent% + \hspace*{\fill}% + \scalebox{\pres@slidesmag}{% + \if@pres@rotate% + \rotatebox[origin=c]{90}{\@makeslide}% + \else% + \@makeslide% + \fi% + }% + \hspace*{\fill}% + \vspace*{\fill}% + \newpage% + }% +}{} +\@ifscreen{\def\pres@makeslide{\noindent\@makeslide\newpage}}{} + +\def\slide{\@ifnextchar[{\@@slide}{\@slide}} +\long\def\@@slide[#1]#2{% + \refstepcounter{slide} + \csname pres@sty@#1\endcsname% + \long\global\def\@slidetitle{#2} + \pres@collect@body\pres@defslidebody% +} +\long\def\@slide#1{% + \refstepcounter{slide} + \csname pres@sty@\pres@currentslidestyle\endcsname + \long\global\def\@slidetitle{#1} + \pres@collect@body\pres@defslidebody% +} +\def\endslide{% + \global\@ignoretrue% + \pres@makeslide% +} + + +% slide styles +% +\long\def\@newslidestyle#1#2{% + \edef\@temp{#1}% + \expandafter\gdef\csname pres@sty@\@temp\endcsname{% + \pres@restoredefaults% + #2% + }% +} +\newcommand{\slidestyle}[1]{\gdef\pres@currentslidestyle{#1}} + + +% slide and subslide numbering +% +\newcounter{slide} +\newcounter{subslide} +\def\theslide{\arabic{slide}} +\def\thesubslide{\theslide.\arabic{subslide}} +\def\theslidelabel{\theslide} + +% overlay commands +% +\@ifnotes{ + \long\gdef\fromslide{\@ifnextchar*{\@fromslidestar}{\@fromslide}} + \long\gdef\@fromslide#1#2{#2} + \long\gdef\@fromslidestar*#1#2{#2} + \long\gdef\toslide{\@ifnextchar*{\@toslidestar}{\@toslide}} + \long\gdef\@toslide#1#2{#2} + \long\gdef\@toslidestar*#1#2{#2} + \long\gdef\onlyslide{\@ifnextchar*{\@onlyslidestar}{\@onlyslide}} + \long\gdef\@onlyslide#1#2{#2} + \long\gdef\@onlyslidestar*#1#2{#2} + \gdef\pres@makemultislide{\pres@makeslide} +}{% + \long\gdef\fromslide{\@ifnextchar*{\@fromslidestar}{\@fromslide}} + \long\gdef\@fromslide#1#2{% + \ifnum\c@subslide<#1% + \pgfsys@begininvisible#2\pgfsys@endinvisible% + \else% + #2% + \fi% + } + \long\gdef\@fromslidestar*#1#2{% + \ifnum\c@subslide<#1% + \else% + #2% + \fi% + } + \long\gdef\toslide{\@ifnextchar*{\@toslidestar}{\@toslide}} + \long\gdef\@toslide#1#2{% + \ifnum\c@subslide>#1% + \pgfsys@begininvisible#2\pgfsys@endinvisible% + \else% + #2% + \fi% + } + \long\gdef\@toslidestar*#1#2{% + \ifnum\c@subslide>#1\relax% + \else% + #2% + \fi% + } + \long\gdef\onlyslide{\@ifnextchar*{\@onlyslidestar}{\@onlyslide}} + \long\gdef\@onlyslide#1#2{% + \ifnum\c@subslide=#1\relax% + #2% + \else% + \pgfsys@begininvisible#2\pgfsys@endinvisible% + \fi% + } + \long\gdef\@onlyslidestar*#1#2{% + \ifnum\c@subslide=#1\relax% + #2% + \fi% + } +} +\@ifslides{% + \def\pres@makemultislide{% + \setcounter{subslide}{0}% + \def\theslidelabel{\thesubslide} + \multido{}{\pres@msmax}{% + \refstepcounter{subslide}% + \vspace*{\fill}% + \noindent% + \hspace*{\fill}% + \scalebox{\pres@slidesmag}{% + \if@pres@rotate% + \rotatebox[origin=c]{90}{\@makeslide}% + \else% + \@makeslide% + \fi% + }% + \hspace*{\fill}% + \vspace*{\fill}% + \newpage% + }% + }% +}{} +\@ifscreen{% + \def\pres@makemultislide{% + \setcounter{subslide}{0}% + \def\theslidelabel{\thesubslide} + \multido{}{\pres@msmax}{% + \refstepcounter{subslide} + \noindent% + \@makeslide% + \newpage% + }% + }% +}{} +\def\multislide{\@ifnextchar[{\@@multislide}{\@multislide}} +\long\def\@@multislide[#1]#2#3{% + \refstepcounter{slide} + \csname pres@sty@#1\endcsname + \long\global\def\@slidetitle{#3}% + \global\def\pres@msmax{#2}% + \pres@collect@body\pres@defslidebody% +} +\long\def\@multislide#1#2{% + \refstepcounter{slide}% + \csname pres@sty@\pres@currentslidestyle\endcsname + \long\global\def\@slidetitle{#2}% + \global\def\pres@msmax{#1}% + \pres@collect@body\pres@defslidebody% +} +\def\endmultislide{% + \global\@ignoretrue% + \pres@makemultislide% +} + + +% notes +% +\newcommand{\pres@notes}[1]{\@ifnotes{#1}{}} +\newenvironment{notes}{\pres@collect@body\pres@notes}{\global\@ignoretrue} + + +% size settings +% +\AtBeginDocument{% + \AtBeginDvi{\special{papersize=\the\paperwidth,\the\paperheight}}% +} +\def\pres@removemargins{% + \setlength\oddsidemargin{-1in}% + \setlength\evensidemargin{-1in}% + \setlength\topmargin{-1in}% + \setlength\headheight\z@% + \setlength\headsep\z@% + \setlength\topskip\z@% + \setlength\footskip\z@% + \setlength\textwidth\paperwidth% + \setlength\textheight\paperheight% +} +\def\@slidesize#1#2{ + \setlength\slidewidth{#1} + \setlength\slideheight{#2} + \@ifscreen{% + \setlength\paperwidth\slidewidth% + \setlength\paperheight\slideheight% + \pres@removemargins% + }{}% + \@ifslides{\pres@removemargins}{}% +} +\def\slidesmag#1{\gdef\pres@slidesmag{#1}} + +\@slidesize{4in}{3in} +\@ifnotes{}{\pagestyle{empty}} + + +% footnote style +% +\def\thempfootnote{\@arabic\c@mpfootnote} +\let\thanks\footnote + |