diff options
Diffstat (limited to 'macros/luatex/latex')
-rw-r--r-- | macros/luatex/latex/beamer-rl/Arabic_dictionaries/translator-basic-dictionary-Arabic.dict | 102 | ||||
-rw-r--r-- | macros/luatex/latex/beamer-rl/Arabic_dictionaries/translator-theorem-dictionary-Arabic.dict | 14 | ||||
-rw-r--r-- | macros/luatex/latex/beamer-rl/Example-of-use-ar.pdf | bin | 161779 -> 169340 bytes | |||
-rw-r--r-- | macros/luatex/latex/beamer-rl/Example-of-use-ar.tex | 112 | ||||
-rw-r--r-- | macros/luatex/latex/beamer-rl/Example-of-use-en.pdf | bin | 119572 -> 129512 bytes | |||
-rw-r--r-- | macros/luatex/latex/beamer-rl/Example-of-use-en.tex | 106 | ||||
-rw-r--r-- | macros/luatex/latex/beamer-rl/README.txt | 6 | ||||
-rw-r--r-- | macros/luatex/latex/beamer-rl/beamer-rl.cls | 442 |
8 files changed, 504 insertions, 278 deletions
diff --git a/macros/luatex/latex/beamer-rl/Arabic_dictionaries/translator-basic-dictionary-Arabic.dict b/macros/luatex/latex/beamer-rl/Arabic_dictionaries/translator-basic-dictionary-Arabic.dict index c02c35aebd..c045c48104 100644 --- a/macros/luatex/latex/beamer-rl/Arabic_dictionaries/translator-basic-dictionary-Arabic.dict +++ b/macros/luatex/latex/beamer-rl/Arabic_dictionaries/translator-basic-dictionary-Arabic.dict @@ -6,43 +6,42 @@ \providetranslation{Address}{عنوان} \providetranslation{address}{عنوان} \providetranslation{and}{و} -\providetranslation{Appendix}{ملحق} -\providetranslation{Authors}{المؤلفين} -\providetranslation{authors}{المؤلفين} +\providetranslation{Appendix}{الملاحق} +\providetranslation{Authors}{المؤلفون} +\providetranslation{authors}{المؤلفون} \providetranslation{Author}{المؤلف} -\providetranslation{author}{المؤلف} -\providetranslation{Bibliography}{مصادر} +\providetranslation{author}{المؤلفون} +\providetranslation{Bibliography}{المصادر} \providetranslation{cc}{نسخة لـ} -\providetranslation{Chapters}{أبواب} -\providetranslation{chapters}{أبواب} -\providetranslation{Chapter}{باب} -\providetranslation{chapter}{باب} -\providetranslation{Conclusion}{نتيجة} -\providetranslation{conclusion}{نتيجة} +\providetranslation{Chapters}{الأبواب} +\providetranslation{chapters}{الأبواب} +\providetranslation{Chapter}{الباب} +\providetranslation{chapter}{الباب} +\providetranslation{Conclusion}{استنتاج} +\providetranslation{conclusion}{استنتاج} \providetranslation{Contents}{المحتويات} -\providetranslation{Continuation}{تابع} -\providetranslation{continuation}{تابع} -\providetranslation{cont}{تابع} % FIXME: unsure -\providetranslation{encl (plural)}{} -\providetranslation{encl (singular)}{} -\providetranslation{encl}{} -\providetranslation{Figures}{أشكال} -\providetranslation{figures}{أشكال} -\providetranslation{Figure}{شكل} -\providetranslation{figure}{شكل} +\providetranslation{Continuation}{التالي} +\providetranslation{continuation}{التالي} +\providetranslation{cont}{التالي} +\providetranslation{encl (plural)}{المرفقات} +\providetranslation{encl (singular)}{المرفق} +\providetranslation{encl}{المرفق} +\providetranslation{Figures}{الأشكال} +\providetranslation{figures}{الأشكال} +\providetranslation{Figure}{الشكل} +\providetranslation{figure}{الشكل} \providetranslation{From}{من} \providetranslation{from}{من} -\providetranslation{From?}{من أين؟} -\providetranslation{Glossary}{قاموس} -\providetranslation{Index}{فهرس} +\providetranslation{Glossary}{قائمة المصطلحات} +\providetranslation{Index}{الفهرس} \providetranslation{Introduction}{مدخل} \providetranslation{introduction}{مدخل} \providetranslation{List of Figures and Tables}{قائمة الأشكال والجداول} \providetranslation{List of Figures}{قائمة الأشكال} \providetranslation{List of Tables}{قائمة الجداول} \providetranslation{or}{أو} -\providetranslation{Outline}{الخطوط العريضة} -\providetranslation{Overview}{نظرة عامة} +\providetranslation{Outline}{الخطة} +\providetranslation{Overview}{الملخص} \providetranslation{Pages}{صفحات} \providetranslation{pages}{صفحات} \providetranslation{Page}{صفحة} @@ -51,41 +50,38 @@ \providetranslation{paragraphs}{فقرات} \providetranslation{Paragraph}{فقرة} \providetranslation{paragraph}{فقرة} -\providetranslation{Parts}{أقسام} -\providetranslation{parts}{أقسام} -\providetranslation{Part}{قسم} -\providetranslation{part}{قسم} -\providetranslation{Preface}{تمهيد} +\providetranslation{Parts}{أجزاء} +\providetranslation{parts}{أجزاء} +\providetranslation{Part}{جزء} +\providetranslation{part}{جزء} +\providetranslation{Preface}{مدخل} \providetranslation{Proofs}{براهين} \providetranslation{proofs}{براهين} \providetranslation{Proof}{برهان} \providetranslation{proof}{برهان} \providetranslation{References}{مراجع} -\providetranslation{Related work}{أعمال مرتبطة} -\providetranslation{Related Work}{أعمال مرتبطة} -\providetranslation{Sections}{فصول} -\providetranslation{sections}{فصول} -\providetranslation{Section}{فصل} -\providetranslation{section}{فصل} +\providetranslation{Related work}{الأعمال ذات الصلة} +\providetranslation{Related Work}{الأعمال ذات الصلة} +\providetranslation{Sections}{الفصول} +\providetranslation{sections}{الفصول} +\providetranslation{Section}{الفصل} +\providetranslation{section}{الفصل} \providetranslation{See also}{أنظر أيضا} \providetranslation{see also}{أنظر أيضا} \providetranslation{See}{أنظر} \providetranslation{see}{أنظر} -\providetranslation{Sketch of Proofs}{رسم البراهين} -\providetranslation{Sketch of proofs}{رسم البراهين} -\providetranslation{Sketch of Proof}{رسم البرهان} -\providetranslation{Sketch of proof}{رسم البرهان} -\providetranslation{Subsections}{فصول فرعية} -\providetranslation{subsections}{فصول فرعية} -\providetranslation{Subsection}{فصل فرعي} -\providetranslation{subsection}{فصل فرعي} -\providetranslation{Summary}{ملخص} -\providetranslation{Tables}{جداول} -\providetranslation{tables}{جداول} -\providetranslation{Table}{جدول} -\providetranslation{table}{جدول} +\providetranslation{Sketch of Proofs}{رسم تخطيطي للبراهين} +\providetranslation{Sketch of proofs}{رسم تخطيطي للبراهين} +\providetranslation{Sketch of Proof}{رسم تخطيطي للبرهان} +\providetranslation{Sketch of proof}{رسم تخطيطي للبرهان} +\providetranslation{Subsections}{الفصول الفرعية} +\providetranslation{subsections}{الفصول الفرعية} +\providetranslation{Subsection}{الفصل الفرعي} +\providetranslation{subsection}{الفصل الفرعي} +\providetranslation{Summary}{الملخص} +\providetranslation{Tables}{الجداول} +\providetranslation{tables}{الجداول} +\providetranslation{Table}{الجدول} +\providetranslation{table}{الجدول} \providetranslation{To}{إلى} \providetranslation{to}{إلى} -\providetranslation{When?}{متى?} -\providetranslation{Who?}{من?} - diff --git a/macros/luatex/latex/beamer-rl/Arabic_dictionaries/translator-theorem-dictionary-Arabic.dict b/macros/luatex/latex/beamer-rl/Arabic_dictionaries/translator-theorem-dictionary-Arabic.dict index 1625d7c1a6..5c080bdfa7 100644 --- a/macros/luatex/latex/beamer-rl/Arabic_dictionaries/translator-theorem-dictionary-Arabic.dict +++ b/macros/luatex/latex/beamer-rl/Arabic_dictionaries/translator-theorem-dictionary-Arabic.dict @@ -58,16 +58,10 @@ \providetranslation{Proof Sketches}{مخططات البرهان} \providetranslation{Proof sketches}{مخططات البرهان} \providetranslation{proof sketches}{مخططات البرهان} -\providetranslation{Sketch of Proof}{Esquisse de preuve} -\providetranslation{Sketch of Proofs}{Esquisse de preuves} -\providetranslation{Sketch of proof}{Esquisse de preuve} -\providetranslation{Sketch of proofs}{Esquisse de preuves} -\providetranslation{sketch of proof}{esquisse de preuve} -\providetranslation{sketch of proofs}{esquisse de preuves} -\providetranslation{Propositions}{Propositions} -\providetranslation{propositions}{propositions} -\providetranslation{Proposition}{Proposition} -\providetranslation{proposition}{proposition} +\providetranslation{Propositions}{قضايا} +\providetranslation{propositions}{قضايا} +\providetranslation{Proposition}{قضية} +\providetranslation{proposition}{قضية} \providetranslation{Remarks}{ملاحظات} \providetranslation{remarks}{ملاحظات} \providetranslation{Remark}{ملاحظة} diff --git a/macros/luatex/latex/beamer-rl/Example-of-use-ar.pdf b/macros/luatex/latex/beamer-rl/Example-of-use-ar.pdf Binary files differindex 7190863231..235a059c4e 100644 --- a/macros/luatex/latex/beamer-rl/Example-of-use-ar.pdf +++ b/macros/luatex/latex/beamer-rl/Example-of-use-ar.pdf diff --git a/macros/luatex/latex/beamer-rl/Example-of-use-ar.tex b/macros/luatex/latex/beamer-rl/Example-of-use-ar.tex index 0aaf2768c5..408200462d 100644 --- a/macros/luatex/latex/beamer-rl/Example-of-use-ar.tex +++ b/macros/luatex/latex/beamer-rl/Example-of-use-ar.tex @@ -1,10 +1,8 @@ -\documentclass[arabic,babel={layout=lists.counters}]{beamer-rl} +\documentclass[arabic-dz]{beamer-rl} \usepackage{hologo} % pdflatex, xelatex, lualatex logos \usepackage{listings} +\usepackage{multicol} -\usepackage{tikz} - -\babelprovide[import=ar-DZ, main]{arabic} \babelfont{alm}[Script=Arabic,Scale=.88]{ALM Fixed} % Themes without Navigation Bars @@ -94,7 +92,8 @@ \begin{frame}[fragile] \frametitle{مدخل} انشاء عرض بيمر عربي (اتجاه النص من اليمين لليسار) اعتمادا على - \hologo{pdfLaTeX} أو \hologo{XeLaTeX} مازال يعترضه الكثير من المشاكل والمعوقات خاصة ما يتعلق بالألوان والروابط والتي لم يوجد لها حلولا~بعد. + \hologo{pdfLaTeX} أو \hologo{XeLaTeX} + مازال يعترضه الكثير من المشاكل والمعوقات خاصة ما يتعلق بالألوان والروابط والتي لم يوجد لها حلولا~بعد. فريق \hologo{LuaTeX} أوجد حلولا لهذه المشاكل، الشكر لهم ولـ @@ -102,23 +101,21 @@ لأعماله بالحزمة \verb|babel| وخصوصا الكتابة بالاتجاهين (\verb|bidi| writing) -هذه الفئة (class) تعدل في بعض اوامر وتعليمات beamer لغرض انشاء عروض من اليمين إلى اليسار (العربية على سبيل المثال)، الفئة تستدعي \verb|babel| مع الخيار -\verb|bidi=basic| - والمعالجة تتطلب استخدام +هذه الفئة (class) تعدل في بعض اوامر وتعليمات beamer لغرض انشاء عروض من اليمين إلى اليسار (العربية على سبيل المثال)، الفئة تستدعي \verb|babel| ضمنيا مع الخيار \verb|bidi=basic| والمعالجة تتطلب استخدام \hologo{LuaLaTeX} \end{frame} \section{كيفية استعمال الفئة} -\begin{frame}[fragile] +\begin{frame}[fragile,allowframebreaks] \frametitle{كيفية استعمال الفئة} \begin{codeblock} \documentclass{beamer-rl} % import languages -\babelprovide[import=ar-DZ, main]{arabic} +\babelprovide[import, main]{arabic} \usetheme{CambridgeUS} @@ -127,6 +124,65 @@ \end{document} \end{codeblock} +نحصل على نتيجة مماثلة باضافة اللغة الأساسية للعرض +(لغة باتجاه كتابة من اليمين إلى اليسار) + ضمن خيار الفئة كما يلي: + +\begin{codeblock} +\documentclass[arabic]{beamer-rl} + +\usetheme{CambridgeUS} + +\begin{document} +... +\end{document} +\end{codeblock} + +يمكن أيضا إضافة خيارات أكثر للغة والتي توفرها التعليمة +{\textdir TLT \verb|\babelprovide|} +كما يلي: + +\begin{codeblock} +\documentclass[arabic={mapdigits}]{beamer-rl} + +% equivalent to +% \babelprovide[import,main,mapdigits]{arabic} + +\end{codeblock} + +الفئة تعرف بنفس الطريقة الخيارات (اللغات المدعومة من الحزمة + \verb|babel| + وتكتب من اليمين إلى اليسار) + +{\selectlanguage{nil} +\begin{multicols}{3} +\verb|arabic|\\ +\verb|arabic-dz|\\ +\verb|arabic-tn|\\ +\verb|arabic-ma|\\ +\verb|arabic-eg|\\ +\verb|arabic-sa|\\ +\verb|arabic-iq|\\ +\verb|arabic-sy|\\ +\verb|arabic-lb|\\ +\verb|arabic-ps|\\ +\verb|arabic-jo|\\ +\verb|centralkurdish|\\ +\verb|hebrew|\\ +\verb|kashmiri|\\ +\verb|mazanderani|\\ +\verb|malayalam|\\ +\verb|northernkurdish-arab|\\ +\verb|pashto|\\ +\verb|persian|\\ +\verb|punjabi-arab|\\ +\verb|syriac|\\ +\verb|urdu|\\ +\verb|uyghur|\\ +\verb|uzbek-arab|\\ +\verb|yiddish|\\ +\end{multicols} +} \end{frame} \section{بعض الملاحظات} @@ -145,18 +201,21 @@ \end{codeblock} \item -يمكن اضافة كل الخيارات التي تتيحها الفئة \verb:beamer: عند استدعاء الفئة \verb:beamer-rl: - -كما يمكن تمرير خيارات اضافية للحزمة - \verb:babel: - عند استدعاء الفئة \verb:beamer-rl: على الشكل: +الفئة تعرف الخيار +\verb|layout| +الذي يمرر محتواه الى الحزمة +\verb|bebel| \medskip \begin{codeblock} -\documentclass[babel={<babel options>}]{beamer-rl} +\documentclass[layout={<babel layout>}]{beamer-rl} \end{codeblock} +يمكن الاطلاع على المزيد حول الموضوع من دليل الحزمة +\verb|bebel| +\href{http://mirrors.ctan.org/macros/latex/required/babel/base/babel.pdf}{\beamergotobutton{الرابط}} + \item الفئة \verb:beamer-rl: تقوم بتبادل لكل من التعليمتين \cs{blacktriangleright} و \cs{blacktriangleleft} في حالة نص من اليمين لليسار @@ -181,17 +240,6 @@ RTL context & \selectlanguage{nil}\blacktriangleright & \selectlanguage{nil}\bla \bigskip \item - -الخيار -\verb:arabic: -للفئة يمكن من استدعاء قاموس عربي لترجمة بعض المفردات مثل -\verb:example: ،\verb:definition: ،\verb:theorem: .... - -\begin{codeblock} -\documentclass[arabic]{beamer-rl} -\end{codeblock} - -\item في بعض الحالات يمكن استعمال التعليمة \cs{babelsublr} التي توفرها الحزمة \verb:bebel: لادراج نص من اليسار لليمين (لاتيني) في وسط نص من اليمين لليسار، @@ -219,8 +267,7 @@ RTL context & \selectlanguage{nil}\blacktriangleright & \selectlanguage{nil}\bla \verb:beamer-rl: \begin{codeblock} -\documentclass{beamer-rl} -\babelprovide[import=ar-DZ, main]{arabic} +\documentclass[arabic]{beamer-rl} \usetheme{Warsaw} \usepackage{pgfpages-rl} % adapt pgfpages to TRT pagedir \setbeamertemplate{note page}[] @@ -288,7 +335,7 @@ RTL context & \selectlanguage{nil}\blacktriangleright & \selectlanguage{nil}\bla \item ثانيا \end{enumerate} \end{column} -\begin{column}{8.8cm} +\begin{column}{9cm} \begin{codeblock} \setbeamertemplate{enumerate item}[ball] \begin{enumerate} @@ -311,7 +358,7 @@ RTL context & \selectlanguage{nil}\blacktriangleright & \selectlanguage{nil}\bla \item ثانيا \end{itemize} \end{column} -\begin{column}{8.8cm} +\begin{column}{9cm} \begin{codeblock} % in RTL context \setbeamertemplate{itemize item}[triangle] @@ -327,7 +374,6 @@ RTL context & \selectlanguage{nil}\blacktriangleright & \selectlanguage{nil}\bla \framebreak \selectlanguage{nil} - \begin{columns}[t] \begin{column}{2cm} \begin{itemize} @@ -335,7 +381,7 @@ RTL context & \selectlanguage{nil}\blacktriangleright & \selectlanguage{nil}\bla \item Second \end{itemize} \end{column} -\begin{column}{8.8cm} +\begin{column}{9cm} \begin{codeblock} % in LTR context \setbeamertemplate{itemize item}[triangle] diff --git a/macros/luatex/latex/beamer-rl/Example-of-use-en.pdf b/macros/luatex/latex/beamer-rl/Example-of-use-en.pdf Binary files differindex facfcb1bf0..edd56eb931 100644 --- a/macros/luatex/latex/beamer-rl/Example-of-use-en.pdf +++ b/macros/luatex/latex/beamer-rl/Example-of-use-en.pdf diff --git a/macros/luatex/latex/beamer-rl/Example-of-use-en.tex b/macros/luatex/latex/beamer-rl/Example-of-use-en.tex index 82d333dd77..6b241e021a 100644 --- a/macros/luatex/latex/beamer-rl/Example-of-use-en.tex +++ b/macros/luatex/latex/beamer-rl/Example-of-use-en.tex @@ -1,9 +1,8 @@ -\documentclass[arabic,babel={layout=lists}]{beamer-rl} -\usepackage{hologo} % pdflatex, xelatex, lualatex logos +\documentclass[arabic,english]{beamer-rl} +\usepackage{hologo} % pdflatex, xelatex, lualatex logos \usepackage{verbatim} - -\babelprovide[import=ar-DZ, main]{arabic} -\babelprovide[import,language=Default]{english} +\usepackage{listings} +\usepackage{multicol} % Themes without Navigation Bars %\mode<presentation>{\usetheme{default}} @@ -79,6 +78,8 @@ \begin{document} +\selectlanguage{english} + \parskip=6pt \begin{frame} @@ -95,7 +96,7 @@ \begin{frame}[fragile] \frametitle{Introduction} -Creating beamer presentation for right to left languages (like arabic) using \hologo{pdfLaTeX} or \hologo{XeLaTeX} still poses many problems due to bugs not currently resolved especially for colors and hyperlinks +Creating beamer presentation for languages with script from right to left (like arabic) using \hologo{pdfLaTeX} or \hologo{XeLaTeX} still poses many problems due to bugs not currently resolved especially for colors. The \hologo{LuaTeX} team set solutions for these issues thanks to them and to \textit{Javier~Bezos} for his works on the package \verb|babel| and \verb|bidi| writing @@ -106,7 +107,7 @@ This class provides patchs of some beamer templates and commands to create \section{How to use beamer-rl} -\begin{frame}[fragile] +\begin{frame}[fragile,allowframebreaks] \frametitle{How to use beamer-rl} \begin{codeblock} @@ -122,6 +123,60 @@ This class provides patchs of some beamer templates and commands to create \end{document} \end{codeblock} +We get a similar result by adding the main language of the presentation (language with right-to-left script) + as option of class as follows: + +\begin{codeblock} +\documentclass[arabic]{beamer-rl} + +\usetheme{CambridgeUS} + +\begin{document} +... +\end{document} +\end{codeblock} + +We can also add more language options that the command \verb|\babelprovide| provides as follows: + +\begin{codeblock} +\documentclass[arabic={mapdigits}]{beamer-rl} + +% equivalent to +% \babelprovide[import,main,mapdigits]{arabic} + +\end{codeblock} + +The class define in the same way as options (languages supported by the package \verb|babel| with script from right to left) + +\begin{multicols}{3} +\verb|arabic|\\ +\verb|arabic-dz|\\ +\verb|arabic-tn|\\ +\verb|arabic-ma|\\ +\verb|arabic-eg|\\ +\verb|arabic-sa|\\ +\verb|arabic-iq|\\ +\verb|arabic-sy|\\ +\verb|arabic-lb|\\ +\verb|arabic-ps|\\ +\verb|arabic-jo|\\ +\verb|centralkurdish|\\ +\verb|hebrew|\\ +\verb|kashmiri|\\ +\verb|mazanderani|\\ +\verb|malayalam|\\ +\verb|northernkurdish-arab|\\ +\verb|pashto|\\ +\verb|persian|\\ +\verb|punjabi-arab|\\ +\verb|syriac|\\ +\verb|urdu|\\ +\verb|uyghur|\\ +\verb|uzbek-arab|\\ +\verb|yiddish|\\ +\end{multicols} + + \end{frame} \section{Some notes} @@ -140,17 +195,17 @@ modify this in the preambule with \end{codeblock} \item +The class defines option \verb|layout| which passes its content to \verb|babel| -All options provided by \verb:beamer: can be added with \verb:beamer-rl: - -Additional options can also be passed to package - \verb:babel: - with \verb:beamer-rl: like this - +\medskip + \begin{codeblock} -\documentclass[babel={<babel options>}]{beamer-rl} +\documentclass[layout={<babel layout>}]{beamer-rl} \end{codeblock} +More on the subject can be found in the manual of \verb|babel| package +\href{http://mirrors.ctan.org/macros/latex/required/babel/base/babel.pdf}{\beamergotobutton{link}} + \item The \verb:beamer-rl: class swap the definition of \verb:\blacktriangleright: with \verb:\blacktriangleleft: in RTL context @@ -173,15 +228,6 @@ RTL context & \selectlanguage{nil}\blacktriangleright & \selectlanguage{nil}\bla \bigskip \item - -Class option \verb:arabic: call an Arabic dictionary to translate strings like \verb:theorem:, \verb:example:, \verb:definition: .... - - -\begin{codeblock} -\documentclass[arabic]{beamer-rl} -\end{codeblock} - -\item In some cases you need to use \verb:\babelsublr: command from \verb:bebel: package to insert a left to right text within your right to left text, e.g if you need to insert a \verb:pspicture: drawing in RTL context @@ -263,6 +309,7 @@ It can also be used with other document classes besides \verb:beamer-rl: \begin{frame}[fragile,allowframebreaks] \frametitle{enumerate, itemize} +\selectlanguage{arabic} \begin{columns}[t,onlytextwidth] \begin{column}{2cm} @@ -336,7 +383,10 @@ It can also be used with other document classes besides \verb:beamer-rl: \begin{frame}[fragile] \frametitle{Hyperlinks} -\begin{itemize} + +\selectlanguage{arabic} + +\begin{itemize}\shapemode2 \item<1-> First. \item<2-> Second. \end{itemize} @@ -361,6 +411,9 @@ It can also be used with other document classes besides \verb:beamer-rl: \frametitle{Theorems} \framesubtitle{The proof uses \textit{reductio ad absurdum}.} + +\selectlanguage{arabic} + \begin{theorem} There is no largest prime number. \end{theorem} @@ -378,9 +431,14 @@ number not in the first $p$ numbers.\qedhere \subsection{Zooming} +\selectlanguage{arabic} + +\setbeamertemplate{frametitle}[default][right] + \begin{frame}[fragile] \frametitle{Zooming} + \framezoom<1><2>[border=2](1cm,1cm)(2cm,2cm) \pgfimage[height=4cm]{example-image} diff --git a/macros/luatex/latex/beamer-rl/README.txt b/macros/luatex/latex/beamer-rl/README.txt index d0f372bf6f..62fdf411ce 100644 --- a/macros/luatex/latex/beamer-rl/README.txt +++ b/macros/luatex/latex/beamer-rl/README.txt @@ -1,5 +1,5 @@ The beamer-rl class -v1.6 +v1.7 This class provides patchs of some beamer templates and commands for right to left presentation, the class require babel with lualatex engine @@ -9,12 +9,12 @@ please use the issue tracker: <https://github.com/seloumi/beamer-rl/issues> -Current version release date: 2022/06/19 +Current version release date: 2023/01/02 ___________________ Salim Bou -Copyright (c) 2019-2022 +Copyright (c) 2019-2023 It may be distributed and/or modified under the LaTeX Project Public License, version 1.3c or higher (your choice). The latest version of this license is at: http://www.latex-project.org/lppl.txt diff --git a/macros/luatex/latex/beamer-rl/beamer-rl.cls b/macros/luatex/latex/beamer-rl/beamer-rl.cls index d9c790969e..d68f56f591 100644 --- a/macros/luatex/latex/beamer-rl/beamer-rl.cls +++ b/macros/luatex/latex/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 |