From 7624b93d0f5ac5ad5094c1c84ace0239c562f124 Mon Sep 17 00:00:00 2001 From: Ryan Rueger Date: Tue, 18 Mar 2025 14:03:23 +0100 Subject: Initial commit --- README.md | 54 ++++++++++++++++++++ beamercolorthemeibm.sty | 11 +++++ beamerinnerthemeibm.sty | 71 ++++++++++++++++++++++++++ beamerouterthemeibm.sty | 29 +++++++++++ beamerthemeibm.sty | 51 +++++++++++++++++++ ibeamer.pdf | Bin 0 -> 26030 bytes ibeamer.tex | 79 +++++++++++++++++++++++++++++ ibmcolors.sty | 129 ++++++++++++++++++++++++++++++++++++++++++++++++ 8 files changed, 424 insertions(+) create mode 100644 README.md create mode 100644 beamercolorthemeibm.sty create mode 100644 beamerinnerthemeibm.sty create mode 100644 beamerouterthemeibm.sty create mode 100644 beamerthemeibm.sty create mode 100644 ibeamer.pdf create mode 100644 ibeamer.tex create mode 100644 ibmcolors.sty 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 + +\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 + 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 + +\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 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 + +\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 diff --git a/ibeamer.pdf b/ibeamer.pdf new file mode 100644 index 0000000..f08d232 Binary files /dev/null and b/ibeamer.pdf 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{} +\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} -- cgit v1.2.3-89-gcfd4