Ian Jauslin
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'ian-presentation.cls')
-rw-r--r--ian-presentation.cls194
1 files changed, 194 insertions, 0 deletions
diff --git a/ian-presentation.cls b/ian-presentation.cls
new file mode 100644
index 0000000..1ef3b62
--- /dev/null
+++ b/ian-presentation.cls
@@ -0,0 +1,194 @@
+%% Copyright Ian Jauslin 2021
+%%
+%% Licensed under the Apache License, Version 2.0 (the "License");
+%% you may not use this file except in compliance with the License.
+%% You may obtain a copy of the License at
+%%
+%% http://www.apache.org/licenses/LICENSE-2.0
+%%
+%% Unless required by applicable law or agreed to in writing, software
+%% distributed under the License is distributed on an "AS IS" BASIS,
+%% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+%% See the License for the specific language governing permissions and
+%% limitations under the License.
+
+
+%% TeX format
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+
+%% class name
+\ProvidesClass{ian-presentation}[2021/05/19]
+
+\def\ian@defaultoptions{
+ \pagestyle{plain}
+ \RequirePackage{amssymb}
+}
+
+%% paper dimensions
+\setlength\paperheight{240pt}
+\setlength\paperwidth{427pt}
+
+%% fonts
+\input{size11.clo}
+\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
+\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
+\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
+\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
+\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
+
+%% text dimensions
+\textheight=208pt
+\textwidth=370pt
+\hoffset=-1in
+\voffset=-1in
+\oddsidemargin=24pt
+\evensidemargin=24pt
+\topmargin=8pt
+\headheight=0pt
+\headsep=0pt
+\marginparsep=0pt
+\marginparwidth=0pt
+\footskip=16pt
+
+
+%% remove default skips
+\parindent=0pt
+\parskip=0pt
+\baselineskip=0pt
+
+%% something is wrong with \thepage, redefine it
+\gdef\thepage{\the\c@page}
+
+%% correct vertical alignment at the end of a document
+\AtEndDocument{
+ % save total slide count
+ \immediate\write\@auxout{\noexpand\gdef\noexpand\slidecount{\thepage}}
+ \vfill
+ \eject
+}
+
+
+%% footer
+% plain style
+\def\ps@plain{
+ \def\@oddhead{}
+ \def\@evenhead{\@oddhead}
+ \def\@oddfoot{\tiny\hfill\thepage/\safe\slidecount\hfill}
+ \def\@evenfoot{\@oddfoot}
+}
+% empty style
+\def\ps@empty{
+ \def\@oddhead{}
+ \def\@evenhead{\@oddhead}
+ \def\@oddfoot{}
+ \def\@evenfoot{\@oddfoot}
+}
+
+
+%% title of slide
+\def\title#1{
+ \hfil{\bf\large #1}\par
+ \hfil\vrule width0.75\textwidth height0.3pt\par
+ \vskip5pt
+}
+
+
+%% define a command and write it to aux file
+\def\outdef#1#2{%
+ % define command%
+ \expandafter\xdef\csname #1\endcsname{#2}%
+ % hyperlink number%
+ \expandafter\xdef\csname #1@hl\endcsname{\thelncount}%
+ % write command to aux%
+ \immediate\write\@auxout{\noexpand\expandafter\noexpand\gdef\noexpand\csname #1\endcsname{\csname #1\endcsname}}%
+ \immediate\write\@auxout{\noexpand\expandafter\noexpand\gdef\noexpand\csname #1@hl\endcsname{\thelncount}}%
+}
+
+%% use to call commands even when they are not defined
+\def\safe#1{%
+ \ifdefined#1%
+ #1%
+ \else%
+ {\bf?}%
+ \fi%
+}
+
+
+%% itemize
+% left margin for items
+\newlength\itemizeskip
+\setlength\itemizeskip{20pt}
+% space between the item symbol and the text
+\newlength\itemizeseparator
+\setlength\itemizeseparator{5pt}
+% penalty preceding an itemize
+\def\itemizepenalty{0}
+% counter counting how many itemizes have been nested
+\newcounter{itemizecount}
+
+% item symbol (bullet for first level, triangle for further levels (should not need more than 2 levels in most cases))
+\def\itemizept#1{
+ \ifnum#1=1
+ \textbullet
+ \else
+ $\scriptstyle\blacktriangleright$
+ \fi
+}
+
+% implement itemizes
+\newlength\current@itemizeskip
+\setlength\current@itemizeskip{0pt}
+\def\itemize{
+ \par\penalty\itemizepenalty\medskip\penalty\itemizepenalty
+ % increment level
+ \addtocounter{itemizecount}{1}
+ % increase indent
+ \addtolength\current@itemizeskip{\itemizeskip}
+ \leftskip\current@itemizeskip
+}
+\def\enditemize{
+ % decrement level
+ \addtocounter{itemizecount}{-1}
+ % decrease indent
+ \addtolength\current@itemizeskip{-\itemizeskip}
+ \par\leftskip\current@itemizeskip
+ \medskip
+}
+% implement item
+\newlength\itempt@total
+\def\item{
+ % place symbol on left of margin
+ \settowidth\itempt@total{\itemizept\theitemizecount}
+ \addtolength\itempt@total{\itemizeseparator}
+ \par
+ \medskip
+ \hskip-\itempt@total\itemizept\theitemizecount\hskip\itemizeseparator
+}
+
+%% enumerate (do not nest these!)
+\newcounter{enumerate@count}
+\def\enumerate{
+ \setcounter{enumerate@count}0
+ % redefine \item and \itemizept
+ \let\olditem\item
+ \let\olditemizept\itemizept
+ \def\item{
+ % counter
+ \stepcounter{enumerate@count}
+ % set symbol to enumerate number
+ \def\itemizept####1{{\bf \theenumerate@count.}}
+ \olditem
+ }
+ \itemize
+}
+\def\endenumerate{
+ \enditemize
+ \let\item\olditem
+ \let\itemizept\olditemizept
+}
+
+
+%% end
+\ian@defaultoptions
+
+\endinput