Ryan Rueger

ryan@rueg.re / picture / key / home
aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md54
-rw-r--r--beamercolorthemeibm.sty11
-rw-r--r--beamerinnerthemeibm.sty71
-rw-r--r--beamerouterthemeibm.sty29
-rw-r--r--beamerthemeibm.sty51
-rw-r--r--ibeamer.pdfbin0 -> 26030 bytes
-rw-r--r--ibeamer.tex79
-rw-r--r--ibmcolors.sty129
8 files changed, 424 insertions, 0 deletions
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..7c3bec1
--- /dev/null
+++ b/README.md
@@ -0,0 +1,54 @@
+# IBeaMer
+
+LaTeX/Beamer templates using the [IBM design
+language](https://www.ibm.com/design/language).
+
+### Fonts
+
+See `ibeamer.tex` for example usage and `ibeamer.pdf` for a sample.
+
+This template uses the [Lete Sans Math](https://github.com/abccsss/LeteSansMath)
+and [IBM Plex](https://github.com/IBM/plex) fonts.
+
+These may already part of your system's `texlive` distribution. On archlinux,
+for example, they are part of the `texlive-fontsextra` package. If not, they are
+both licensed with the [OFL `v1.1`](https://openfontlicense.org) and can be
+freely downloaded from their github sources. They are also available on CTAN
+([LeteSansMath](https://ctan.org/pkg/lete-sans-math),
+[Plex](https://ctan.org/pkg/plex-otf)), if that is easier to integrate into your
+LaTeX workflow.
+
+In total, the following font files will be needed
+
+* `IBMPlexMono-Regular.otf`
+* `IBMPlexSans-Italic.otf`
+* `IBMPlexSans-Regular.otf`
+* `LeteSansMath.otf`
+
+Because we are using non-standard fonts, this will need to be compiled use
+`lualatex`. For example, `latexmk -pdflua ibeamer.tex`.
+
+### Installation
+
+To use this package, clone this repository into your
+[`$TEXMFHOME`](https://www.tug.org/texlive/doc/texlive-en/texlive-en.html)
+directory. For example
+
+ git clone https://git.rueg.re/ibeamer "$TEXMFHOME/ibeamer"
+
+If your `$TEXMFHOME` is not set, choose a location for it and `export` it in
+your shell configuration file. For example, create the directory
+
+ mkdir -p "$HOME/.local/share/tex"
+
+and add
+
+ export TEXMFHOME=$HOME/.local/share/tex
+
+to your `$HOME/.bashrc` (or `$HOME/.zshrc` on MacOS).
+
+(Note: `$HOME/.local/share` is the default location for
+[`$XDG_DATA_HOME`](https://wiki.archlinux.org/title/XDG_Base_Directory), but you
+can pick any directory).
+
+Then you can use the `ibeamer.tex` template from anywhere in your filesystem.
diff --git a/beamercolorthemeibm.sty b/beamercolorthemeibm.sty
new file mode 100644
index 0000000..130430b
--- /dev/null
+++ b/beamercolorthemeibm.sty
@@ -0,0 +1,11 @@
+\mode<presentation>
+
+\setbeamercolor{titlepage}{fg=white}
+
+\setbeamercolor*{title page header}{fg=white}
+\setbeamercolor*{author}{fg=white}
+\setbeamercolor*{date}{fg=white}
+\setbeamercolor{frametitle}{bg=white, fg=ibmblue}
+
+\mode
+<all>
diff --git a/beamerinnerthemeibm.sty b/beamerinnerthemeibm.sty
new file mode 100644
index 0000000..ce228c8
--- /dev/null
+++ b/beamerinnerthemeibm.sty
@@ -0,0 +1,71 @@
+\usepackage{setspace}
+\usepackage{etoolbox}
+
+\setbeamertemplate{background}{
+ \begin{tikzpicture}
+ \useasboundingbox (0,0) rectangle(\the\paperwidth,\the\paperheight);
+ \fill[color=ibmblue50] (0,0) rectangle (\the\paperwidth,\the\paperheight);
+ \ifnum\thepage>1\relax%
+ \fill[white,opacity=1] (0,0) rectangle(\the\paperwidth,\the\paperheight);
+ \fi
+ \end{tikzpicture}
+}
+
+\defbeamertemplate*{title page}{customized}[1][]{%
+ \usebeamercolor[fg]{titlepage}
+
+ \ifdef{\topspace}{\topspace}{\vspace{3ex}}
+
+ \begin{minipage}[t]{0.59\textwidth}
+ \usebeamerfont{date}\insertdate
+ \end{minipage}
+ \begin{minipage}[c]{0.40\textwidth}
+ \raggedleft
+ \inserttitlegraphic{}
+ \end{minipage}
+
+ \ifdef{\titlespace}{\titlespace}{\vspace{5ex}}
+
+ \begin{minipage}[t]{\ifdef{\titlewidth}{\titlewidth}{0.70}\linewidth}
+ \raggedright
+
+ {
+ \usebeamerfont{title}
+ \begin{spacing}{1.1}
+ \inserttitle
+ \end{spacing}
+ }
+
+ \ifdef{\printtitletag}{%
+ \ifdef{\titletagspace}{\titletagspace}{\vspace{2ex}}
+
+ % Must use spacing environment because there is a font size change
+ \usebeamerfont{titletag}
+ \begin{spacing}{1.1}
+ \printtitletag
+ \end{spacing}
+ }{}
+
+ \ifdef{\subtitlespace}{\subtitlespace}{\vspace{2ex}}
+
+ % Must use spacing environment because there is a font size change
+ \usebeamerfont{subtitle}
+ \begin{spacing}{1.1}
+ \insertsubtitle
+ \end{spacing}
+ \end{minipage}
+
+ \ifdef{\printurl}{%
+ \ifdef{\urlspace}{\urlspace}{\vspace{1ex}}
+
+ \usebeamerfont{titleurl}{\printurl}
+ }{}
+
+ \ifdef{\authorspace}{\authorspace}{\vspace{2ex}} \vfill
+
+ \usebeamerfont{author}\insertauthor
+
+ \usebeamerfont{institute}\insertinstitute
+
+ \ifdef{\bottomspace}{\bottomspace}{\vspace{2ex}}
+}
diff --git a/beamerouterthemeibm.sty b/beamerouterthemeibm.sty
new file mode 100644
index 0000000..d1fe290
--- /dev/null
+++ b/beamerouterthemeibm.sty
@@ -0,0 +1,29 @@
+\mode<presentation>
+
+\setbeamercolor{foot left}{fg=ibmcoolgray60}
+\setbeamercolor{foot center}{fg=ibmcoolgray60}
+\setbeamercolor{foot right}{fg=ibmcoolgray60}
+
+\setbeamerfont{foot left}{family=\fontspec{IBMPlexMono-Regular.otf}, size=\tiny}
+\setbeamerfont{foot center}{family=\fontspec{IBMPlexMono-Regular.otf}, size=\tiny}
+\setbeamerfont{foot right}{family=\fontspec{IBMPlexMono-Regular.otf}, size=\tiny}
+
+\newcommand{\ibmbeamerfootermargin}{2ex}
+
+\defbeamertemplate*{footline}{}
+{%
+ \leavevmode%
+ \hbox{%
+ \begin{beamercolorbox}[wd=.333333\paperwidth,ht=3.25ex,dp=1ex,sep=\ibmbeamerfootermargin,left]{foot left}%
+ \usebeamerfont{foot left}\ifdef\printfooterleft{\printfooterleft}{}
+ \end{beamercolorbox}%
+ \begin{beamercolorbox}[wd=.333333\paperwidth,ht=3.25ex,dp=1ex,sep=\ibmbeamerfootermargin,center]{foot center}%
+ \usebeamerfont{foot center}\ifdef\printfootercenter{\printfootercenter}{}
+ \end{beamercolorbox}%
+ \begin{beamercolorbox}[wd=.333333\paperwidth,ht=3.25ex,dp=1ex,sep=\ibmbeamerfootermargin,right]{foot right}%
+ \usebeamerfont{foot right}\insertframenumber\,/\,\inserttotalframenumber
+ \end{beamercolorbox}}%
+ \vskip-\ibmbeamerfootermargin%
+}
+
+\mode<all>
diff --git a/beamerthemeibm.sty b/beamerthemeibm.sty
new file mode 100644
index 0000000..8001462
--- /dev/null
+++ b/beamerthemeibm.sty
@@ -0,0 +1,51 @@
+\mode<presentation>
+
+\RequirePackage{tikz}
+
+% Settings
+\useinnertheme{ibm}
+\useoutertheme{ibm}
+\usecolortheme{ibm}
+
+\setbeamertemplate{navigation symbols}{}
+\setbeamertemplate{blocks}[rounded][shadow=true]
+
+% Set usual fonts
+\RequirePackage{plex-otf}
+
+% Set title fonts
+\setbeamerfont{title}{family=\fontspec{IBMPlexMono-Regular.otf}, size=\Large}
+\setbeamerfont{subtitle}{family=\fontspec{IBMPlexSans-Italic.otf}, size=\scriptsize}
+\setbeamerfont{titletag}{family=\fontspec{IBMPlexMono-Regular.otf}, size=\tiny}
+\setbeamerfont{author}{family=\fontspec{IBMPlexSans-Regular.otf}}
+\setbeamerfont{date}{family=\fontspec{IBMPlexSans-Regular.otf}, size=\scriptsize}
+\setbeamerfont{frametitle}{family=\fontspec{IBMPlexMono-Regular.otf}, size=\large}
+\setbeamerfont{titleurl}{family=\fontspec{IBMPlexMono-Regular.otf}, size=\scriptsize}
+\setbeamerfont{footer}{family=\fontspec{IBMPlexMono-Regular.otf}, size=\tiny}
+
+% Set math fonts
+\usepackage{unicode-math}
+\setmathfont{LeteSansMath.otf}
+\setmathrm{IBMPlexSans-Regular.otf}
+\setmathsf{IBMPlexSans-Regular.otf}
+\setmathtt{IBMPlexSans-Regular.otf}
+
+% Set line spacing
+\setstretch{1.25}
+
+\newcommand{\settopspace}[1]{\newcommand{\topspace}{\vspace{#1}}}
+\newcommand{\settitlespace}[1]{\newcommand{\titlespace}{\vspace{#1}}}
+\newcommand{\setsubtitlespace}[1]{\newcommand{\subtitlespace}{\vspace{#1}}}
+\newcommand{\settitletagspace}[1]{\newcommand{\titletagspace}{\vspace{#1}}}
+\newcommand{\setauthorspace}[1]{\newcommand{\authorspace}{\vspace{#1}}}
+\newcommand{\seturlspace}[1]{\newcommand{\urlspace}{\vspace{#1}}}
+\newcommand{\setbottomspace}[1]{\newcommand{\bottomspace}{\vspace{#1}}}
+
+\newcommand{\seturl}[1]{\newcommand{\printurl}{#1}}
+\newcommand{\titletag}[1]{\newcommand{\printtitletag}{#1}}
+
+\newcommand{\settitlewidth}[1]{\newcommand{\titlewidth}{#1}}
+
+\newcommand{\footerleft}[1]{\newcommand{\printfooterleft}{#1}}
+\newcommand{\footercenter}[1]{\newcommand{\printfootercenter}{#1}}
+\mode<all>
diff --git a/ibeamer.pdf b/ibeamer.pdf
new file mode 100644
index 0000000..f08d232
--- /dev/null
+++ b/ibeamer.pdf
Binary files differ
diff --git a/ibeamer.tex b/ibeamer.tex
new file mode 100644
index 0000000..67a8199
--- /dev/null
+++ b/ibeamer.tex
@@ -0,0 +1,79 @@
+\documentclass[aspectratio=1610]{beamer}
+\usepackage{ibmcolors}
+\usetheme{ibm}
+
+\title{LaTeX Template using IBM Design Language}
+\subtitle{With a subtitle}
+\author{I. B. Emma}
+\institute{IBM Research Europe -- Zurich}
+% \titlegraphic{<insert institution logo here>}
+\date{Conference Venue, July 2024}
+
+\settopspace{1ex}
+\settitlespace{8ex}
+\setsubtitlespace{4ex}
+\setauthorspace{6ex}
+\setbottomspace{1ex}
+
+\settitlewidth{0.85}
+
+\begin{document}
+
+\begin{frame}
+ \titlepage{}
+\end{frame}
+
+\begin{frame}{IBM Design Language: Colour Palette}
+ Example:
+ {\footnotesize
+ \texttt{\{{\textbackslash}color\{ibmblue60\}blue text\}}
+ }
+ or
+ {\footnotesize
+ \texttt{\{{\textbackslash}color\{ibmred20\}red text\}}
+ }
+
+ \vspace{2ex}
+
+ \centering
+ \begin{tikzpicture}
+ \def\ibmcolours{blue, cyan, teal, green, red, magenta, purple, coolgray, gray, warmgray}
+ \foreach \colour [count=\colournum] in \ibmcolours {%
+ \foreach \level [count=\levelnum] in {10,20,...,50} {%
+ \fill [fill=ibm\colour\level,draw=ibm\colour\level] (1.25*\colournum-1.25,0.5*\levelnum-0.5)
+ rectangle++ (1.25, 0.5)
+ node[midway] {{\tiny\texttt{\level}}};
+ }
+ \foreach \level [count=\levelnum] in {60,70,...,100} {%
+ \fill [fill=ibm\colour\level,draw=ibm\colour\level] (1.25*\colournum-1.25,0.5*\levelnum+4*0.5)
+ rectangle++ (1.25, 0.5)
+ node[midway] {{\color{white}\tiny\texttt{\level}}};
+ }
+ \path [fill=white,draw=white] (1.25*\colournum-1.25,5)
+ rectangle++ (1.25, 0.5)
+ node[midway] {{\tiny\texttt{\colour}}};
+ }
+ \end{tikzpicture}
+\end{frame}
+
+\begin{frame}{Mathematics is important}
+ Here is an equation
+ %
+ \begin{align*}
+ \Phi = \sum_{i=1}^n \phi_i
+ \end{align*}
+ \begin{align*}
+ (2Q)_x
+ = \frac{9x^4 + 6Ax^2 + A^2 - 8y^2x}{4y^2}
+ \end{align*}
+\end{frame}
+
+\begin{frame}{So are big questions}
+
+ {\color{ibmred50} Idea} Use isogenies in your schemes!
+
+ {\color{ibmmagenta50} Question} How to make them efficient?
+
+ {\color{ibmteal50} Answer} Higher-dimensions!
+\end{frame}
+\end{document}
diff --git a/ibmcolors.sty b/ibmcolors.sty
new file mode 100644
index 0000000..ec9fa79
--- /dev/null
+++ b/ibmcolors.sty
@@ -0,0 +1,129 @@
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{ibmcolors}[2025/03/10 Support for IBM's colour palette]
+
+% Pre-defined colors
+% https://www.ctan.org/pkg/xcolor
+\RequirePackage{xcolor}
+
+\definecolor{ibmred100}{RGB}{45, 7, 9}
+\definecolor{ibmred90}{RGB}{82, 4, 8}
+\definecolor{ibmred80}{RGB}{117, 14, 19}
+\definecolor{ibmred70}{RGB}{162, 25, 31}
+\definecolor{ibmred60}{RGB}{218, 30, 40}
+\definecolor{ibmred50}{RGB}{250, 77, 86}
+\definecolor{ibmred40}{RGB}{255, 131, 137}
+\definecolor{ibmred30}{RGB}{255, 179, 184}
+\definecolor{ibmred20}{RGB}{255, 215, 217}
+\definecolor{ibmred10}{RGB}{255, 241, 241}
+\definecolor{ibmmagenta100}{RGB}{42, 10, 24}
+\definecolor{ibmmagenta90}{RGB}{81, 2, 36}
+\definecolor{ibmmagenta80}{RGB}{116, 9, 55}
+\definecolor{ibmmagenta70}{RGB}{159, 24, 83}
+\definecolor{ibmmagenta60}{RGB}{208, 38, 112}
+\definecolor{ibmmagenta50}{RGB}{238, 83, 150}
+\definecolor{ibmmagenta40}{RGB}{255, 126, 182}
+\definecolor{ibmmagenta30}{RGB}{255, 175, 210}
+\definecolor{ibmmagenta20}{RGB}{255, 214, 232}
+\definecolor{ibmmagenta10}{RGB}{255, 240, 247}
+\definecolor{ibmpurple100}{RGB}{28, 15, 48}
+\definecolor{ibmpurple90}{RGB}{49, 19, 94}
+\definecolor{ibmpurple80}{RGB}{73, 29, 139}
+\definecolor{ibmpurple70}{RGB}{105, 41, 196}
+\definecolor{ibmpurple60}{RGB}{138, 63, 252}
+\definecolor{ibmpurple50}{RGB}{165, 110, 255}
+\definecolor{ibmpurple40}{RGB}{190, 149, 255}
+\definecolor{ibmpurple30}{RGB}{212, 187, 255}
+\definecolor{ibmpurple20}{RGB}{232, 218, 255}
+\definecolor{ibmpurple10}{RGB}{246, 242, 255}
+\definecolor{ibmblue100}{RGB}{0, 17, 65}
+\definecolor{ibmblue90}{RGB}{0, 29, 108}
+\definecolor{ibmblue80}{RGB}{0, 45, 156}
+\definecolor{ibmblue70}{RGB}{0, 67, 206}
+\definecolor{ibmblue60}{RGB}{15, 98, 254}
+\definecolor{ibmblue50}{RGB}{69, 137, 255}
+\definecolor{ibmblue40}{RGB}{120, 169, 255}
+\definecolor{ibmblue30}{RGB}{166, 200, 255}
+\definecolor{ibmblue20}{RGB}{208, 226, 255}
+\definecolor{ibmblue10}{RGB}{237, 245, 255}
+\definecolor{ibmcyan100}{RGB}{6, 23, 39}
+\definecolor{ibmcyan90}{RGB}{1, 39, 73}
+\definecolor{ibmcyan80}{RGB}{0, 58, 109}
+\definecolor{ibmcyan70}{RGB}{0, 83, 154}
+\definecolor{ibmcyan60}{RGB}{0, 114, 195}
+\definecolor{ibmcyan50}{RGB}{17, 146, 232}
+\definecolor{ibmcyan40}{RGB}{51, 177, 255}
+\definecolor{ibmcyan30}{RGB}{130, 207, 255}
+\definecolor{ibmcyan20}{RGB}{186, 230, 255}
+\definecolor{ibmcyan10}{RGB}{229, 246, 255}
+\definecolor{ibmteal100}{RGB}{8, 26, 28}
+\definecolor{ibmteal90}{RGB}{2, 43, 48}
+\definecolor{ibmteal80}{RGB}{0, 65, 68}
+\definecolor{ibmteal70}{RGB}{0, 93, 93}
+\definecolor{ibmteal60}{RGB}{0, 125, 121}
+\definecolor{ibmteal50}{RGB}{0, 157, 154}
+\definecolor{ibmteal40}{RGB}{8, 189, 186}
+\definecolor{ibmteal30}{RGB}{61, 219, 217}
+\definecolor{ibmteal20}{RGB}{158, 240, 240}
+\definecolor{ibmteal10}{RGB}{217, 251, 251}
+\definecolor{ibmgreen100}{RGB}{7, 25, 8}
+\definecolor{ibmgreen90}{RGB}{2, 45, 13}
+\definecolor{ibmgreen80}{RGB}{4, 67, 23}
+\definecolor{ibmgreen70}{RGB}{14, 96, 39}
+\definecolor{ibmgreen60}{RGB}{25, 128, 56}
+\definecolor{ibmgreen50}{RGB}{36, 161, 72}
+\definecolor{ibmgreen40}{RGB}{66, 190, 101}
+\definecolor{ibmgreen30}{RGB}{111, 220, 140}
+\definecolor{ibmgreen20}{RGB}{167, 240, 186}
+\definecolor{ibmgreen10}{RGB}{222, 251, 230}
+\definecolor{ibmcoolgray100}{RGB}{18, 22, 25}
+\definecolor{ibmcoolgray90}{RGB}{33, 39, 42}
+\definecolor{ibmcoolgray80}{RGB}{52, 58, 63}
+\definecolor{ibmcoolgray70}{RGB}{77, 83, 88}
+\definecolor{ibmcoolgray60}{RGB}{105, 112, 119}
+\definecolor{ibmcoolgray50}{RGB}{135, 141, 150}
+\definecolor{ibmcoolgray40}{RGB}{162, 169, 176}
+\definecolor{ibmcoolgray30}{RGB}{193, 199, 205}
+\definecolor{ibmcoolgray20}{RGB}{221, 225, 230}
+\definecolor{ibmcoolgray10}{RGB}{242, 244, 248}
+\definecolor{ibmgray100}{RGB}{22, 22, 22}
+\definecolor{ibmgray90}{RGB}{38, 38, 38}
+\definecolor{ibmgray80}{RGB}{57, 57, 57}
+\definecolor{ibmgray70}{RGB}{82, 82, 82}
+\definecolor{ibmgray60}{RGB}{111, 111, 111}
+\definecolor{ibmgray50}{RGB}{141, 141, 141}
+\definecolor{ibmgray40}{RGB}{168, 168, 168}
+\definecolor{ibmgray30}{RGB}{198, 198, 198}
+\definecolor{ibmgray20}{RGB}{224, 224, 224}
+\definecolor{ibmgray10}{RGB}{244, 244, 244}
+\definecolor{ibmwarmgray100}{RGB}{23, 20, 20}
+\definecolor{ibmwarmgray90}{RGB}{39, 37, 37}
+\definecolor{ibmwarmgray80}{RGB}{60, 56, 56}
+\definecolor{ibmwarmgray70}{RGB}{86, 81, 81}
+\definecolor{ibmwarmgray60}{RGB}{114, 110, 110}
+\definecolor{ibmwarmgray50}{RGB}{143, 139, 139}
+\definecolor{ibmwarmgray40}{RGB}{173, 168, 168}
+\definecolor{ibmwarmgray30}{RGB}{202, 197, 196}
+\definecolor{ibmwarmgray20}{RGB}{229, 224, 223}
+\definecolor{ibmwarmgray10}{RGB}{247, 243, 242}
+
+\colorlet{ibmblue}{ibmblue60}
+\colorlet{ibmcyan}{ibmcyan60}
+\colorlet{ibmteal}{ibmteal60}
+\colorlet{ibmgreen}{ibmgreen60}
+\colorlet{ibmred}{ibmred60}
+\colorlet{ibmmagenta}{ibmmagenta60}
+\colorlet{ibmpurple}{ibmpurple60}
+\colorlet{ibmcoolgray}{ibmcoolgray60}
+\colorlet{ibmgray}{ibmgray60}
+\colorlet{ibmwarmgray}{ibmwarmgray60}
+
+\newcommand{\ibmblue}{ibmblue60}
+\newcommand{\ibmcyan}{ibmcyan60}
+\newcommand{\ibmteal}{ibmteal60}
+\newcommand{\ibmgreen}{ibmgreen60}
+\newcommand{\ibmred}{ibmred60}
+\newcommand{\ibmmagenta}{ibmmagenta60}
+\newcommand{\ibmpurple}{ibmpurple60}
+\newcommand{\ibmcoolgray}{ibmcoolgray60}
+\newcommand{\ibmgray}{ibmgray60}
+\newcommand{\ibmwarmgray}{ibmwarmgray60}