1% Copyright 2003--2007 by Till Tantau 2% Copyright 2010 by Vedran Mileti\'c 3% Copyright 2011--2013,2015 by Vedran Mileti\'c, Joseph Wright 4% Copyright 2016 by Joseph Wright 5% Copyright 2017,2018 by Louis Stuart, Joseph Wright 6% 7% This file may be distributed and/or modified 8% 9% 1. under the LaTeX Project Public License and/or 10% 2. under the GNU Public License. 11% 12% See the file doc/licenses/LICENSE for more details. 13 14\mode 15<presentation> 16 17% 18% Setting the left and right margin 19% 20% 21\beamer@leftmargin=1cm 22\beamer@rightmargin=1cm 23 24\newif\ifbeamer@dogeometry 25 26\define@key{beamer@margin}{text margin left}{\beamer@leftmargin=#1\beamer@dogeometrytrue} 27\define@key{beamer@margin}{text margin right}{\beamer@rightmargin=#1\beamer@dogeometrytrue} 28\define@key{beamer@margin}{sidebar width left}{\beamer@leftsidebar=#1\beamer@dogeometrytrue} 29\define@key{beamer@margin}{sidebar width right}{\beamer@rightsidebar=#1\beamer@dogeometrytrue} 30 31\newcommand{\setbeamersize}[1]{% 32 \beamer@dogeometryfalse% 33 \setkeys{beamer@margin}{#1}% 34 \ifbeamer@dogeometry% 35 % Reset left margin now 36 \beamer@tempdim=\beamer@leftmargin% 37 \advance\beamer@tempdim by\beamer@leftsidebar% 38 \geometry{left=\the\beamer@tempdim}% 39 % Reset right margin now 40 \beamer@tempdim=\beamer@rightmargin% 41 \advance\beamer@tempdim by\beamer@rightsidebar% 42 \geometry{right=\the\beamer@tempdim}% 43 \fi% 44} 45 46\mode 47<article> 48{ 49 \newcommand{\setbeamersize}[1]{} 50} 51 52 53 54 55 56% Constructing a frame: 57 58\let\@mkboth\@gobbletwo 59\def\ps@navigation{ 60 \def\@oddhead{% 61 \begingroup% 62 \setbox\beamer@tempbox=\hbox{\usebeamertemplate***{background canvas}\hyper@pagetransition\hyper@pageduration}% 63 \beamer@tempdim=\ht\beamer@tempbox% 64 \setbox\beamer@tempbox=\hbox{\lower\beamer@tempdim\hbox{\box\beamer@tempbox}}% 65 \wd\beamer@tempbox=0pt\ht\beamer@tempbox=0pt\dp\beamer@tempbox=0pt% 66 \setbox\@tempboxa=\hbox{\usebeamertemplate***{background}}% 67 \beamer@tempdim=\ht\@tempboxa% 68 \setbox\@tempboxa=\hbox{\lower\beamer@tempdim\hbox{\box\@tempboxa}}% 69 \wd\@tempboxa=0pt\ht\@tempboxa=0pt\dp\@tempboxa=0pt% 70 \vbox{\hbox{\hskip-\Gm@lmargin\box\beamer@tempbox\box\@tempboxa}% 71 \hbox{% 72 {% 73 \setbox\beamer@tempbox=\hbox{\hskip-\Gm@lmargin% 74 {\setbox\beamer@tempbox=\hbox{\vbox to \sidebarheight{% 75 \usebeamercolor*{sidebar left}% 76 \usebeamertemplate{sidebar canvas left}% 77 \vss% 78 }}% 79 \wd\beamer@tempbox=0pt\ht\beamer@tempbox=0pt\dp\beamer@tempbox=0pt% 80 \box\beamer@tempbox}% 81 {% 82 \vbox to \sidebarheight{% 83 \usebeamertemplate***{sidebar left}% 84 \vfil% 85 }}}% 86 \beamer@tempdim=\ht\beamer@tempbox% 87 \setbox\beamer@tempbox=\hbox{{\lower\beamer@tempdim\hbox{\box\beamer@tempbox}}}% 88 \wd\beamer@tempbox=0pt\ht\beamer@tempbox=0pt\dp\beamer@tempbox=0pt% 89 \box\beamer@tempbox% 90 }% 91 {% print right sidebar first, since it should be overwritten by headline 92 \setbox\beamer@tempbox=\hbox{\hskip\textwidth\hskip\beamer@rightmargin% 93 {\setbox\beamer@tempbox=\hbox{\vbox to \sidebarheight{% 94 \usebeamercolor*{sidebar right}% 95 \usebeamertemplate{sidebar canvas right}% 96 \vss% 97 }}% 98 \wd\beamer@tempbox=0pt\ht\beamer@tempbox=0pt\dp\beamer@tempbox=0pt% 99 \box\beamer@tempbox}% 100 {% 101 \vbox to \sidebarheight{% 102 \usebeamertemplate***{sidebar right}% 103 \vfil% 104 }}}% 105 \beamer@tempdim=\ht\beamer@tempbox% 106 \setbox\beamer@tempbox=\hbox{{\lower\beamer@tempdim\hbox{\box\beamer@tempbox}}}% 107 \wd\beamer@tempbox=0pt\ht\beamer@tempbox=0pt\dp\beamer@tempbox=0pt% 108 \box\beamer@tempbox% 109 }% 110 \beamer@typesetheadorfoot{headline}% 111 }% 112 \hfil}% 113 \endgroup} 114 \def\@oddfoot{% 115 \vbox{\offinterlineskip\hbox{\beamer@typesetheadorfoot{footline}% 116 \hfil}\hbox{}}\hfil 117 }% 118 \let\@evenhead\@oddhead 119 \let\@evenfoot\@oddfoot} 120\pagestyle{navigation} 121 122\def\beamer@typesetheadorfoot#1{% typeset the head or footline 123 {\parskip0pt\offinterlineskip% 124 \hbox{% 125 \hskip-\Gm@lmargin% 126 \hbox{% 127 \vbox{% 128 \@tempdima=\textwidth% 129 \textwidth=\paperwidth% 130 \hsize=\textwidth% 131 \def\\{,}% 132 \usebeamertemplate***{#1}% 133 }}% 134 \hskip-\Gm@rmargin% 135 }}\hfil% 136} 137 138% 139% Patch empty page style, so that transitions and navigation still works 140% 141\def\ps@empty{% 142 \let\@mkboth\@gobbletwo% 143 \def\@oddhead{\begingroup% 144 \setbox\beamer@tempbox=\hbox{\usebeamertemplate***{background canvas}\hyper@pagetransition\hyper@pageduration}% 145 \beamer@tempdim=\ht\beamer@tempbox% 146 \setbox\beamer@tempbox=\hbox{\lower\beamer@tempdim\hbox{\box\beamer@tempbox}}% 147 \wd\beamer@tempbox=0pt\ht\beamer@tempbox=0pt\dp\beamer@tempbox=0pt% 148 \setbox\@tempboxa=\hbox{\usebeamertemplate***{background}}% 149 \beamer@tempdim=\ht\@tempboxa% 150 \setbox\@tempboxa=\hbox{\lower\beamer@tempdim\hbox{\box\@tempboxa}}% 151 \wd\@tempboxa=0pt\ht\@tempboxa=0pt\dp\@tempboxa=0pt% 152 \vbox{\hbox{\hskip-\Gm@lmargin\raise\headheight\box\beamer@tempbox\raise\headheight\box\@tempboxa}\hfil}% 153 \endgroup% 154 } 155 \def\@oddfoot{\normalcolor{\hfil% 156 \setbox\beamer@tempbox=\hbox{\usebeamertemplate***{navigation symbols}\hskip-\Gm@rmargin\hskip2pt}% 157 \ht\beamer@tempbox=0pt% 158 \dp\beamer@tempbox=0pt% 159 \box\beamer@tempbox}} 160 \let\@evenhead\@oddhead\let\@evenfoot\@oddfoot} 161 162\def\beamer@calculateheadfoot{% 163 \setbox\beamer@tempbox=\hbox{{\beamer@typesetheadorfoot{footline}}}% 164 \footheight=\ht\beamer@tempbox% 165 \advance\footheight by \dp\beamer@tempbox% 166 \advance\footheight by 4pt% 167 \setbox\beamer@tempbox=\hbox{{\beamer@typesetheadorfoot{headline}}}% 168 \headheight=\ht\beamer@tempbox% 169 \headdp=\dp\beamer@tempbox% 170 \advance\headheight by\headdp% 171 \sidebarheight=\paperheight% 172 \advance\sidebarheight by-\headheight% 173 \advance\sidebarheight by\headdp% 174 \advance\sidebarheight by-\footheight% 175 \advance\sidebarheight by 4pt% 176 \footskip=\footheight% 177 \textheight=\paperheight% 178 \advance\textheight by-\footheight% 179 \advance\textheight by-\headheight% 180 \@colht\textheight% 181 \@colroom\textheight% 182 \vsize\textheight% 183} 184 185 186\def\insertpagenumber{\thepage} 187 188 189 190% 191% 192% Columns 193% 194% 195\define@key{beamer@col}{onlytextwidth}[true]{% 196 \def\beamer@colentrycode{\hbox to\textwidth\bgroup\ignorespaces}% 197 \def\beamer@colexitcode{\unskip\egroup}} 198\define@key{beamer@col}{totalwidth}{% 199 \def\beamer@colentrycode{\hbox to#1\bgroup\ignorespaces}% 200 \def\beamer@colexitcode{\unskip\egroup}} 201\define@key{beamer@col}{c}[true]{\def\beamer@colmode{c}\def\beamer@colalign{c}\def\beamer@colheadskip{}} 202\define@key{beamer@col}{t}[true]{\def\beamer@colmode{t}\def\beamer@colalign{t}\def\beamer@colheadskip{}} 203\define@key{beamer@col}{T}[true]{\def\beamer@colmode{T}\def\beamer@colalign{t}\def\beamer@colheadskip{\vskip-1ex\nointerlineskip}} 204\define@key{beamer@col}{b}[true]{\def\beamer@colmode{b}\def\beamer@colalign{b}\def\beamer@colheadskip{}} 205 206\newenvironment<>{columns}[1][]{% 207 \begin{actionenv}#2% 208 \def\beamer@colentrycode{% 209 \hbox to\textwidth\bgroup% 210 \leavevmode% 211 \hskip-\beamer@leftmargin% 212 \nobreak% 213 \beamer@tempdim=\textwidth% 214 \advance\beamer@tempdim by\beamer@leftmargin% 215 \advance\beamer@tempdim by\beamer@rightmargin% 216 \hbox to\beamer@tempdim\bgroup% 217 \hbox{}\hfill\ignorespaces}% 218 \def\beamer@colexitcode{\egroup% 219 \nobreak% 220 \hskip-\beamer@rightmargin\egroup}% 221 \ifbeamer@centered\setkeys{beamer@col}{c}\else\setkeys{beamer@col}{t}\fi% 222 \setkeys{beamer@col}{#1}% 223 \par% 224 \beamer@colentrycode% 225 \def\beamer@colclose{}\ignorespaces}% 226 {\beamer@colclose\def\beamer@colclose{}\beamer@colexitcode\end{actionenv}}% 227 228\mode 229<article> 230{ 231 % do sth. more intelligent in the future 232 \newenvironment<>{columns}[1][]{}{} 233} 234 235 236 237 238% 239% 240% Column command/environment 241% 242% 243 244\mode 245<all> 246{ 247\def\beamer@columnname{column} 248\def\column{% 249 \ifx\@currenvir\beamer@columnname% 250 \let\beamer@next=\beamer@columnenv% 251 \else% 252 \let\beamer@next=\beamer@columncom% 253 \fi% 254 \beamer@next} 255} 256 257\newenvironment<>{beamer@columnenv}[2][\beamer@colmode]{% 258 \beamer@colclose\def\beamer@colclose{}% 259 \begin{actionenv}#3% 260 \setkeys{beamer@col}{#1}% 261 \begin{minipage}[\beamer@colalign]{#2}% 262 \leavevmode\raggedright\beamer@colheadskip\ignorespaces} 263 {\end{minipage}\hfill\end{actionenv}\@ignoretrue} 264\let\endcolumn\endbeamer@columnenv 265 266\newcommand<>\beamer@columncom[2][\beamer@colmode]{% 267 \beamer@colclose% 268 \def\beamer@colclose{\end{minipage}\hfill\end{actionenv}\ignorespaces}% 269\begin{actionenv}#3% 270 \setkeys{beamer@col}{#1}% 271 \begin{minipage}[\beamer@colalign]{#2}% 272 \leavevmode\raggedright\beamer@colheadskip\ignorespaces} 273 274 275\mode 276<article> 277{ 278 \newenvironment<>{beamer@columnenv}[2][]{}{} 279 \newcommand<>{\beamer@columncom}[2][]{} 280} 281 282 283 284% 285% 286% Footnotes 287% 288% 289 290\def\@makefnmark{\hbox{\@textsuperscript{{\usebeamercolor[fg]{footnote mark}\usebeamerfont*{footnote mark}\@thefnmark}}}} 291 292\def\@makefntext#1{% 293 \def\insertfootnotetext{#1}% 294 \def\insertfootnotemark{\@makefnmark}% 295 \usebeamertemplate***{footnote}} 296 297\newbox\beamer@footins 298 299\newcommand<>\beamer@framefootnotetext[1]{% 300 \global\setbox\beamer@footins\vbox{% 301 \hsize\framewidth 302 \textwidth\hsize 303 \columnwidth\hsize 304 \unvbox\beamer@footins 305 \reset@font\footnotesize 306 \@parboxrestore 307 \protected@edef\@currentlabel 308 {\csname p@footnote\endcsname\@thefnmark}% 309 \color@begingroup 310 \uncover#2{\@makefntext{% 311 \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}}% 312 \color@endgroup}} 313 314\renewcommand<>\@mpfootnotetext[1]{% 315 \global\setbox\@mpfootins\vbox{% 316 \unvbox\@mpfootins 317 \reset@font\footnotesize 318 \hsize0.85\paperwidth 319 \@parboxrestore 320 \protected@edef\@currentlabel 321 {\csname p@mpfootnote\endcsname\@thefnmark}% 322 \color@begingroup 323 \uncover#2{\@makefntext{% 324 \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}}% 325 \color@endgroup}} 326 327\let\@footnotetext=\beamer@framefootnotetext 328 329\define@key{beamerfootnote}{frame}[true]{% 330 \let\beamer@footnotetext=\beamer@framefootnotetext% 331 \def\beamer@mpfn{footnote}% 332 \def\beamer@thempfn{\thefootnote}} 333 334\renewcommand<>{\footnote}[1][]{% 335 \let\beamer@footnotetext=\@footnotetext% 336 \let\beamer@mpfn=\@mpfn% 337 \let\beamer@thempfn=\thempfn% 338 \let\beamer@kvorig=\KV@errx% 339 \let\beamer@xkvorig=\XKV@err 340 \def\beamer@footarg{}% 341 \def\KV@errx##1{\edef\beamer@footarg{\@tempa}}% 342 \def\XKV@err##1{\edef\beamer@footarg{\XKV@tkey}}% 343 \setkeys{beamerfootnote}{#1}% 344 \let\KV@errx=\beamer@kvorig% 345 \let\XKV@errx=\beamer@xkvorig 346 \ifx\beamer@footarg\@empty% 347 \def\beamer@next{\stepcounter\beamer@mpfn 348 \protected@xdef\@thefnmark{\beamer@thempfn}% 349 \@footnotemark\beamer@footnotetext#2}% 350 \else% 351 \def\beamer@next{% 352 \begingroup 353 \csname c@\beamer@mpfn\endcsname\beamer@footarg\relax 354 \unrestored@protected@xdef\@thefnmark{\beamer@thempfn}% 355 \endgroup 356 \@footnotemark\beamer@footnotetext#2}% 357 \fi% 358 \beamer@next} 359 360\mode 361<article> 362{ 363 \define@key{beamerfootnote}{frame}[true]{} 364 365\let\beamer@origfootnote=\footnote 366 \renewcommand<>\footnote[1][]{% 367 \let\beamer@kvorig=\KV@errx% 368 \let\beamer@xkvorig=\XKV@err 369 \def\beamer@footarg{}% 370 \def\KV@errx##1{\edef\beamer@footarg{\@tempa}}% 371 \def\XKV@err##1{\edef\beamer@footarg{\XKV@tkey}}% 372 \setkeys{beamerfootnote}{#1}% 373 \let\KV@errx=\beamer@kvorig% 374 \let\XKV@errx=\beamer@xkvorig 375 \ifx\beamer@footarg\@empty% 376 \edef\beamer@next{\noexpand\beamer@origfootnote}% 377 \else% 378 \edef\beamer@next{\noexpand\beamer@origfootnote[\beamer@footarg]}% 379 \fi% 380 \beamer@next} 381} 382 383 384\mode 385<all> 386