% Babelbidi: Bidi extensions for Babel. % % Copyright (C) 2026 Amer Amikhteh % % This file is part of the Babelbidi package. % % This work 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 work 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. \ProvidesFile{babelbidi-code.def} [2026/10/09 v0.1.0 Code support for Babelbidi] \makeatletter \DeclareRobustCommand{\latinttfamily}{% \bbd@select@code \edef\bbd@selected@language{\bbd@result}% \edef\bbd@selectedtt{% \csname bbl@ttdflt@\bbd@selected@language\endcsname }% \begingroup \edef\languagename{\bbd@selected@language}% \bbl@switchfont \global\let\bbd@selectedtt\ttdefault \endgroup \fontfamily{\bbd@selectedtt}\selectfont } % ------------------------------------------------ % Verbatim % ------------------------------------------------ \def\verbatim@font{% \normalfont \ifTUTeX \latinttfamily \else \ttfamily\fontencoding{T1}\selectfont \fi \bbl@pardir{0}% \bbl@textdir{0}% \bbl@bodydir{0} \ifLuaTeX \ifhmode\unskip\fi \else \ifhmode\unskip\fi \beginL \fi } \AddToHook{env/verbatim/before}{% \ifLuaTeX\else\vspace{-\baselineskip}\fi \removelastskip \ifPDFTeX \bgroup \selectlanguage{\bbd@lang@code}% \fi } \AddToHook{env/verbatim/after}{% \ifXeTeX\endL\removelastskip\fi \ifPDFTeX\egroup\fi } \g@addto@macro\verb@egroup{% \ifLuaTeX\else\endL\fi } % ------------------------------------------------ % Listings Package % ------------------------------------------------ \@ifpackageloaded{listings}{% \lst@AddToHook{Init}{% \bbd@select@code \edef\bbd@lang@code{\bbd@result}% \lst@ifdisplaystyle \par \expandafter\selectlanguage\expandafter{\bbd@lang@code}% \else \ifXeTeX\unskip\fi \edef\bbd@tmp{% \noexpand\begin{otherlanguage*}{\bbd@lang@code}% }% \bbd@tmp \ifXeTeX\beginL\fi \unskip \fi } \lst@AddToHook{DeInit}{% \lst@ifdisplaystyle \else \end{otherlanguage*}% \ifXeTeX\endL\fi \unskip \fi } }{} % ------------------------------------------------ % Minted Package % ------------------------------------------------ \bbd@select@code \edef\bbd@lang@code{\bbd@result} \@ifpackageloaded{minted}{% \NewCommandCopy{\bbd@RobustMintProcess}{\RobustMintProcess} \RenewDocumentCommand{\RobustMintProcess}{m m m}{% \par \begin{otherlanguage}{\bbd@lang@code}% \ifLuaTeX \vspace{\topsep} \begin{minipage}{\linewidth}% \fi \bbd@RobustMintProcess{#1}{#2}{#3}% \ifLuaTeX \end{minipage}% \vspace{\topsep}% \fi \end{otherlanguage}% } \NewCommandCopy{\bbd@mintinline}{\mintinline} \RenewDocumentCommand{\mintinline}{s O{} m m}{% \lr{\unskip \IfBooleanTF{#1} {% \bbd@mintinline*[#2]{#3}{#4}% } {% \bbd@mintinline[#2]{#3}{#4}% }% }\unskip } \AddToHook{env/minted/before}{% \par \begin{otherlanguage}{\bbd@lang@code}% \ifLuaTeX \begin{center} \begin{minipage}{\linewidth}% \fi } \AddToHook{env/minted/after}{% \ifLuaTeX \end{minipage}% \end{center} \fi \end{otherlanguage}% } }{} \makeatother \endinput