From 6ad1cf68ae6add67e56faf5ec4390fead04e31b4 Mon Sep 17 00:00:00 2001
From: Norbert Preining <norbert@preining.info>
Date: Fri, 19 Mar 2021 03:00:56 +0000
Subject: CTAN sync 202103190300

---
 macros/luatex/latex/beamer-rl/beamer-rl.cls | 950 +++++++++++++---------------
 1 file changed, 423 insertions(+), 527 deletions(-)

(limited to 'macros/luatex/latex/beamer-rl/beamer-rl.cls')

diff --git a/macros/luatex/latex/beamer-rl/beamer-rl.cls b/macros/luatex/latex/beamer-rl/beamer-rl.cls
index 906a46fd9f..c85b7c769e 100644
--- a/macros/luatex/latex/beamer-rl/beamer-rl.cls
+++ b/macros/luatex/latex/beamer-rl/beamer-rl.cls
@@ -1,527 +1,423 @@
-\NeedsTeXFormat{LaTeX2e}
-\ProvidesClass{beamer-rl}
-[2020/08/04 v1.4a  LaTeX class to patch beamer for right to left presentation with babel]
-
-\RequirePackage{kvoptions}
-\RequirePackage{kvsetkeys}
-
-\SetupKeyvalOptions{
-	family=beamer-rl,
-	prefix=beamer-rl@,
-	setkeys=\kvsetkeys,
-}
-
-% babel options:
-\define@key{beamer-rl}{babel}{%
-	\PassOptionsToPackage{#1}{babel}%
-}
-
-\DeclareVoidOption{arabic}{%
-             \@expandtwoargs\@removeelement\CurrentOption\@classoptionslist\@classoptionslist % remove arabic option from global list  
-   %         \PassOptionsToPackage{arabic}{translator}%
-              \AtBeginDocument{\uselanguage{Arabic}\languagealias{arabic}{Arabic}}
-}
-
-\DeclareDefaultOption{%
-	\PassOptionsToClass{\CurrentOption}{beamer}%
-}
-
-\ProcessKeyvalOptions*\relax
-
-\RequirePackage{ifluatex}
-
-\ifluatex
-\else
-\ClassError{beamer-rl}{beamer-rl require luatex}
-\fi
-
-\LoadClass[hyperref={unicode}]{beamer}
-
-\RequirePackage[nil,bidi=basic-r]{babel}
-
-\def\reset@temp#1#2{\expandafter\let\csname beamer@@tmpop@#1@#2\endcsname\relax}
-\def\@@defbeamertemplate#1#2{\reset@temp{#1}{#2}\defbeamertemplate{#1}{#2}}
-\def\@defbeamertemplate#1#2{\reset@temp{#1}{#2}\defbeamertemplate*{#1}{#2}}
-
-\def\redefbeamertemplate{%
-	\@ifstar{\@defbeamertemplate}{\@@defbeamertemplate}%
-}
-
-\let\old@blacktriangleright\blacktriangleright
-\let\old@blacktriangleleft\blacktriangleleft
-
-\def\blacktriangleright{%
-	\ifcase\bbl@thepardir \old@blacktriangleright\else\old@blacktriangleleft\fi}
-\def\blacktriangleleft{%
-	\ifcase\bbl@thepardir \old@blacktriangleleft\else\old@blacktriangleright\fi}
-
-
-\let\oldpgfpicture\pgfpicture
-\let\endoldpgfpicture\endpgfpicture
-
-\def\pgfpicture{\babelsublr\bgroup\oldpgfpicture}
-\def\endpgfpicture{\endoldpgfpicture\egroup}
-
-\let\oldpgfuseshading\pgfuseshading
-\def\pgfuseshading#1{\babelsublr{\oldpgfuseshading{#1}}}
-
-
-%% beamerbasebox 
-
-\newdimen\bmb@dimc
-
-\renewcommand\beamerboxesrounded[2][]{%
-	\global\let\beamer@firstlineitemizeunskip=\relax%
-	\vbox\bgroup%
-	\setkeys{beamerboxes}{upper=block title,lower=block body,width=\textwidth,shadow=false}%
-	\setkeys{beamerboxes}{#1}%
-	{%
-		\usebeamercolor{\bmb@lower}%
-		\globalcolorstrue%
-		\colorlet{lower.bg}{bg}%
-	}%
-	{%
-		\usebeamercolor{\bmb@upper}%
-		\globalcolorstrue%
-		\colorlet{upper.bg}{bg}%
-	}%
-	%
-	% Typeset head
-	%
-	\vskip4bp
-	\setbox\bmb@box=\hbox{%
-		\begin{minipage}[b]{\bmb@width}%
-			\usebeamercolor[fg]{\bmb@upper}%
-			#2%
-	\end{minipage}}%
-	\ifdim\wd\bmb@box=0pt%
-	\setbox\bmb@box=\hbox{}%
-	\ht\bmb@box=1.5pt%
-	\bmb@prevheight=-4.5pt%
-	\else%
-	\wd\bmb@box=\bmb@width%
-	\bmb@temp=\dp\bmb@box%
-	\ifdim\bmb@temp<1.5pt%
-	\bmb@temp=1.5pt%
-	\fi%
-	\setbox\bmb@box=\hbox{\raise\bmb@temp\hbox{\box\bmb@box}}%
-	\dp\bmb@box=0pt%
-	\bmb@prevheight=\ht\bmb@box%
-	\fi%
-	\bmb@temp=\bmb@width%
-	\bmb@dima=\bmb@temp\advance\bmb@dima by2.2bp%
-	\bmb@dimb=\bmb@temp\advance\bmb@dimb by4bp%
-	\bmb@dimc=0pt%
-	\ifdim\wd\bmb@box=0pt
-	\bmb@dimc=\bmb@width%
-	\fi
-	\hbox{%
-		\textdir TLT\begin{pgfpicture}{0bp}{+-\ht\bmb@box}{\bmb@dimc}{+-\ht\bmb@box}
-			\ifdim\wd\bmb@box=0pt%
-			\color{lower.bg}%
-			\else%
-			\color{upper.bg}%
-			\fi%
-			\pgfpathqmoveto{-4bp}{-1bp}
-			\pgfpathqcurveto{-4bp}{1.2bp}{-2.2bp}{3bp}{0bp}{3bp}
-			\pgfpathlineto{\pgfpoint{\bmb@temp}{3bp}}
-			\pgfpathcurveto%
-			{\pgfpoint{\bmb@dima}{3bp}}%
-			{\pgfpoint{\bmb@dimb}{1.2bp}}%
-			{\pgfpoint{\bmb@dimb}{-1bp}}%
-			\bmb@dima=-\ht\bmb@box%
-			\advance\bmb@dima by-2pt%
-			\pgfpathlineto{\pgfpoint{\bmb@dimb}{\bmb@dima}}
-			\pgfpathlineto{\pgfpoint{-4bp}{\bmb@dima}}
-			\pgfusepath{fill}
-		\end{pgfpicture}%
-		\copy\bmb@box%
-	}%
-	\nointerlineskip%
-	\vskip-1pt%
-	\ifdim\wd\bmb@box=0pt%
-	\else%
-	\hbox{%
-		\begin{pgfpicture}{0pt}{0pt}{\bmb@width}{6pt}
-			\bmb@dima=\bmb@width%
-			\advance\bmb@dima by8bp%
-			\pgfpathrectangle{\pgfpoint{-4bp}{-1bp}}{\pgfpoint{\bmb@dima}{8bp}}
-			\pgfusepath{clip}
-			{\pgftransformshift{\pgfpoint{-4bp}{0bp}}\pgftext[left,base]{\pgfuseshading{bmb@transition}}}%
-		\end{pgfpicture}%
-	}%
-	\nointerlineskip%
-	\vskip-0.5pt%
-	\fi%
-	\ifbmb@shadow%
-	\setbox\bmb@boxshadow=\hbox{\pgfuseshading{bmb@shadow}}%
-	\setbox\bmb@boxshadowball=\hbox{\pgfuseshading{bmb@shadowball}}%
-	\setbox\bmb@boxshadowballlarge=\hbox{\pgfuseshading{bmb@shadowballlarge}}%
-	\fi%
-	\setbox\bmb@colorbox=\hbox{{\pgfpicturetrue\pgfsetcolor{lower.bg}}}%
-	\setbox\bmb@box=\hbox\bgroup\begin{minipage}[b]{\bmb@width}%
-		\vskip2pt%
-		\usebeamercolor[fg]{\bmb@lower}%
-		\colorlet{beamerstructure}{upper.bg}%
-		\colorlet{structure}{upper.bg}%
-		%\color{.}%
-	}
-	
-	\def\endbeamerboxesrounded{%
-	\end{minipage}\egroup%
-	\wd\bmb@box=\bmb@width%
-	\bmb@temp=\dp\bmb@box%
-	\advance\bmb@temp by.5pt%
-	\setbox\bmb@box=\hbox{\raise\bmb@temp\hbox{\box\bmb@box}}%
-	\dp\bmb@box=0pt%
-	\bmb@temp=\wd\bmb@box%
-	\bmb@dima=\bmb@temp\advance\bmb@dima by2.2bp%
-	\bmb@dimb=\bmb@temp\advance\bmb@dimb by4bp%
-	\hbox{%
-		\textdir TLT\begin{pgfpicture}{0bp}{0bp}{0bp}{0bp}
-			\ifbmb@shadow%
-			{\pgftransformshift{\pgfpoint{4bp}{-3bp}}\pgftext{\copy\bmb@boxshadowball}}
-			\begin{pgfscope}
-				{%
-					\advance\bmb@temp by-1bp%
-					\pgfpathrectangle{\pgfpoint{\bmb@temp}{-7bp}}{\pgfpoint{9bp}{9bp}}%
-					\pgfusepath{clip}
-				}%
-				{\pgftransformshift{\pgfpoint{\bmb@temp}{1bp}}\pgftext{\box\bmb@boxshadowballlarge}}
-			\end{pgfscope}
-			\begin{pgfscope}
-				\advance\bmb@temp by-4bp%
-				\pgfpathrectangle{\pgfpoint{4bp}{-7bp}}{\pgfpoint{\bmb@temp}{5bp}}
-				\pgfusepath{clip}
-				{\pgftransformshift{\pgfpoint{4bp}{-7bp}}\pgftext[left,base]{\copy\bmb@boxshadow}}%
-			\end{pgfscope}
-			\begin{pgfscope}
-				\advance\bmb@temp by 4bp%
-				\bmb@dima=\ht\bmb@box%
-				\advance\bmb@dima by\bmb@prevheight%
-				\advance\bmb@dima by 4bp%
-				\pgfpathrectangle{\pgfpoint{\bmb@temp}{1bp}}{\pgfpoint{4bp}{\bmb@dima}}
-				\pgfusepath{clip}
-				\advance\bmb@dima by-4bp%
-				{\pgftransformshift{\pgfpoint{\bmb@temp}{\bmb@dima}}\pgftext{\box\bmb@boxshadowball}}
-				\advance\bmb@dima by-1bp%
-				\pgfpathrectangle{\pgfpoint{\bmb@temp}{1bp}}{\pgfpoint{4bp}{\bmb@dima}}
-				\pgfusepath{clip}
-				\advance\bmb@temp by4bp%
-				{\pgftransformshift{\pgfpoint{\bmb@temp}{-3bp}}%
-					\pgftransformrotate{90}%
-					\pgftext[left,base]{\box\bmb@boxshadow}}%
-			\end{pgfscope}
-			\fi%
-			\unhbox\bmb@colorbox%
-			\pgfpathqmoveto{-4bp}{1bp}
-			\pgfpathqcurveto{-4bp}{-1.2bp}{-2.2bp}{-3bp}{0bp}{-3bp}
-			\pgfpathlineto{\pgfpoint{\the\bmb@temp}{-3bp}}
-			\pgfpathcurveto%
-			{\pgfpoint{\the\bmb@dima}{-3bp}}%
-			{\pgfpoint{\the\bmb@dimb}{-1.2bp}}%
-			{\pgfpoint{\the\bmb@dimb}{1bp}}%
-			{
-				\bmb@dima=\ht\bmb@box%
-				\pgfpathlineto{\pgfpoint{\bmb@dimb}{\bmb@dima}}
-				\pgfpathlineto{\pgfpoint{-4bp}{\bmb@dima}}
-				\pgfusepath{fill}
-			}
-			\ifbmb@shadow%
-			{
-				\color{black!50!bg}
-				\pgfsetlinewidth{0pt}
-				\pgfpathmoveto{\pgfpoint{\bmb@dimb}{-.5bp}}
-				\bmb@dima=\ht\bmb@box%
-				\advance\bmb@dima by\bmb@prevheight%
-				\advance\bmb@dima by 1bp%
-				\pgfpathlineto{\pgfpoint{\bmb@dimb}{\bmb@dima}}
-				\pgfusepath{stroke}
-				\bmb@temp=\bmb@dima
-				\advance\bmb@dima by 1bp%
-				\color{black!31!bg}
-				\pgfpathmoveto{\pgfpoint{\bmb@dimb}{\bmb@temp}}
-				\pgfpathlineto{\pgfpoint{\bmb@dimb}{\bmb@dima}}
-				\pgfusepath{stroke}
-				\advance\bmb@dima by 1bp%
-				\advance\bmb@temp by 1bp%
-				\color{black!19!bg}
-				\pgfpathmoveto{\pgfpoint{\bmb@dimb}{\bmb@temp}}
-				\pgfpathlineto{\pgfpoint{\bmb@dimb}{\bmb@dima}}
-				\pgfusepath{stroke}
-				\advance\bmb@dima by 1bp%
-				\advance\bmb@temp by 1bp%
-				\color{black!6!bg}
-				\pgfpathmoveto{\pgfpoint{\bmb@dimb}{\bmb@temp}}
-				\pgfpathlineto{\pgfpoint{\bmb@dimb}{\bmb@dima}}
-				\pgfusepath{stroke}
-				\advance\bmb@dima by 1.5bp%
-				\advance\bmb@temp by 1bp%
-				\color{bg}
-				\pgfpathmoveto{\pgfpoint{\bmb@dimb}{\bmb@temp}}
-				\pgfpathlineto{\pgfpoint{\bmb@dimb}{\bmb@dima}}
-				\pgfusepath{stroke}
-			}
-			\fi
-		\end{pgfpicture}%
-		\box\bmb@box%
-	}%
-	\ifbmb@shadow%
-	\vskip4bp minus 2bp%
-	\else%
-	\vskip2bp%
-	\fi%
-	\egroup% of \vbox\bgroup
-}
-
-
-%% beamerbaseauxtemplates
-
-
-% (sub-)section in toc: subsections numbered
-
-\redefbeamertemplate{subsection in toc}{subsections numbered}
-{\leavevmode\leftskip=2em\rlap{\hskip-2em \inserttocsectionnumber\hbox{.}\inserttocsubsectionnumber}\inserttocsubsection\par}
-
-
-%% beamerinnerthemedefault
-
-\redefbeamertemplate*{button}{default}
-{%
-	\setbox\beamer@tempbox=\hbox{{\insertbuttontext}}%
-	\ht\beamer@tempbox=6pt%
-	\dp\beamer@tempbox=0pt%
-	\setbox\beamer@tempbox=\vbox{\box\beamer@tempbox\vskip2pt}%
-	\beamer@tempdim=\wd\beamer@tempbox%
-	\beamer@dima=\beamer@tempdim\advance\beamer@dima by2.2pt
-	\beamer@dimb=\beamer@tempdim\advance\beamer@dimb by4pt
-	\textdir TLT\begin{pgfpicture}{-4pt}{0pt}{\the\beamer@tempdim}{8pt}
-		\color{bg}
-		\pgfsetlinewidth{0.8pt}
-		\pgfpathqmoveto{0pt}{0pt}
-		\pgfpathqcurveto{-2.2pt}{0pt}{-4pt}{1.8pt}{-4pt}{4pt}
-		\pgfpathqcurveto{-4pt}{6.2pt}{-2.2pt}{8pt}{0pt}{8pt}
-		\pgfpathlineto{\pgfpoint{\the\beamer@tempdim}{8pt}}
-		\pgfpathcurveto%
-		{\pgfpoint{\the\beamer@dima}{8pt}}%
-		{\pgfpoint{\the\beamer@dimb}{6.2pt}}%
-		{\pgfpoint{\the\beamer@dimb}{4pt}}
-		\pgfpathcurveto%
-		{\pgfpoint{\the\beamer@dimb}{1.8pt}}%
-		{\pgfpoint{\the\beamer@dima}{0pt}}%
-		{\pgfpoint{\the\beamer@tempdim}{0pt}}
-		\pgfpathclose
-		\pgfusepathqfill
-		\colorlet{bg}{parent.bg}
-		\usebeamercolor[fg]{button border}
-		\pgfpathqmoveto{0pt}{0pt}
-		\pgfpathqcurveto{-2.2pt}{0pt}{-4pt}{1.8pt}{-4pt}{4pt}
-		\pgfpathqcurveto{-4pt}{6.2pt}{-2.2pt}{8pt}{0pt}{8pt}
-		\pgfpathlineto{\pgfpoint{\the\beamer@tempdim}{8pt}}
-		\pgfpathcurveto%
-		{\pgfpoint{\the\beamer@dima}{8pt}}%
-		{\pgfpoint{\the\beamer@dimb}{6.2pt}}%
-		{\pgfpoint{\the\beamer@dimb}{4pt}}
-		\pgfpathcurveto%
-		{\pgfpoint{\the\beamer@dimb}{1.8pt}}%
-		{\pgfpoint{\the\beamer@dima}{0pt}}%
-		{\pgfpoint{\the\beamer@tempdim}{0pt}}
-		\pgfpathclose
-		\pgfusepathqstroke
-	\end{pgfpicture}%
-	\hskip-\beamer@tempdim%
-	\box\beamer@tempbox%
-	\kern4pt%
-}
-
-%% beamerbasenavigation
-
-% User Buttons
-
-\pgfdefobject{beamergotosymbol}{\pgfpoint{0pt}{-1pt}}{\pgfpoint{5pt}{5pt}}
-{
-	\pgfpathqmoveto{1.5bp}{0.5bp}
-	\pgfpathqlineto{3.5bp}{2bp}
-	\pgfpathqlineto{1.5bp}{3.5bp}
-	\pgfusepathqfill
-}
-
-\def\insertgotosymbol{%
-	\begin{pgfpicture}{1pt}{0pt}{6pt}{5pt}
-		\pgfuseobject{\ifcase\bbl@thepardir beamergotosymbol\else beamerreturnsymbol\fi}%
-\end{pgfpicture}}
-
-\pgfdefobject{beamerreturnsymbol}{\pgfpoint{0pt}{-1pt}}{\pgfpoint{5pt}{5pt}}
-{
-	\pgfpathqmoveto{3.5bp}{0.5bp}
-	\pgfpathqlineto{1.5bp}{2bp}
-	\pgfpathqlineto{3.5bp}{3.5bp}
-	\pgfusepathqfill
-}
-
-\def\insertreturnsymbol{%
-	\begin{pgfpicture}{1pt}{0pt}{6pt}{5pt}
-		\pgfuseobject{\ifcase\bbl@thepardir beamerreturnsymbol\else beamergotosymbol\fi}%
-\end{pgfpicture}}
-
-
-\pgfdefobject{beamerskipsymbolrl}{\pgfpoint{0pt}{-1pt}}{\pgfpoint{7pt}{5pt}}
-{
-	\pgfpathqmoveto{3.5bp}{0.5bp}
-	\pgfpathqlineto{1.5bp}{2bp}
-	\pgfpathqlineto{3.5bp}{3.5bp}
-	\pgfpathqmoveto{5.5bp}{0.5bp}
-	\pgfpathqlineto{3.5bp}{2bp}
-	\pgfpathqlineto{5.5bp}{3.5bp}
-	\pgfusepathqfill
-}
-
-\pgfdefobject{beamerskipsymbol}{\pgfpoint{0pt}{-1pt}}{\pgfpoint{7pt}{5pt}}
-{
-	\pgfpathqmoveto{1.5bp}{0.5bp}
-	\pgfpathqlineto{3.5bp}{2bp}
-	\pgfpathqlineto{1.5bp}{3.5bp}
-	\pgfpathqmoveto{3.5bp}{0.5bp}
-	\pgfpathqlineto{5.5bp}{2bp}
-	\pgfpathqlineto{3.5bp}{3.5bp}
-	\pgfusepathqfill
-}
-
-\def\insertskipsymbol{%
-	\begin{pgfpicture}{-1pt}{0pt}{6pt}{5pt}
-		\pgfuseobject{\ifcase\bbl@thepardir beamerskipsymbol\else beamerskipsymbolrl\fi}%
-\end{pgfpicture}}
-
-\def\beamergotobutton#1{\beamerbutton{\insertgotosymbol\ #1}}
-\def\beamerreturnbutton#1{\beamerbutton{\insertreturnsymbol\ #1}}
-\def\beamerskipbutton#1{\beamerbutton{\insertskipsymbol\ #1}}
-
-%% beamerbaseframesize
-
-%
-% Zoom stuff
-%
-
-\def\beamer@framezoom<#1><#2>[#3](#4,#5)(#6,#7){%
-  \par\nointerlineskip%
-  \global\beamer@slidehaszoomtrue%
-  \advance\beamer@zoomcount by1\relax%
-  \def\beamer@zoomborderwidth{0}%
-  \edef\beamer@labelzoomed{beamer@labelzoomed@\the\beamer@zoomframecount @\the\beamer@zoomcount}%
-  \setkeys{beamerzoom}{#3}%
-  \only<#1>{%
-    {\hypersetup{pdfhighlight={/P},pdfborder={0 0 \beamer@zoomborderwidth}}%
-    \global\setbox\@tempboxa=\vbox{\hyperlink{\beamer@labelzoomed}{\vbox to #7{\hbox
-          to#6{\hfil}\vfil}}}}%
-    \ht\@tempboxa=0pt%
-    \wd\@tempboxa=0pt%
-    \dp\@tempboxa=0pt%
-    \setbox\@tempboxa=\vbox{\moveright#4\hbox{\lower#5\vbox{\box\@tempboxa}}}%
-    \ht\@tempboxa=0pt%
-    \wd\@tempboxa=0pt%
-    \dp\@tempboxa=0pt%
-    \global\setbox\beamer@zoombox=\vbox to0pt{\unvbox\beamer@zoombox\box\@tempboxa}%
-  }%
-  \only<#2>{%
-    \@ifundefined{\beamer@labelzoomed}%
-    {%
-      \hypertarget{\beamer@labelzoomed}{}%
-      \expandafter\gdef\csname\beamer@labelzoomed\endcsname{}%
-    }{}%
-    \gdef\beamer@zoomer{%
-      % compute zoom factor
-      \@tempdima=\beamer@frametextheight%
-      \@tempdimb=#7\relax%
-      \@tempcnta=\@tempdimb%
-      \divide\@tempcnta by4096\relax%
-      \multiply\@tempdima by16\relax%
-      \divide\@tempdima by\@tempcnta%
-      \@tempdimb=\paperwidth%
-      \ifbeamer@plainframe%
-      \else%
-        \advance\@tempdimb by-\beamer@leftsidebar%
-        \advance\@tempdimb by-\beamer@rightsidebar\relax%
-      \fi%
-      \@tempdimc=#6\relax%
-      \@tempcntb=\@tempdimc%
-      \divide\@tempcntb by4096\relax%
-      \multiply\@tempdimb by16\relax%
-      \divide\@tempdimb by\@tempcntb%
-      \ifdim\@tempdimb<\@tempdima%
-        \@tempdima=\@tempdimb%
-      \fi%
-      \edef\beamer@temp{\strip@pt\@tempdima}%
-      \@tempdimc=\beamer@frametextheight%
-      \advance\@tempdimc by4pt%
-      \@tempdimb=\paperwidth%
-      \ifbeamer@plainframe%
-      \else%
-        \advance\@tempdimb by-\beamer@leftsidebar%
-        \advance\@tempdimb by-\beamer@rightsidebar\relax%
-      \fi%
-      \setbox\@tempboxa=\vbox{\hsize=\@tempdimb\Acrobatmenu{GoBack}{\vbox to
-          \beamer@frametextheight{\hbox to\@tempdimb{\hfil}\vfil}}}%
-      \ht\@tempboxa=0pt%
-      \wd\@tempboxa=0pt%
-      \dp\@tempboxa=0pt%
-      \setbox\beamer@framebox=\vbox to\beamer@frametextheight{{%
-          \ifbeamer@plainframe\beamer@leftmargin=\Gm@lmargin\fi%
-          \begin{oldpgfpicture}{\beamer@leftmargin}{-\beamer@frametextheight}{\beamer@leftmargin}{0pt}
-            \pgftext[left,top]{\box\@tempboxa}
-            \pgfpathrectangle{\pgfpoint{0pt}{-\@tempdimc}}{\pgfpoint{\ifcase\bbl@thepardir \else-\fi\@tempdimb}{\@tempdimc}}%
-            \pgfusepath{clip}
-            \begingroup
-              \pgftransformscale{\beamer@temp}
-              \@tempdima=#4\relax%
-              \@tempdimb=#5\relax%
-              {\pgftransformshift{\pgfpoint{-\@tempdima}{\@tempdimb}}%
-              \pgftext[left,top]{\vbox{\vbox{}\nointerlineskip\unvbox\beamer@framebox}}}
-            \endgroup
-          \end{oldpgfpicture}%
-        }}%
-      \setbox\beamer@framebox=\vbox{%
-        \nobreak\vbox{}\nobreak\par\nobreak\beamer@entrycode\nobreak%
-        \nointerlineskip\unvbox\beamer@frametitlebox%
-        \nobreak%
-        \box\beamer@framebox%
-        \nobreak%
-        \vss%
-        \beamer@exitcode%
-      }%
-      \global\setbox\beamer@footins=\box\voidb@x% no footnotes in zoomed slides
-    }%
-  }%
-}
-
-
-%
-% Shrink stuff
-%
-
-\def\beamer@shrinkframebox{%
-  \@tempdima=\ht\beamer@framebox%
-%  \ifdim\@tempdima>\beamer@frametextheight%
-    \@tempcnta=\@tempdima%
-    \divide\@tempcnta by 65536\relax%
-    \@tempdimc=\beamer@frametextheight%
-    \divide\@tempdimc by\@tempcnta\relax%
-    \ifdim\@tempdimc>\beamer@shrinkfactor pt%
-      \@tempdimc=\beamer@shrinkfactor pt%
-    \else%
-      \@tempdima=-100\@tempdimc%
-      \advance\@tempdima by100pt%
-      \ClassWarning{beamer}{Frame text is shrunk by a factor of %
-      \strip@pt\@tempdima\space percent instead of
-      \beamer@shrinkpercentage\space percent}%
-    \fi%
-    \edef\beamer@factortemp{\strip@pt\@tempdimc}%
-    \setbox\beamer@framebox=\vbox to\beamer@frametextheight{%
-      \begin{oldpgfpicture}{0pt}{-\beamer@frametextheight}{0pt}{0pt}
-        {\pgftransformscale{\beamer@factortemp}%
-          \pgftext[left,top]{\box\beamer@framebox}}%
-      \end{oldpgfpicture}%
-    }%
-%  \fi%
-}
-
-\endinput
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{beamer-rl}
+[2021/03/12 v1.4b  LaTeX class to patch beamer for right to left presentation with babel]
+
+\RequirePackage{kvoptions}
+\RequirePackage{kvsetkeys}
+
+\SetupKeyvalOptions{
+	family=beamer-rl,
+	prefix=beamer-rl@,
+	setkeys=\kvsetkeys,
+}
+
+% babel options:
+\define@key{beamer-rl}{babel}{%
+	\PassOptionsToPackage{#1}{babel}%
+}
+
+\DeclareVoidOption{arabic}{%
+             \@expandtwoargs\@removeelement\CurrentOption\@classoptionslist\@classoptionslist % remove arabic option from global list  
+   %         \PassOptionsToPackage{arabic}{translator}%
+              \AtBeginDocument{\uselanguage{Arabic}\languagealias{arabic}{Arabic}}
+}
+
+\DeclareDefaultOption{%
+	\PassOptionsToClass{\CurrentOption}{beamer}%
+}
+
+\ProcessKeyvalOptions*\relax
+
+\RequirePackage{ifluatex}
+
+\ifluatex
+\else
+\ClassError{beamer-rl}{beamer-rl require lualatex}
+\fi
+
+\LoadClass[hyperref={unicode}]{beamer}
+
+\RequirePackage[nil,bidi=basic]{babel}
+
+\def\reset@temp#1#2{\expandafter\let\csname beamer@@tmpop@#1@#2\endcsname\relax}
+\def\@@defbeamertemplate#1#2{\reset@temp{#1}{#2}\defbeamertemplate{#1}{#2}}
+\def\@defbeamertemplate#1#2{\reset@temp{#1}{#2}\defbeamertemplate*{#1}{#2}}
+
+\def\redefbeamertemplate{%
+	\@ifstar{\@defbeamertemplate}{\@@defbeamertemplate}%
+}
+
+\let\old@blacktriangleright\blacktriangleright
+\let\old@blacktriangleleft\blacktriangleleft
+
+\def\blacktriangleright{%
+	\ifcase\bbl@thepardir \old@blacktriangleright\else\old@blacktriangleleft\fi}
+\def\blacktriangleleft{%
+	\ifcase\bbl@thepardir \old@blacktriangleleft\else\old@blacktriangleright\fi}
+
+
+\let\oldpgfpicture\pgfpicture
+\let\endoldpgfpicture\endpgfpicture
+
+\def\pgfpicture{\babelsublr\bgroup\oldpgfpicture}
+\def\endpgfpicture{\endoldpgfpicture\egroup}
+
+\let\oldpgfuseshading\pgfuseshading
+\def\pgfuseshading#1{\babelsublr{\oldpgfuseshading{#1}}}
+
+
+%% beamerbasebox 
+
+\newdimen\bmb@dimc
+
+\renewcommand\beamerboxesrounded[2][]{%
+	\global\let\beamer@firstlineitemizeunskip=\relax%
+	\vbox\bgroup%
+	\setkeys{beamerboxes}{upper=block title,lower=block body,width=\textwidth,shadow=false}%
+	\setkeys{beamerboxes}{#1}%
+	{%
+		\usebeamercolor{\bmb@lower}%
+		\globalcolorstrue%
+		\colorlet{lower.bg}{bg}%
+	}%
+	{%
+		\usebeamercolor{\bmb@upper}%
+		\globalcolorstrue%
+		\colorlet{upper.bg}{bg}%
+	}%
+	%
+	% Typeset head
+	%
+	\vskip4bp
+	\setbox\bmb@box=\hbox{%
+	\begin{minipage}[b]{\bmb@width}%
+			\usebeamercolor[fg]{\bmb@upper}%
+			#2%
+	\end{minipage}}%
+	\ifdim\wd\bmb@box=0pt%
+	\ifcase\bbl@thetextdir\relax
+           \else%
+           \bmb@dimc=\bmb@width%
+           \fi% <--
+	\setbox\bmb@box=\hbox{}%
+	\ht\bmb@box=1.5pt%
+	\bmb@prevheight=-4.5pt%
+	\else%
+	\wd\bmb@box=\bmb@width%
+	\bmb@temp=\dp\bmb@box%
+	\ifdim\bmb@temp<1.5pt%
+	\bmb@temp=1.5pt%
+	\fi%
+	\setbox\bmb@box=\hbox{\raise\bmb@temp\hbox{\box\bmb@box}}%
+	\dp\bmb@box=0pt%
+	\bmb@prevheight=\ht\bmb@box%
+	\fi%
+	\bmb@temp=\bmb@width%
+	\bmb@dima=\bmb@temp\advance\bmb@dima by2.2bp%
+	\bmb@dimb=\bmb@temp\advance\bmb@dimb by4bp%
+    \hbox dir TLT {%
+		\begin{pgfpicture}{0bp}{+-\ht\bmb@box}{\bmb@dimc}{+-\ht\bmb@box}
+			\ifdim\wd\bmb@box=0pt%
+			\color{lower.bg}%
+			\else%
+			\color{upper.bg}%
+			\fi%
+			\pgfpathqmoveto{-4bp}{-1bp}
+			\pgfpathqcurveto{-4bp}{1.2bp}{-2.2bp}{3bp}{0bp}{3bp}
+			\pgfpathlineto{\pgfpoint{\bmb@temp}{3bp}}
+			\pgfpathcurveto%
+			{\pgfpoint{\bmb@dima}{3bp}}%
+			{\pgfpoint{\bmb@dimb}{1.2bp}}%
+			{\pgfpoint{\bmb@dimb}{-1bp}}%
+			\bmb@dima=-\ht\bmb@box%
+			\advance\bmb@dima by-2pt%
+			\pgfpathlineto{\pgfpoint{\bmb@dimb}{\bmb@dima}}
+			\pgfpathlineto{\pgfpoint{-4bp}{\bmb@dima}}
+			\pgfusepath{fill}
+		\end{pgfpicture}%
+		\copy\bmb@box%
+	}%
+	\nointerlineskip%
+	\vskip-1pt%
+	\ifdim\wd\bmb@box=0pt%
+	\else%
+	\hbox{%
+		\begin{pgfpicture}{0pt}{0pt}{\bmb@width}{6pt}
+			\bmb@dima=\bmb@width%
+			\advance\bmb@dima by8bp%
+			\pgfpathrectangle{\pgfpoint{-4bp}{-1bp}}{\pgfpoint{\bmb@dima}{8bp}}
+			\pgfusepath{clip}
+			{\pgftransformshift{\pgfpoint{-4bp}{0bp}}\pgftext[left,base]{\pgfuseshading{bmb@transition}}}%
+		\end{pgfpicture}%
+	}%
+	\nointerlineskip%
+	\vskip-0.5pt%
+	\fi%
+	\setbox\bmb@colorbox=\hbox{{\pgfpicturetrue\pgfsetcolor{lower.bg}}}%
+	\setbox\bmb@box=\hbox\bgroup\begin{minipage}[b]{\bmb@width}%
+		\vskip2pt%
+		\usebeamercolor[fg]{\bmb@lower}%
+		\colorlet{beamerstructure}{upper.bg}%
+		\colorlet{structure}{upper.bg}%
+		%\color{.}%
+	}
+
+\bbl@sreplace\endbeamerboxesrounded{\begin{pgfpicture}}%
+          {\textdir TLT\begin{pgfpicture}}%
+
+
+
+%% beamerbaseauxtemplates
+
+
+% (sub-)section in toc: subsections numbered
+
+\redefbeamertemplate{subsection in toc}{subsections numbered}
+{\leavevmode\leftskip=2em\rlap{\hskip-2em \inserttocsectionnumber\hbox{.}\inserttocsubsectionnumber}\inserttocsubsection\par}
+
+
+%% beamerinnerthemedefault
+
+\redefbeamertemplate*{button}{default}
+{%
+	\setbox\beamer@tempbox=\hbox{{\insertbuttontext}}%
+	\ht\beamer@tempbox=6pt%
+	\dp\beamer@tempbox=0pt%
+	\setbox\beamer@tempbox=\vbox{\box\beamer@tempbox\vskip2pt}%
+	\beamer@tempdim=\wd\beamer@tempbox%
+	\beamer@dima=\beamer@tempdim\advance\beamer@dima by2.2pt
+	\beamer@dimb=\beamer@tempdim\advance\beamer@dimb by4pt
+	\textdir TLT\begin{pgfpicture}{-4pt}{0pt}{\the\beamer@tempdim}{8pt}
+		\color{bg}
+		\pgfsetlinewidth{0.8pt}
+		\pgfpathqmoveto{0pt}{0pt}
+		\pgfpathqcurveto{-2.2pt}{0pt}{-4pt}{1.8pt}{-4pt}{4pt}
+		\pgfpathqcurveto{-4pt}{6.2pt}{-2.2pt}{8pt}{0pt}{8pt}
+		\pgfpathlineto{\pgfpoint{\the\beamer@tempdim}{8pt}}
+		\pgfpathcurveto%
+		{\pgfpoint{\the\beamer@dima}{8pt}}%
+		{\pgfpoint{\the\beamer@dimb}{6.2pt}}%
+		{\pgfpoint{\the\beamer@dimb}{4pt}}
+		\pgfpathcurveto%
+		{\pgfpoint{\the\beamer@dimb}{1.8pt}}%
+		{\pgfpoint{\the\beamer@dima}{0pt}}%
+		{\pgfpoint{\the\beamer@tempdim}{0pt}}
+		\pgfpathclose
+		\pgfusepathqfill
+		\colorlet{bg}{parent.bg}
+		\usebeamercolor[fg]{button border}
+		\pgfpathqmoveto{0pt}{0pt}
+		\pgfpathqcurveto{-2.2pt}{0pt}{-4pt}{1.8pt}{-4pt}{4pt}
+		\pgfpathqcurveto{-4pt}{6.2pt}{-2.2pt}{8pt}{0pt}{8pt}
+		\pgfpathlineto{\pgfpoint{\the\beamer@tempdim}{8pt}}
+		\pgfpathcurveto%
+		{\pgfpoint{\the\beamer@dima}{8pt}}%
+		{\pgfpoint{\the\beamer@dimb}{6.2pt}}%
+		{\pgfpoint{\the\beamer@dimb}{4pt}}
+		\pgfpathcurveto%
+		{\pgfpoint{\the\beamer@dimb}{1.8pt}}%
+		{\pgfpoint{\the\beamer@dima}{0pt}}%
+		{\pgfpoint{\the\beamer@tempdim}{0pt}}
+		\pgfpathclose
+		\pgfusepathqstroke
+	\end{pgfpicture}%
+	\hskip-\beamer@tempdim%
+	\box\beamer@tempbox%
+	\kern4pt%
+}
+
+%% beamerbasenavigation
+
+% User Buttons
+
+\pgfdefobject{beamergotosymbol}{\pgfpoint{0pt}{-1pt}}{\pgfpoint{5pt}{5pt}}
+{
+	\pgfpathqmoveto{1.5bp}{0.5bp}
+	\pgfpathqlineto{3.5bp}{2bp}
+	\pgfpathqlineto{1.5bp}{3.5bp}
+	\pgfusepathqfill
+}
+
+\def\insertgotosymbol{%
+\begin{pgfpicture}{1pt}{0pt}{6pt}{5pt}
+		\pgfuseobject{\ifcase\bbl@thepardir beamergotosymbol\else beamerreturnsymbol\fi}%
+\end{pgfpicture}}
+
+\pgfdefobject{beamerreturnsymbol}{\pgfpoint{0pt}{-1pt}}{\pgfpoint{5pt}{5pt}}
+{
+	\pgfpathqmoveto{3.5bp}{0.5bp}
+	\pgfpathqlineto{1.5bp}{2bp}
+	\pgfpathqlineto{3.5bp}{3.5bp}
+	\pgfusepathqfill
+}
+
+\def\insertreturnsymbol{%
+\begin{pgfpicture}{1pt}{0pt}{6pt}{5pt}
+		\pgfuseobject{\ifcase\bbl@thepardir beamerreturnsymbol\else beamergotosymbol\fi}%
+\end{pgfpicture}}
+
+
+\pgfdefobject{beamerskipsymbolrl}{\pgfpoint{0pt}{-1pt}}{\pgfpoint{7pt}{5pt}}
+{
+	\pgfpathqmoveto{3.5bp}{0.5bp}
+	\pgfpathqlineto{1.5bp}{2bp}
+	\pgfpathqlineto{3.5bp}{3.5bp}
+	\pgfpathqmoveto{5.5bp}{0.5bp}
+	\pgfpathqlineto{3.5bp}{2bp}
+	\pgfpathqlineto{5.5bp}{3.5bp}
+	\pgfusepathqfill
+}
+
+\pgfdefobject{beamerskipsymbol}{\pgfpoint{0pt}{-1pt}}{\pgfpoint{7pt}{5pt}}
+{
+	\pgfpathqmoveto{1.5bp}{0.5bp}
+	\pgfpathqlineto{3.5bp}{2bp}
+	\pgfpathqlineto{1.5bp}{3.5bp}
+	\pgfpathqmoveto{3.5bp}{0.5bp}
+	\pgfpathqlineto{5.5bp}{2bp}
+	\pgfpathqlineto{3.5bp}{3.5bp}
+	\pgfusepathqfill
+}
+
+\def\insertskipsymbol{%
+\begin{pgfpicture}{-1pt}{0pt}{6pt}{5pt}
+		\pgfuseobject{\ifcase\bbl@thepardir beamerskipsymbol\else beamerskipsymbolrl\fi}%
+\end{pgfpicture}}
+
+\def\beamergotobutton#1{\beamerbutton{\insertgotosymbol\ #1}}
+\def\beamerreturnbutton#1{\beamerbutton{\insertreturnsymbol\ #1}}
+\def\beamerskipbutton#1{\beamerbutton{\insertskipsymbol\ #1}}
+
+%% beamerbaseframesize
+
+%
+% Zoom stuff
+%
+
+\def\beamer@framezoom<#1><#2>[#3](#4,#5)(#6,#7){%
+  \par\nointerlineskip%
+  \global\beamer@slidehaszoomtrue%
+  \advance\beamer@zoomcount by1\relax%
+  \def\beamer@zoomborderwidth{0}%
+  \edef\beamer@labelzoomed{beamer@labelzoomed@\the\beamer@zoomframecount @\the\beamer@zoomcount}%
+  \setkeys{beamerzoom}{#3}%
+  \only<#1>{%
+    {\hypersetup{pdfhighlight={/P},pdfborder={0 0 \beamer@zoomborderwidth}}%
+    \global\setbox\@tempboxa=\vbox{\hyperlink{\beamer@labelzoomed}{\vbox to #7{\hbox
+          to#6{\hfil}\vfil}}}}%
+    \ht\@tempboxa=0pt%
+    \wd\@tempboxa=0pt%
+    \dp\@tempboxa=0pt%
+    \setbox\@tempboxa=\vbox{\moveright#4\hbox{\lower#5\vbox{\box\@tempboxa}}}%
+    \ht\@tempboxa=0pt%
+    \wd\@tempboxa=0pt%
+    \dp\@tempboxa=0pt%
+    \global\setbox\beamer@zoombox=\vbox to0pt{\unvbox\beamer@zoombox\box\@tempboxa}%
+  }%
+  \only<#2>{%
+    \@ifundefined{\beamer@labelzoomed}%
+    {%
+      \hypertarget{\beamer@labelzoomed}{}%
+      \expandafter\gdef\csname\beamer@labelzoomed\endcsname{}%
+    }{}%
+    \gdef\beamer@zoomer{%
+      % compute zoom factor
+      \@tempdima=\beamer@frametextheight%
+      \@tempdimb=#7\relax%
+      \@tempcnta=\@tempdimb%
+      \divide\@tempcnta by4096\relax%
+      \multiply\@tempdima by16\relax%
+      \divide\@tempdima by\@tempcnta%
+      \@tempdimb=\paperwidth%
+      \ifbeamer@plainframe%
+      \else%
+        \advance\@tempdimb by-\beamer@leftsidebar%
+        \advance\@tempdimb by-\beamer@rightsidebar\relax%
+      \fi%
+      \@tempdimc=#6\relax%
+      \@tempcntb=\@tempdimc%
+      \divide\@tempcntb by4096\relax%
+      \multiply\@tempdimb by16\relax%
+      \divide\@tempdimb by\@tempcntb%
+      \ifdim\@tempdimb<\@tempdima%
+        \@tempdima=\@tempdimb%
+      \fi%
+      \edef\beamer@temp{\strip@pt\@tempdima}%
+      \@tempdimc=\beamer@frametextheight%
+      \advance\@tempdimc by4pt%
+      \@tempdimb=\paperwidth%
+      \ifbeamer@plainframe%
+      \else%
+        \advance\@tempdimb by-\beamer@leftsidebar%
+        \advance\@tempdimb by-\beamer@rightsidebar\relax%
+      \fi%
+      \setbox\@tempboxa=\vbox{\hsize=\@tempdimb\Acrobatmenu{GoBack}{\vbox to
+          \beamer@frametextheight{\hbox to\@tempdimb{\hfil}\vfil}}}%
+      \ht\@tempboxa=0pt%
+      \wd\@tempboxa=0pt%
+      \dp\@tempboxa=0pt%
+      \setbox\beamer@framebox=\vbox to\beamer@frametextheight{{%
+          \ifbeamer@plainframe\beamer@leftmargin=\Gm@lmargin\fi%
+          \ifcase\bbl@thepardir \else\multiply\@tempdimb by -1\relax\fi%
+          \begin{oldpgfpicture}{\beamer@leftmargin}{-\beamer@frametextheight}{\beamer@leftmargin}{0pt}
+           \pgftext[left,top]{\box\@tempboxa}
+            \pgfpathrectangle{\pgfpoint{0pt}{-\@tempdimc}}{\pgfpoint{\@tempdimb}{\@tempdimc}}%
+            \pgfusepath{clip}
+            \begingroup
+            \pgftransformscale{\beamer@temp}
+              \@tempdima=#4\relax%
+              \@tempdimb=#5\relax%
+              {\pgftransformshift{\pgfpoint{-\@tempdima}{\@tempdimb}}%
+              \pgftext[left,top]{\vbox{\vbox{}\nointerlineskip\unvbox\beamer@framebox }}}
+            \endgroup
+          \end{oldpgfpicture}%
+        }}%
+      \setbox\beamer@framebox=\vbox{%
+        \nobreak\vbox{}\nobreak\par\nobreak\beamer@entrycode\nobreak%
+        \nointerlineskip\unvbox\beamer@frametitlebox%
+        \nobreak%
+        \box\beamer@framebox%
+        \nobreak%
+        \vss%
+        \beamer@exitcode%
+      }%
+      \global\setbox\beamer@footins=\box\voidb@x% no footnotes in zoomed slides
+    }%
+  }%
+}
+
+
+%
+% Shrink stuff
+%
+
+
+ \bbl@sreplace\beamer@shrinkframebox{\vbox}%
+          {\vbox dir TLT}%
+
+% Temporary workaround for issue of \shapemode bug 
+% https://github.com/latex3/babel/issues/13
+% this work fine with lists inside frame, if they are included within \vbox
+% may be we need to insert \shapemode=2  or \shapemode=0 manualy  at beginning of list
+% \begin{enumerate} \shapemode=.. &  \begin{itemize} \shapemode=..
+
+\newcounter{beginframepardir}
+
+\let\oldframe\frame
+\def\frame{\setcounter{beginframepardir}{\bbl@getluadir{par}}
+% 0 for TLT 1 for TRT 
+\oldframe}
+
+\redefbeamertemplate*{itemize/enumerate body begin}{default}{\ifnum\value{beginframepardir}=\bbl@getluadir{par} \else\shapemode=2\fi}
+
+\redefbeamertemplate*{description body begin}{default}{\ifnum\value{beginframepardir}=\bbl@getluadir{par} \else\shapemode \tw@\fi}
+
+% Use Amiri as default sans serif font
+
+\font\sffont@rl="Amiri" at 10pt
+\ifx\sffont@rl\nullfont
+\else
+\babelfont{sf}{Amiri}
+\fi
+
+\endinput
\ No newline at end of file
-- 
cgit v1.2.3

