% Babelbidi: Bidirectional typesetting support for Babel. % % Copyright (C) 2026 Amer Amikhteh % % This package is free software: you may redistribute it and/or modify % it under the terms of the LaTeX Project Public License as published % by the LaTeX Project, either version 1.3c of the License, or % (at your option) any later version. % % This package is distributed in the hope that it will be useful, % but WITHOUT ANY WARRANTY; without even the implied warranty of % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. % % The full license text is available at: % https://www.latex-project.org/lppl/ % % This work is "maintained" by Amer Amikhteh. % % The current maintainer of this work is Amer Amikhteh. % % This package consists of the file babelbidi.sty and the files % distributed with it. \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{babelbidi} [2026/10/09 v0.1.0 Bidi extensions for Babel] \RequirePackage{iftex} \RequirePackage{xkeyval} \RequirePackage{babelbidi-lang} \NewDocumentCommand{\babelbidilangs}{m}{% \SetKeys[babelbidi-lang]{#1}% } \makeatletter % ------------------------------------------ % Package options % ------------------------------------------ \define@key{bbd}{bidi}{% \gdef\bbd@bidi{#1}% } \define@key{bbd}{layout}{% \edef\bbd@layout{#1}% } \def\bbd@layout{} \ifPDFTeX \setkeys{bbd}{bidi=default} \fi \ifXeTeX \setkeys{bbd}{bidi=bidi-r} \fi \ifLuaTeX \setkeys{bbd}{% bidi=basic, layout=counters graphics footnotes lists } \fi \DeclareOptionX{bidi}{% \setkeys{bbd}{bidi=#1}% } \DeclareOptionX{layout}{% \setkeys{bbd}{layout=#1}% } \DeclareOptionX*{% \edef\bbd@options{% \bbd@options,\CurrentOption }% } \def\bbd@options{} \ProcessOptionsX\relax % ------------------------------------------ % beamer conditionals % ------------------------------------------ \newif\ifbbd@beamer \@ifclassloaded{beamer}{\bbd@beamertrue}{} \newif\ifbbd@beamerrl \@ifclassloaded{beamer-rl}{\bbd@beamerrltrue}{} % ------------------------------------------ % Resolve Bug of arabiccore Package or beamer % ------------------------------------------ \@ifundefined{if@rl}{% \newif\if@rl }{} \ifPDFTeX \ifbbd@beamer % \addto\extraarabic{ \providecommand{\labelitemiv} {\if@rl\protect $-$ % \else\protect\textperiodcentred\fi} \providecommand{\labelitemi} {\if@rl\protect\textLR{$\bullet$} \else\protect\textbullet\fi} \providecommand{\labelitemii} {\if@rl\protect\textLR{$\circ$} % \else\protect\textLR{ \normalfont\bfseries\textendash}\fi} \providecommand{\labelitemiii} {\if@rl\protect\textLR{$*$} % \else\protect\textasteriskcentered\fi} \providecommand{\labelenumi} {\if@rl(\I{\number\c@enumi}).% \else{\number\c@enumi}.\fi} \providecommand{\labelenumii} {\if@rl\abjadnumeral{\number\c@enumii}. % \else({\number\c@enumii})\fi} \providecommand{\labelenumiii} {\if@rl\I{\number\c@enumiii}$\space-\space$ % \else({\number\c@enumiii})\fi} \providecommand{\labelenumiv} {\if@rl\abjadnumeral{\number\c@enumiv}$\space-\space$ % \else({\number\c@enumiv})\fi} % } \fi \fi % ------------------------------------------ % Engine setup % ------------------------------------------ \ifPDFTeX \RequirePackage[bidi=\bbd@bidi,\bbd@options]{babel} \fi \ifXeTeX \RequirePackage[ bidi=\bbd@bidi, \bbd@options ]{babel} \fi \ifLuaTeX \ifbbd@beamerrl \else \RequirePackage[ bidi=\bbd@bidi, layout=\bbd@layout, \bbd@options ]{babel} \fi \fi % ------------------------------------------ % Beamer beamerbasebox from beamer-rl class % ------------------------------------------ \makeatletter \ifbbd@beamer \ifbbd@beamerrl \else \ifLuaTeX \input{babelbidi-beamer.def} \fi \fi \fi \makeatother % ------------------------------------------ % Load package components % ------------------------------------------ \input{babelbidi-api.def} \makeatletter \AddToHook{begindocument/before}{% \ifXeTeX \input{babelbidi-xetex.def} \fi \ifLuaTeX \input{babelbidi-luatex.def} \fi \edef\bbd@main{\bbl@main@language}% \edef\bbd@main@script{\bbd@script{\bbd@main}}% \ifx\bbd@main@script\bbd@script@latin \let\latinttfamily\ttfamily \else \input{babelbidi-code.def}% \fi } \@ifundefined{bbl@latinarabic}{}{% \let\bbd@arabic\@arabic \AddToHook{env/minted/before}{% \let\@arabic\bbl@latinarabic }% \AddToHook{env/minted/after}{% \let\@arabic\bbd@arabic }% }% \AddToHook{begindocument}{ \if@RTLmain \input{babelbidi-layout.def} \fi} \makeatother \makeatother \endinput