summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/lualatex/beamer-rl/beamer-rl.cls
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2023-01-02 21:24:31 +0000
committerKarl Berry <karl@freefriends.org>2023-01-02 21:24:31 +0000
commit2d76687317021d30c5f447f1a72aa66bbc5890e7 (patch)
tree58251b34184213b576a5ce6168bec6bd5a8af6ad /Master/texmf-dist/tex/lualatex/beamer-rl/beamer-rl.cls
parent2feb1f2ef0deb880ed2f399e072fedf92ea05c0c (diff)
beamer-rl (2jan23)
git-svn-id: svn://tug.org/texlive/trunk@65438 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/lualatex/beamer-rl/beamer-rl.cls')
-rw-r--r--Master/texmf-dist/tex/lualatex/beamer-rl/beamer-rl.cls442
1 files changed, 287 insertions, 155 deletions
diff --git a/Master/texmf-dist/tex/lualatex/beamer-rl/beamer-rl.cls b/Master/texmf-dist/tex/lualatex/beamer-rl/beamer-rl.cls
index d9c790969ef..d68f56f5913 100644
--- a/Master/texmf-dist/tex/lualatex/beamer-rl/beamer-rl.cls
+++ b/Master/texmf-dist/tex/lualatex/beamer-rl/beamer-rl.cls
@@ -1,32 +1,62 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{beamer-rl}
-[2022/06/19 v1.6 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
+[2023/01/02 v1.7 LaTeX class to patch beamer for right to left presentation with babel]
+
+\DeclareKeys
+ {
+ layout .code:n = \PassOptionsToPackage{layout=#1}{babel}
+ ,unknown .code:n = \PassOptionsToClass{\CurrentOption}{beamer}
+ }
+
+\DeclareKeys
+ {
+ arabic .code:n =
+ \PassOptionsToPackage{arabic,provide=*}{babel}
+ \AddToHook{env/document/before}{
+ \babelprovide[#1]{arabic}
+ \uselanguage{Arabic}\languagealias{arabic}{Arabic}
+ %\PassOptionsToPackage{arabic}{translator}
+ },
+ arabic .default:n =
+ }
+
+\DeclareKeys
+ {
+ hebrew .code:n =
+ \PassOptionsToPackage{hebrew,provide=*}{babel}
+ \AddToHook{env/document/before}{
+ \babelprovide[#1]{hebrew}
+ %\PassOptionsToPackage{hebrew}{translator}
+ },
+ hebrew .default:n =
+ }
+
+
+\ExplSyntaxOn
+\clist_map_inline:nn {arabic-ma,arabic-tn,arabic-dz,arabic-eg,arabic-sa,arabic-iq,arabic-sy,arabic-lb,arabic-ps,arabic-jo}
+ {
+ \DeclareKeys
+ {
+ #1 .code:n =
+ \AddToHook{env/document/before}{\babelprovide[import,##1,main]{#1}
+ \uselanguage{Arabic}\languagealias{arabic}{Arabic}},
+ %\PassOptionsToPackage{arabic}{translator},
+ #1 .default:n =
+ }
+ }
+
+\clist_map_inline:nn {syriac,persian,urdu,centralkurdish,kashmiri,mazanderani,northernkurdish-arab,malayalam,pashto,punjabi-arab,uyghur,uzbek-arab,yiddish}
+ {
+ \DeclareKeys
+ {
+ #1 .code:n =
+ \AddToHook{env/document/before}{\babelprovide[import,##1,main]{#1}},
+ #1 .default:n =
+ }
+ }
+\ExplSyntaxOff
+
+\ProcessKeyOptions
\RequirePackage{ifluatex}
@@ -39,9 +69,10 @@
\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}}
+\let\oldpgfpicture\pgfpicture
+\let\endoldpgfpicture\endpgfpicture
+
+\let\oldpgfsys@beginpicture\pgfsys@beginpicture
\def\redefbeamertemplate{%
\@ifstar{\@defbeamertemplate}{\@@defbeamertemplate}%
@@ -51,19 +82,115 @@
\let\old@blacktriangleleft\blacktriangleleft
\def\blacktriangleright{%
- \ifcase\bbl@thepardir \old@blacktriangleright\else\old@blacktriangleleft\fi}
+ \ifcase\bbl@thepardir\old@blacktriangleright\else\old@blacktriangleleft\fi}
\def\blacktriangleleft{%
- \ifcase\bbl@thepardir \old@blacktriangleleft\else\old@blacktriangleright\fi}
+ \ifcase\bbl@thepardir\old@blacktriangleleft\else\old@blacktriangleright\fi}
+\let\oldpgfuseshading\pgfuseshading
+\def\pgfuseshading#1{\babelsublr{\oldpgfuseshading{#1}}}
-\let\oldpgfpicture\pgfpicture
-\let\endoldpgfpicture\endpgfpicture
+% add graphics layout by default
+
+\let\bbl@pictresetdir\relax
+ \def\bbl@pictsetdir#1{%
+ \ifcase\bbl@thetextdir
+ \let\bbl@pictresetdir\relax
+ \else
+ \ifcase#1\bodydir TLT % Remember this sets the inner boxes
+ \or\textdir TLT
+ \else\bodydir TLT \textdir TLT
+ \fi
+ % \(text|par)dir required in pgf:
+ \def\bbl@pictresetdir{\bodydir TRT\pardir TRT\textdir TRT\relax}%
+ \fi}%
+ \AddToHook{env/picture/begin}{\bbl@pictsetdir\tw@}%
+ \directlua{
+ Babel.get_picture_dir = true
+ Babel.picture_has_bidi = 0
+ %
+ function Babel.picture_dir (head)
+ if not Babel.get_picture_dir then return head end
+ if Babel.hlist_has_bidi(head) then
+ Babel.picture_has_bidi = 1
+ end
+ return head
+ end
+ luatexbase.add_to_callback("hpack_filter", Babel.picture_dir,
+ "Babel.picture_dir")
+ }%
+ \AtBeginDocument{%
+ \def\LS@rot{%
+ \setbox\@outputbox\vbox{%
+ \hbox dir TLT{\rotatebox{90}{\box\@outputbox}}}}%
+ \long\def\put(#1,#2)#3{%
+ \@killglue
+ % Try:
+ \ifx\bbl@pictresetdir\relax
+ \def\bbl@tempc{0}%
+ \else
+ \directlua{
+ Babel.get_picture_dir = true
+ Babel.picture_has_bidi = 0
+ }%
+ \setbox\z@\hb@xt@\z@{%
+ \@defaultunitsset\@tempdimc{#1}\unitlength
+ \kern\@tempdimc
+ #3\hss}% TODO: #3 executed twice (below). That’s bad.
+ \edef\bbl@tempc{\directlua{tex.print(Babel.picture_has_bidi)}}%
+ \fi
+ % Do:
+ \@defaultunitsset\@tempdimc{#2}\unitlength
+ \raise\@tempdimc\hb@xt@\z@{%
+ \@defaultunitsset\@tempdimc{#1}\unitlength
+ \kern\@tempdimc
+ {\ifnum\bbl@tempc>\z@\bbl@pictresetdir\fi#3}\hss}%
+ \ignorespaces}%
+ \MakeRobust\put}%
+ \AtBeginDocument
+ {\AddToHook{cmd/diagbox@pict/before}{\let\bbl@pictsetdir\@gobble}%
+ \AddToHook{env/pgfpicture/begin}{\bbl@pictsetdir\@ne}%
+ \bbl@add\pgfinterruptpicture{\bbl@pictresetdir}%
+ \bbl@add\pgfsys@beginpicture{\bbl@pictsetdir\@ne}%
+ \ifx\tikzpicture\@undefined\else
+ \AddToHook{env/tikzpicture/begin}{\bbl@pictsetdir\tw@}%
+ \bbl@add\tikz@atbegin@node{\bbl@pictresetdir}%
+ \bbl@sreplace\tikz{\begingroup}{\begingroup\bbl@pictsetdir\tw@}%
+ \fi
+ \ifx\tcolorbox\@undefined\else
+ \def\tcb@drawing@env@begin{%
+ \csname tcb@before@\tcb@split@state\endcsname
+ \bbl@pictsetdir\tw@
+ \begin{\kvtcb@graphenv}%
+ \tcb@bbdraw%
+ \tcb@apply@graph@patches
+ }%
+ \def\tcb@drawing@env@end{%
+ \end{\kvtcb@graphenv}%
+ \bbl@pictresetdir
+ \csname tcb@after@\tcb@split@state\endcsname
+ }%
+ \fi
+ }
+
+\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\pgfpicture{\babelsublr\bgroup\oldpgfpicture}
-\def\endpgfpicture{\endoldpgfpicture\egroup}
+%% beamerbasenotes
-\let\oldpgfuseshading\pgfuseshading
-\def\pgfuseshading#1{\babelsublr{\oldpgfuseshading{#1}}}
+\defbeameroption{show notes on second screen}[right]%
+{
+ \ifx\@onlypreamble\@notprerr
+ \ltx@ifpackageloaded{pgfpages}{}{%
+ \ClassError{beamer}{`pgfpages' package necessary for this option}{}%
+ }%
+ \else%
+ \RequirePackage{pgfpages-rl}
+ \fi%
+ \pgfpagesuselayout{two screens with optional second}[second #1]
+ \beamer@twoscreensnotestrue
+ \beamer@notestrue
+}
%% beamerbasebox
@@ -95,10 +222,10 @@
#2%
\end{minipage}}%
\ifdim\wd\bmb@box=0pt%
- \ifcase\bbl@thetextdir\relax
- \else%
- \bmb@dimc=\bmb@width%
- \fi% <--
+ \ifnum\textdirection=\z@
+ \else%
+ \bmb@dimc=\bmb@width%
+ \fi% <--
\setbox\bmb@box=\hbox{}%
\ht\bmb@box=1.5pt%
\bmb@prevheight=-4.5pt%
@@ -162,10 +289,115 @@
%\color{.}%
}
-\bbl@sreplace\endbeamerboxesrounded{\begin{pgfpicture}}%
- {\textdir TLT\begin{pgfpicture}}%
-
-
+\newdimen\bmb@dimd
+
+\def\endbeamerboxesrounded{%
+ \end{minipage}\egroup%
+ \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@boxwidth=\bmb@width%
+ \bmb@boxheight=\ht\bmb@box%
+ \advance\bmb@boxheight by4bp%
+ \advance\bmb@boxheight by\bmb@prevheight%
+ \ifbmb@shadow%
+ \xdef\beamer@storecolorhook{\beamer@colorhook}
+ \xdef\beamer@colorhook{}
+ \pgfdeclareradialshading{bmb@shadowball}{\pgfpointorigin}
+ {%
+ color(0bp)=(pgftransparent!50);
+ color(4bp)=(pgftransparent!100)
+ }%
+ \pgfdeclareradialshading{bmb@shadowballlarge}{\pgfpointorigin}
+ {%
+ color(0bp)=(pgftransparent!0);
+ color(8bp)=(pgftransparent!100)
+ }%
+ \pgfdeclarehorizontalshading{bmb@shadowhorz\the\bmb@boxheight}{\bmb@boxheight-5.5bp}
+ {%
+ color(0bp)=(pgftransparent!0);
+ color(8bp)=(pgftransparent!100)
+ }%
+ \pgfdeclareverticalshading{bmb@shadowvert\the\bmb@boxwidth}{\bmb@boxwidth-4bp}
+ {%
+ color(0bp)=(pgftransparent!100);
+ color(8bp)=(pgftransparent!0)
+ }%
+ \begingroup%
+ \selectcolormodel{gray}
+ \pgfdeclarefading{bmb@shadowmask\the\bmb@boxwidth\the\bmb@boxheight}
+ {%
+ \textdir TLT
+ \begin{pgfpicture}
+ \pgftext[at=\pgfpoint{4bp}{4bp}]{\pgfuseshading{bmb@shadowball}}% bottom left shadow
+ \ifdim\bmb@boxheight>9.5bp%
+ \pgftext[at=\pgfpoint{\bmb@boxwidth}{8bp}]{\pgfuseshading{bmb@shadowballlarge}}% bottom right shadow
+ \pgftext[at=\pgfpoint{\bmb@boxwidth+4bp}{\bmb@boxheight+2bp}]{\pgfuseshading{bmb@shadowball}}% top right shadow
+ \pgftext[base, at=\pgfpoint{\bmb@boxwidth+4bp}{7.5bp}]{\pgfuseshading{bmb@shadowhorz\the\bmb@boxheight}}% right edge shadow
+ \else%
+ \pgftext[at=\pgfpoint{\bmb@boxwidth}{4bp}]{\pgfuseshading{bmb@shadowball}}% right shadow
+ \fi%
+ \pgftext[left, at=\pgfpoint{4bp}{4bp}]{\pgfuseshading{bmb@shadowvert\the\bmb@boxwidth}}% bottom edge
+ %
+ % clipping is needed because shadow is typeset on top of box
+ \begin{pgfscope}
+ \pgfsetcolor{beamer@safeblack}
+ \pgfpathrectangle{\pgfpoint{4bp}{8.1bp}}{\pgfpoint{\bmb@boxwidth}{\bmb@boxheight-2bp}}
+ \pgfusepath{fill}
+ \end{pgfscope}
+ \end{pgfpicture}%
+ \hskip4bp%
+ }%
+ \endgroup%
+ \fi%
+ \bmb@temp=\bmb@width%
+ \bmb@dima=\bmb@temp\advance\bmb@dima by2.2bp%
+ \bmb@dimb=\bmb@temp\advance\bmb@dimb by4bp%
+ \ifdim\wd\bmb@box=0pt%
+ \ifnum\textdirection=\z@
+ \else
+ \bmb@dimd=\bmb@width%
+ \fi%
+ \fi%
+ \hbox{\textdir TLT%
+ \begin{pgfpicture}{0bp}{0bp}{\bmb@dimd}{0bp}
+ \ifbmb@shadow%
+ \begin{pgfscope}
+ \pgfpathrectangle{\pgfpoint{0bp}{-7bp}}
+ {\pgfpoint{\bmb@boxwidth+8bp}{\bmb@boxheight+6bp}}
+ \pgfsetfading{bmb@shadowmask\the\bmb@boxwidth\the\bmb@boxheight}{%
+ \pgftransformshift{\pgfpoint{0.5\bmb@boxwidth+6bp}{0.5\bmb@boxheight-4bp}}}
+ \pgfusepath{fill}
+ \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}
+ }
+ \end{pgfpicture}%
+ \box\bmb@box%
+ }%
+ \ifbmb@shadow%
+ \vskip4bp minus 2bp%
+ \else%
+ \vskip2bp%
+ \fi%
+ \egroup% of \vbox\bgroup
+ \ifbmb@shadow%
+ \xdef\beamer@colorhook{\beamer@storecolorhook}
+ \fi
+}
%% beamerbaseauxtemplates
@@ -173,7 +405,7 @@
% (sub-)section in toc: subsections numbered
\redefbeamertemplate{subsection in toc}{subsections numbered}
-{\leavevmode\leftskip=2em\rlap{\hskip-2em \inserttocsectionnumber\hbox{.}\inserttocsubsectionnumber}\inserttocsubsection\par}
+{\leavevmode\leftskip=2em\rlap{\hskip-2em \babelsublr{\inserttocsectionnumber}.\babelsublr{\inserttocsubsectionnumber}}\inserttocsubsection\par}
%% beamerinnerthemedefault
@@ -293,124 +525,25 @@
%
% Zoom stuff
%
+% The patch need improvement to cover all cases
-\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
- }%
- }%
-}
-
+\bbl@sreplace\beamer@framezoom{\begin{pgfpicture}}%
+{\ifcase\bbl@thepardir \else\multiply\@tempdimb by\m@ne\relax
+\let\pgfsys@beginpicture\oldpgfsys@beginpicture\fi%
+\begin{pgfpicture}}%
%
% Shrink stuff
%
-
- \bbl@sreplace\beamer@shrinkframebox{\vbox}%
+\bbl@sreplace\beamer@shrinkframebox{\vbox}%
{\vbox dir TLT}%
-% Temporary workaround for issue of \shapemode bug
+% 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
+% 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
@@ -420,5 +553,4 @@
\babelfont{sf}{Amiri}
\fi
-
\endinput \ No newline at end of file