From 389d70f9a442ed180389f17c2586983b861528e9 Mon Sep 17 00:00:00 2001
From: Karl Berry <karl@freefriends.org>
Date: Tue, 17 Sep 2013 22:11:40 +0000
Subject: bidi (17sep13)

git-svn-id: svn://tug.org/texlive/trunk@31682 c570f23f-e606-0410-a88d-b1316a301751
---
 Master/texmf-dist/tex/xelatex/bidi/biditools.sty | 544 +++++++++++++++++++++++
 1 file changed, 544 insertions(+)
 create mode 100644 Master/texmf-dist/tex/xelatex/bidi/biditools.sty

(limited to 'Master/texmf-dist/tex/xelatex/bidi/biditools.sty')

diff --git a/Master/texmf-dist/tex/xelatex/bidi/biditools.sty b/Master/texmf-dist/tex/xelatex/bidi/biditools.sty
new file mode 100644
index 00000000000..dbf8e2e74ec
--- /dev/null
+++ b/Master/texmf-dist/tex/xelatex/bidi/biditools.sty
@@ -0,0 +1,544 @@
+%%
+%% This is file `biditools.sty'.
+%% 
+%%   ______________________________________
+%%   Copyright © 2009–2013  Vafa Khalighi
+%% 
+%%   License information appended.
+%% 
+%% 
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{biditools}[2013/04/10 v0.2 Programming tools for bidi package]
+\providecommand{\@bidi@saveprimitive}[2]{\begingroup\escapechar`\\\relax
+  \edef\@tempa{\string#1}\edef\@tempb{\meaning#1}%
+  \ifx\@tempa\@tempb \global\let#2#1%
+  \else
+    \edef\@tempb{\meaning#2}%
+    \ifx\@tempa\@tempb
+    \else
+      \@latex@error{Unable to properly define \string#2; primitive
+      \noexpand#1no longer primitive}\@eha
+    \fi
+  \fi
+  \endgroup}
+\def\@tagsextension{clo}
+\def\@definitionfileextension{def}
+\def\@iftagsloaded{\@ifl@aded\@tagsextension}
+\def\@ifdefinitionfileloaded{\@ifl@aded\@definitionfileextension}
+\def\eqnewif#1#2{%
+  \count@\escapechar \escapechar\m@ne
+    \let#1\iffalse
+    \let#2\iffalse
+    \eq@if#1#2\iftrue
+    \eq@if#1#2\iffalse
+  \escapechar\count@}
+\def\eq@if#1#2#3{%
+  \expandafter\def\csname\expandafter\@gobbletwo\string#1%
+                    \expandafter\@gobbletwo\string#3\endcsname
+                       {\let#1#3%
+                       \let#2#3}%
+  \expandafter\def\csname\expandafter\@gobbletwo\string#2%
+                    \expandafter\@gobbletwo\string#3\endcsname
+                       {\let#2#3%
+                       \let#1#3}}
+\newcommand*{\if@bidi@csdef}[1]{%
+  \ifcsname#1\endcsname
+    \expandafter\@firstoftwo
+  \else
+    \expandafter\@secondoftwo
+  \fi}
+\newcommand*{\if@bidi@csundef}[1]{%
+  \ifcsname#1\endcsname
+    \expandafter\ifx\csname#1\endcsname\relax
+      \expandafter\expandafter
+      \expandafter\@firstoftwo
+    \else
+      \expandafter\expandafter
+      \expandafter\@secondoftwo
+    \fi
+  \else
+    \expandafter\@firstoftwo
+  \fi}
+\newcommand{\if@bidi@def}[1]{%
+  \ifdefined#1%
+    \expandafter\@firstoftwo
+  \else
+    \expandafter\@secondoftwo
+  \fi}
+\newcommand{\if@bidi@undef}[1]{%
+  \ifdefined#1%
+    \ifx#1\relax
+      \expandafter\expandafter
+      \expandafter\@firstoftwo
+    \else
+      \expandafter\expandafter
+      \expandafter\@secondoftwo
+    \fi
+  \else
+    \expandafter\@firstoftwo
+  \fi}
+\newcommand{\if@bidi@blank}[1]{% from url.sty
+  \bidi@ifblank@i#1&&\@secondoftwo\@firstoftwo:}
+\long\def\bidi@ifblank@i#1#2&#3#4#5:{#4}
+\newcommand{\bidi@notblank}[1]{%
+  \bidi@ifblank@i#1&&\@firstoftwo\@secondoftwo:}
+\newcommand{\if@bidi@defmacro}{}
+\long\edef\if@bidi@defmacro#1{%
+  \noexpand\expandafter\noexpand\bidi@ifdefmacro
+  \noexpand\meaning#1\detokenize{macro}:&}
+\edef\bidi@ifdefmacro{%
+  \def\noexpand\bidi@ifdefmacro##1\detokenize{macro}:##2&}
+\bidi@ifdefmacro{\bidi@notblank{#2}}
+\newcommand*{\if@bidi@csmacro}[1]{%
+  \if@bidi@csdef{#1}
+    {\expandafter\if@bidi@defmacro\csname#1\endcsname}
+    {\@secondoftwo}}
+\newcommand{\if@bidi@defprimitive}[1]{%
+  \ifprimitive#1%
+    \expandafter\@firstoftwo
+  \else
+    \expandafter\@secondoftwo
+  \fi}
+\newcommand{\if@bidi@csprimitive}[1]{%
+ \begingroup\expandafter\expandafter\expandafter\endgroup%
+  \expandafter\ifprimitive\csname#1\endcsname%
+    \expandafter\@firstoftwo
+  \else
+    \expandafter\@secondoftwo
+  \fi}
+\newcommand*{\bidi@csdefcs}[2]{%
+\expandafter\@ifdefinable  \csname#1\endcsname{%
+\expandafter\def\csname#1\expandafter\endcsname{\csname#2\endcsname}}}
+\newcommand*{\bidi@csletcs}[2]{%
+\expandafter\@ifdefinable  \csname#1\endcsname{%
+\expandafter\let\csname#1\expandafter\endcsname\csname#2\endcsname}}
+\newcommand*{\bidi@cslet}[2]{%
+\expandafter\@ifdefinable  \csname#1\endcsname{%
+\expandafter\let\csname#1\endcsname#2}}
+\newcommand{\bidi@namelongdef}[1]{%
+  \long\expandafter\def\csname #1\endcsname}
+\def\bidi@ensure@newcommand{\@star@or@long\bidi@ensure@new@command}
+\def\bidi@ensure@new@command#1{%
+  \begingroup \escapechar\m@ne\xdef\@gtempa{{\string#1}}\endgroup
+  \expandafter\if@bidi@csundef\@gtempa
+     {\new@command#1}{\relax%
+  \let\@ifdefinable\@rc@ifdefinable%
+  \new@command#1}}
+\def\bidi@ensure@newlength#1{\if@bidi@undef#1{\newskip#1}{}}
+
+\protected\def\bidi@error{\PackageError{bidi}}
+\protected\def\bidi@warning{\PackageWarning{bidi}}
+\protected\def\bidi@info{\PackageInfo{bidi}}
+
+\newcommand*{\bidi@newrobustcmd}{}
+\protected\def\bidi@newrobustcmd{\@star@or@long\bidi@new@command}
+
+\def\bidi@new@command#1{\@testopt{\bidi@newcommand#1}0}
+
+\def\bidi@newcommand#1[#2]{%
+  \@ifnextchar[%]
+    {\bidi@xargdef#1[#2]}
+    {\ifx\l@ngrel@x\relax
+       \let\l@ngrel@x\protected
+     \else
+       \protected\def\l@ngrel@x{\protected\long}%
+     \fi
+     \@argdef#1[#2]}}
+
+\long\def\bidi@xargdef#1[#2][#3]#4{%
+  \@ifdefinable#1{%
+    \expandafter\protected
+    \expandafter\def
+    \expandafter#1%
+    \expandafter{%
+      \expandafter\@testopt
+      \csname\string#1\endcsname{#3}}%
+    \expandafter\@yargdef\csname\string#1\endcsname\tw@{#2}{#4}}}
+
+\bidi@newrobustcmd*{\bidi@renewrobustcmd}{\@star@or@long\bidi@renew@command}
+
+\def\bidi@renew@command#1{%
+  \if@bidi@undef{#1}
+     {\bidi@error{\string#1 undefined}\@ehc}
+     {}%
+  \let\@ifdefinable\@rc@ifdefinable
+  \bidi@new@command#1}
+
+\bidi@newrobustcmd*{\bidi@providerobustcmd}{\@star@or@long\bidi@provide@command}
+
+\def\bidi@provide@command#1{%
+  \if@bidi@undef{#1}
+    {\def\reserved@a{\bidi@new@command#1}}
+    {\def\reserved@a{\bidi@renew@command\reserved@a}}%
+  \reserved@a}
+
+\newcommand*{\bidi@csuse}[1]{%
+  \ifcsname#1\endcsname
+    \csname#1\expandafter\endcsname
+  \fi}
+
+\newcommand{\bidi@expandonce}[1]{%
+  \unexpanded\expandafter{#1}}
+
+\def\bidi@protected{%
+  \let\@@protect\protect
+  \let\protect\@unexpandable@protect
+  \afterassignment\restore@protect}
+
+\bidi@newrobustcmd{\bidi@appto}[2]{%
+  \if@bidi@undef{#1}
+    {\edef#1{\unexpanded{#2}}}
+    {\edef#1{\bidi@expandonce#1\unexpanded{#2}}}}
+\bidi@newrobustcmd{\bidi@eappto}[2]{%
+  \if@bidi@undef{#1}
+    {\edef#1{#2}}
+    {\edef#1{\bidi@expandonce#1#2}}}
+\bidi@newrobustcmd{\bidi@gappto}[2]{%
+  \if@bidi@undef{#1}
+    {\xdef#1{\unexpanded{#2}}}
+    {\xdef#1{\bidi@expandonce#1\unexpanded{#2}}}}
+\bidi@newrobustcmd{\bidi@xappto}[2]{%
+  \if@bidi@undef{#1}
+    {\xdef#1{#2}}
+    {\xdef#1{\bidi@expandonce#1#2}}}
+
+\bidi@newrobustcmd*{\bidi@protected@eappto}{\bidi@protected\bidi@eappto}
+\bidi@newrobustcmd*{\bidi@protected@xappto}{\bidi@protected\bidi@xappto}
+
+\bidi@newrobustcmd{\bidi@preto}[2]{%
+  \if@bidi@undef{#1}
+    {\edef#1{\unexpanded{#2}}}
+    {\edef#1{\unexpanded{#2}\bidi@expandonce#1}}}
+\bidi@newrobustcmd{\bidi@epreto}[2]{%
+  \if@bidi@undef{#1}
+    {\edef#1{#2}}
+    {\edef#1{#2\bidi@expandonce#1}}}
+\bidi@newrobustcmd{\bidi@gpreto}[2]{%
+  \if@bidi@undef{#1}
+    {\xdef#1{\unexpanded{#2}}}
+    {\xdef#1{\unexpanded{#2}\bidi@expandonce#1}}}
+\bidi@newrobustcmd{\bidi@xpreto}[2]{%
+  \if@bidi@undef{#1}
+    {\xdef#1{#2}}
+    {\xdef#1{#2\bidi@expandonce#1}}}
+
+\bidi@newrobustcmd*{\bidi@protected@epreto}{\bidi@protected\bidi@epreto}
+\bidi@newrobustcmd*{\bidi@protected@xpreto}{\bidi@protected\bidi@xpreto}
+
+\bidi@newrobustcmd*{\bidi@csappto}[1]{\expandafter\bidi@appto\csname#1\endcsname}
+\bidi@newrobustcmd*{\bidi@cseappto}[1]{\expandafter\bidi@eappto\csname#1\endcsname}
+\bidi@newrobustcmd*{\bidi@csgappto}[1]{\expandafter\bidi@gappto\csname#1\endcsname}
+\bidi@newrobustcmd*{\bidi@csxappto}[1]{\expandafter\bidi@xappto\csname#1\endcsname}
+\bidi@newrobustcmd*{\bidi@protected@cseappto}{\bidi@protected\bidi@cseappto}
+\bidi@newrobustcmd*{\bidi@protected@csxappto}{\bidi@protected\bidi@csxappto}
+
+\bidi@newrobustcmd*{\bidi@cspreto}[1]{\expandafter\bidi@preto\csname#1\endcsname}
+\bidi@newrobustcmd*{\bidi@csepreto}[1]{\expandafter\bidi@epreto\csname#1\endcsname}
+\bidi@newrobustcmd*{\bidi@csgpreto}[1]{\expandafter\bidi@gpreto\csname#1\endcsname}
+\bidi@newrobustcmd*{\bidi@csxpreto}[1]{\expandafter\bidi@xpreto\csname#1\endcsname}
+\bidi@newrobustcmd*{\bidi@protected@csepreto}{\bidi@protected\bidi@csepreto}
+\bidi@newrobustcmd*{\bidi@protected@csxpreto}{\bidi@protected\bidi@csxpreto}
+
+\bidi@newrobustcmd{\if@bidi@patchable}{%
+  \bidi@dbg@trce\if@bidi@patchable
+  \begingroup
+  \@makeother\#%
+  \@ifstar\bidi@ifpatchable@i\bidi@ifpatchable}
+
+\long\def\bidi@ifpatchable#1#2{%
+  \endgroup
+  \bidi@dbg@init#1%
+  \if@bidi@undef{#1}
+    {\bidi@dbg@fail{def}\@secondoftwo}
+    {\bidi@dbg@info{def}%
+     \if@bidi@defmacro{#1}
+       {\bidi@dbg@info{mac}%
+        \bidi@ifscanable{#1}
+          {\bidi@ifhashcheck{#2}
+             {\bidi@dbg@info{tok}%
+              \bidi@ifpattern#1{#2}
+                 {\bidi@dbg@info{pat}%
+                  \bidi@dbg@info{pos}\@firstoftwo}
+                 {\bidi@dbg@fail{pat}\@secondoftwo}}
+             {\bidi@dbg@fail{hsh}\@secondoftwo}}
+          {\bidi@dbg@fail{tok}\@secondoftwo}}
+       {\bidi@dbg@fail{mac}\@secondoftwo}}}
+
+\long\def\bidi@ifpatchable@i#1{%
+  \endgroup
+  \bidi@dbg@init#1%
+  \if@bidi@undef{#1}
+    {\bidi@dbg@fail{def}\@secondoftwo}
+    {\bidi@dbg@info{def}%
+     \if@bidi@defmacro{#1}
+       {\bidi@dbg@info{mac}%
+        \if@bidi@defparam{#1}
+          {\bidi@dbg@info{prm}%
+           \bidi@ifscanable{#1}
+             {\bidi@dbg@info{tok}%
+              \bidi@dbg@info{pos}\@firstoftwo}
+             {\bidi@dbg@fail{tok}\@secondoftwo}}
+          {\bidi@dbg@info{prl}%
+           \if@bidi@defprotected{#1}
+             {\bidi@dbg@info{pro}}
+             {}%
+           \bidi@dbg@info{pos}\@firstoftwo}}
+       {\bidi@dbg@fail{mac}\@secondoftwo}}}
+
+\bidi@newrobustcmd*{\bidi@patchcmd}{%
+  \bidi@dbg@trce\bidi@patchcmd
+  \begingroup
+  \@makeother\#%
+  \bidi@@patchcmd}
+
+\newcommand{\bidi@@patchcmd}[4][########1]{%
+  \bidi@ifpatchable#2{#3}
+    {\bidi@dbg@succ{ret}%
+     \begingroup
+     \edef\bidi@resrvda{%
+       \def\noexpand\bidi@resrvda####1\detokenize{macro:}####2->####3&{%
+         #1\def\string\bidi@resrvda\space####2{\noexpand\bidi@resrvdb####3&}}%
+       \def\noexpand\bidi@resrvdb####1\detokenize{#3}####2&{%
+         ####1\detokenize{#4}####2}%
+       \edef\noexpand\bidi@resrvda{%
+         \noexpand\bidi@resrvda\meaning#2&}}%
+     \bidi@resrvda
+     \bidi@patchcmd@scantoks\bidi@resrvda
+     \let#2\bidi@resrvda
+     \bidi@undef\bidi@resrvda
+     \@firstoftwo}
+    {\@secondoftwo}}
+
+\def\bidi@patchcmd@scantoks#1{%
+  \edef\bidi@resrvda{\endgroup
+    \unexpanded{\makeatletter\scantokens}{#1}%
+    \catcode\number`\@=\the\catcode`\@\relax}%
+  \bidi@resrvda}
+
+\newcommand\bidi@isloaded[2][]{
+  \expandafter\ifx\csname if@bidi@#2loaded@\endcsname\relax
+    \expandafter\newif\csname if@bidi@#2loaded@\endcsname
+  \fi
+  \@ifpackageloaded{#2}
+    {\csname @bidi@#2loaded@true\endcsname #1}
+    {\csname @bidi@#2loaded@false\endcsname}}
+
+\protected\def\bidi@ifscanable#1{%
+  \begingroup
+  \edef\bidi@resrvda{%
+    \def\noexpand\bidi@resrvda####1\detokenize{macro}:####2->####3&{%
+      ####1\def\string\bidi@resrvda####2{####3}}%
+    \edef\noexpand\bidi@resrvda{\noexpand\bidi@resrvda\meaning#1&}}%
+  \bidi@resrvda
+  \makeatletter
+  \scantokens\expandafter{\bidi@resrvda}%
+  \expandafter\endgroup\ifx#1\bidi@resrvda
+    \expandafter\@firstoftwo
+  \else
+    \expandafter\@secondoftwo
+  \fi}
+
+\protected\long\def\bidi@ifhashcheck#1{%
+  \begingroup
+  \edef\bidi@resrvda{\detokenize{#1}}%
+  \expandafter\endgroup
+  \expandafter\bidi@ifhashcheck@i\meaning\bidi@resrvda&}
+
+\edef\bidi@ifhashcheck@i#1&{%
+  \noexpand\expandafter
+  \noexpand\bidi@ifhashcheck@ii
+  \noexpand\strip@prefix#1\string#\string#&}
+
+\edef\bidi@ifhashcheck@ii{%
+  \def\noexpand\bidi@ifhashcheck@ii##1\string#\string###2&}
+\bidi@ifhashcheck@ii{\if@bidi@blank{#2}}
+
+\protected\long\def\bidi@ifpattern#1#2{%
+  \begingroup
+  \edef\bidi@resrvda{%
+    \def\noexpand\bidi@resrvda####1\detokenize{#2}####2&{%
+      \endgroup\noexpand\noexpand\noexpand\if@bidi@blank{####2}}%
+    \edef\noexpand\bidi@resrvda{\noexpand\bidi@resrvda
+      \expandafter\strip@prefix\meaning#1\detokenize{#2}&}%
+    \noexpand\bidi@resrvda}
+  \bidi@resrvda\@secondoftwo\@firstoftwo}
+
+\newcommand{\if@bidi@defparam}{}
+\long\edef\if@bidi@defparam#1{%
+  \noexpand\expandafter\noexpand\bidi@ifdefparam
+  \noexpand\meaning#1\detokenize{macro}:->&}
+\edef\bidi@ifdefparam{%
+  \def\noexpand\bidi@ifdefparam##1\detokenize{macro}:##2->##3&}
+\bidi@ifdefparam{\bidi@notblank{#2}}
+
+\newcommand{\if@bidi@defprotected}{}
+\long\edef\if@bidi@defprotected#1{%
+  \noexpand\expandafter\noexpand\bidi@ifdefprotected
+  \noexpand\meaning#1\string\protected&}
+\edef\bidi@ifdefprotected{%
+  \def\noexpand\bidi@ifdefprotected##1\string\protected##2&}
+\bidi@ifdefprotected{\bidi@notblank{#2}}
+
+\bidi@newrobustcmd{\bidi@undef}[1]{\let#1\bidi@undefined}
+
+\let\bidi@dbg@trce\@gobble
+\let\bidi@dbg@init\@gobble
+\let\bidi@dbg@info\@gobble
+\let\bidi@dbg@succ\@gobble
+\let\bidi@dbg@fail\@gobble
+
+\bidi@newrobustcmd*{\bidi@apptocmd}{%
+  \bidi@dbg@trce\bidi@apptocmd
+  \begingroup
+  \@makeother\#%
+  \bidi@hooktocmd\bidi@append}
+
+\bidi@newrobustcmd*{\bidi@pretocmd}{%
+  \bidi@dbg@trce\bidi@pretocmd
+  \begingroup
+  \@makeother\#%
+  \bidi@hooktocmd\bidi@prepend}
+
+\long\def\bidi@hooktocmd#1#2#3{%
+  \endgroup
+  \bidi@dbg@init#2%
+  \if@bidi@undef{#2}
+    {\bidi@dbg@fail{def}\@secondoftwo}
+    {\bidi@dbg@info{def}%
+     \if@bidi@defmacro{#2}
+       {\bidi@dbg@info{mac}%
+        \if@bidi@defparam{#2}
+          {\bidi@dbg@info{prm}%
+           \bidi@ifscanable{#2}
+             {\bidi@ifhashcheck{#3}
+                {\bidi@dbg@info{tok}%
+                 \bidi@dbg@succ{ret}%
+                 \bidi@hooktocmd@i#1#2{#3}%
+                 \@firstoftwo}
+                {\bidi@dbg@fail{hsh}\@secondoftwo}}
+             {\bidi@dbg@fail{tok}\@secondoftwo}}
+          {\bidi@dbg@info{prl}%
+           \if@bidi@defprotected{#2}
+             {\bidi@dbg@info{pro}%
+              \bidi@dbg@succ{red}%
+              \protected}
+             {\bidi@dbg@succ{red}}%
+           \edef#2{#1{\bidi@expandonce#2}{\unexpanded{#3}}}%
+           \@firstoftwo}}
+       {\bidi@dbg@fail{mac}\@secondoftwo}}}
+
+\long\def\bidi@hooktocmd@i#1#2#3{%
+  \begingroup
+  \edef\bidi@resrvda{%
+    \def\noexpand\bidi@resrvda####1\detokenize{macro}:####2->####3&{%
+      ####1\def\string\bidi@resrvda\space####2{#1{####3}{\detokenize{#3}}}}%
+    \edef\noexpand\bidi@resrvda{%
+      \noexpand\bidi@resrvda\meaning#2&}}%
+  \bidi@resrvda
+  \bidi@patchcmd@scantoks\bidi@resrvda
+  \let#2\bidi@resrvda
+  \bidi@undef\bidi@resrvda}
+
+\long\def\bidi@append#1#2{#1#2}
+\long\def\bidi@prepend#1#2{#2#1}
+
+\bidi@newrobustcmd*{\bidi@AtEndPreamble}{\bidi@gappto\bidi@endpreamblehook}
+\newcommand*{\bidi@endpreamblehook}{}
+
+\bidi@preto\document{%
+  \endgroup
+  \let\bidi@AtEndPreamble\@firstofone
+  \bidi@endpreamblehook
+  \protected\def\bidi@AtEndPreamble{\@notprerr\@gobble}%
+  \bidi@undef\bidi@endpreamblehook
+  \begingroup}
+
+\bidi@newrobustcmd*{\bidi@AfterPreamble}{\AtBeginDocument}
+\bidi@AtEndPreamble{\let\bidi@AfterPreamble\@firstofone}
+
+\bidi@newrobustcmd*{\bidi@AfterEndPreamble}{\bidi@gappto\bidi@afterendpreamblehook}
+\newcommand*{\bidi@afterendpreamblehook}{}
+
+\bidi@appto\document{%
+  \let\bidi@AfterEndPreamble\@firstofone
+  \bidi@afterendpreamblehook
+  \protected\def\bidi@AfterEndPreamble{\@notprerr\@gobble}%
+  \bidi@undef\bidi@afterendpreamblehook
+  \ignorespaces}
+
+\AtEndDocument{\let\bidi@AfterEndPreamble\@gobble}
+
+\bidi@newrobustcmd*{\bidi@AfterEndDocument}{\bidi@gappto\bidi@afterenddocumenthook}
+\newcommand*{\bidi@afterenddocumenthook}{}
+
+\bidi@patchcmd\enddocument
+  {\deadcycles}
+  {\let\bidi@AfterEndDocument\@firstofone
+   \bidi@afterenddocumenthook
+   \deadcycles}
+  {}
+  {\let\bidi@@end\@@end
+   \def\@@end{%
+     \let\bidi@AfterEndDocument\@firstofone
+     \bidi@afterenddocumenthook
+     \bidi@@end}}
+
+\bidi@newrobustcmd{\bidi@AtBeginEnvironment}[1]{%
+  \bidi@csgappto{@begin@#1@hook}}
+
+\bidi@patchcmd\begin
+  {\csname #1\endcsname}
+  {\bidi@csuse{@begin@#1@hook}%
+   \csname #1\endcsname}
+  {}
+  {\bidi@warning{%
+     Patching '\string\begin' failed!\MessageBreak
+     '\string\bidi@AtBeginEnvironment' will not work\@gobble}}
+
+\bidi@newrobustcmd{\bidi@AtEndEnvironment}[1]{%
+  \bidi@csgappto{@end@#1@hook}}
+
+\bidi@patchcmd\end
+  {\csname end#1\endcsname}
+  {\bidi@csuse{@end@#1@hook}%
+   \csname end#1\endcsname}
+  {}
+  {\bidi@warning{%
+     Patching '\string\end' failed!\MessageBreak
+     '\string\bidi@AtEndEnvironment' will not work\@gobble}}
+
+\bidi@newrobustcmd{\bidi@BeforeBeginEnvironment}[1]{%
+  \bidi@csgappto{@beforebegin@#1@hook}}
+
+\bidi@pretocmd\begin
+  {\bidi@csuse{@beforebegin@#1@hook}}
+  {}
+  {\bidi@warning{%
+     Patching '\string\begin' failed!\MessageBreak
+     '\string\bidi@BeforeBeginEnvironment' will not work\@gobble}}
+
+\bidi@newrobustcmd{\bidi@AfterEndEnvironment}[1]{%
+  \bidi@csgappto{@afterend@#1@hook}}
+
+\bidi@patchcmd\end
+  {\if@ignore}
+  {\bidi@csuse{@afterend@#1@hook}%
+   \if@ignore}
+  {}
+  {\bidi@warning{%
+     Patching '\string\end' failed!\MessageBreak
+     '\string\bidi@AfterEndEnvironment' will not work\@gobble}}
+%% 
+%% Copyright © 2009–2013  Vafa Khalighi <vafakh@me.com>
+%% 
+%% 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
+%% 
+%% This work is “maintained” (as per LPPL maintenance status)
+%% by Vafa Khalighi.
+%% 
+%% 
+%% 
+%%
+%% End of file `biditools.sty'.
-- 
cgit v1.2.3

