summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/xelatex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2008-07-12 18:30:08 +0000
committerKarl Berry <karl@freefriends.org>2008-07-12 18:30:08 +0000
commitd5bd2061a0757def2c259852e8b45958b1a5183d (patch)
treeabae9af20fe628c6a63b3ae941d4feb874f52d85 /Master/texmf-dist/source/xelatex
parent9bca6550cfe2de5380ebe394480ccb24126f2863 (diff)
bidi update (11jul08)
git-svn-id: svn://tug.org/texlive/trunk@9486 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/xelatex')
-rw-r--r--Master/texmf-dist/source/xelatex/bidi/bidi.dtx839
-rw-r--r--Master/texmf-dist/source/xelatex/bidi/bidi.ins30
2 files changed, 517 insertions, 352 deletions
diff --git a/Master/texmf-dist/source/xelatex/bidi/bidi.dtx b/Master/texmf-dist/source/xelatex/bidi/bidi.dtx
index 8d7c3f0ad11..969c256e503 100644
--- a/Master/texmf-dist/source/xelatex/bidi/bidi.dtx
+++ b/Master/texmf-dist/source/xelatex/bidi/bidi.dtx
@@ -1,36 +1,90 @@
% \iffalse
+%<*internal>
+\iffalse
+%</internal>
+%<*readme>
+------------------------
+THE BIDI PACKAGE v0.3
+
+This package provides a convenient interface for typesetting
+bidirectional texts with XeLaTeX.
+
+This version adds support for tabular environments and captions
+and brings several other improvements and bugfixes.
+
+The code for alphabetic numerals has been moved to the relevant
+"language definition files" of the new polyglossia package.
+
+--------------
+François Charette
+July 2008
+%</readme>
+%<*example>
+\documentclass{article}
+\usepackage[no-math]{fontspec}
+\usepackage{bidi}
+\newfontfamily\arab[Script=Arabic, Scale=1.5]{Scheherazade}
+\begin{document}
+
+This is some text in English with Arabic insertion (\RL{\arab بعض الكلمات العربية}).\footnote{ 1 2 3}
+
+\setRL\arab
+وهذه فقرةٌ بالعربي مع كلمات انكليزية (\LR{\rmfamily Some English words}).\footnote{ 1 2 3}
+\setLR\rmfamily
+
+Back to left-to-right mode…\footnote{ 1 2 3}
+
+\begin{table}[h]
+\centering
+\begin{tabular}{cc}
+1 & 2\\
+3 & 4
+\end{tabular}
+\caption{This is a caption}
+\end{table}
+
+\begin{equation}
+x^2 + y^2 = z^2
+\end{equation}
+
+\setRL
+\begin{table}[h]
+\centering
+\begin{tabular}{cc}
+1 & 2\\
+3 & 4
+\end{tabular}
+\caption{This is a caption}
+\end{table}
+
+\begin{equation}
+x^2 + y^2 = z^2
+\end{equation}
+\end{document}
+%</example>
+%<*internal>
+\fi
+%</internal>
%
-%!TEX encoding = UTF-8 Unicode
-%
-% Copyright (C) 2007 by François Charette <firmicus at gmx dot net>
-%
-% Distributable 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 François Charette.
-%
-% This work consists of the file bidi.dtx
-% and the derived files bidi.sty and bidi.pdf.
-%
-%
-%<*batchfile>
+%<*internal>
\begingroup
+%</internal>
+%<*batchfile>
\input docstrip.tex
\keepsilent
\preamble
____________________________
+
The bidi package
- (C) 2007 François Charette
+ (C) 2007-2008 François Charette
License information appended
\endpreamble
\postamble
-Copyright (C) 2007 by François Charette <firmicus at gmx dot net>
+Copyright (C) 2007-2008 by François Charette <firmicus at gmx dot net>
Distributable under the LaTeX Project Public License,
version 1.3c or higher (your choice). The latest version of
@@ -45,16 +99,83 @@ This work consists of the file \jobname.dtx
\endpostamble
\askforoverwritefalse
\generate{\file{\jobname.sty}{\from{\jobname.dtx}{package}}}
-\generate{\file{\jobname.ins}{\from{\jobname.dtx}{batchfile}}}
\nopreamble\nopostamble
+%</batchfile>
+%<batchfile>\endbatchfile
+%<*internal>
+\generate{\file{\jobname.ins}{\from{\jobname.dtx}{batchfile}}}
+\generate{\file{bidi-example.tex}{\from{\jobname.dtx}{example}}}
\generate{\file{README.txt}{\from{\jobname.dtx}{readme}}}
-\generate{\file{dtx-style.sty}{\from{\jobname.dtx}{dtx-style}}}
\endgroup
-%</batchfile>
+%</internal>
%
%<*driver>
\documentclass[12pt]{ltxdoc}
-\usepackage{dtx-style}
+\usepackage{fontspec,xltxtra}
+\usepackage{bidi}
+\usepackage{xspace,fancyvrb,paralist}
+\usepackage[xetex]{color}
+\definecolor{myblue}{rgb}{0.02,0.04,0.48}
+\definecolor{myred}{rgb}{0.65,0.04,0.07}
+\definecolor{darkgray}{gray}{0.3}
+\definecolor{lightgray}{gray}{0.6}
+\definecolor{mygreen}{rgb}{0,.43,0}
+\usepackage[dvipdfm,
+ bookmarks=true,
+ colorlinks=true,
+ linkcolor=myblue,
+ urlcolor=myblue,
+ citecolor=myblue,
+ hyperindex=false,
+ hyperfootnotes=false,
+ pdftitle={The bidi package},
+ pdfauthor={F Charette <firmicus@gmx.net>},
+ pdfsubject={An interface for typesetting bidirectional texts with XeLaTeX},
+ pdfkeywords={XeTeX, XeLaTeX, Right-to-Left, Bidi, Arabic, Hebrew}
+ ]{hyperref}
+% NB some of this preamble is taken or adapted from fontspec-doc-style.sty
+\newcommand*\pkg[1]{\textsf{#1}}
+\def\eg{\textit{e.g.,}\xspace}
+\def\ie{\textit{i.e.,}\xspace}
+\def\ca{\textit{ca.}\@\xspace}
+\def\Eg{\textit{E.g.,}\xspace}
+\def\Ie{\textit{I.e.,}\xspace}
+\def\etc{\@ifnextchar.{\textit{etc}}{\textit{etc.}\@\xspace}}
+\def\arabxetex{Arab\XeTeX}
+
+\newlength{\oldparindent}
+\newcommand{\parindentoff}{\setlength{\oldparindent}{\parindent} \setlength{\parindent}{0pt}}
+\newcommand{\parindenton}{\setlength{\parindent}{\oldparindent}}
+
+%% LOGOS, tuned for Palatino (seems also OK with Junicode):
+\makeatletter
+\TeX@logo@spacing{-0.12em}{-0.12em}%
+ {0.5ex}{-0.3em}{-0.12em}{-0.1em}
+\makeatother
+%% fontspec declarations:
+\setromanfont[Mapping=tex-text]{Junicode}%{FPL Neu}
+\defaultfontfeatures{Scale=MatchLowercase}
+\setmonofont{DejaVu Sans Mono}%{Inconsolata}%{Latin Modern Typewriter Proportional}%{Luxi Mono}%{Courier New}
+\setsansfont{DejaVu Sans}
+\newfontfamily\arabicfont[Script=Arabic,Scale=1.5]{Scheherazade}
+\newfontfamily\hebrewfont[Script=Hebrew]{Ezra SIL}
+%\newfontfamily\syriacfont[Script=Syriac]{Estrangelo Talada}
+\newfontfamily\damase{MPH 2B Damase}
+\linespread{1.05}
+\frenchspacing
+\renewcommand{\footnoterule}{}
+\skip\footins=2\bigskipamount
+%% ToC
+\def\@dotsep{1000}
+\setcounter{tocdepth}{2}
+\setlength\columnseprule{0.4pt}
+\makeatletter
+\renewcommand\tableofcontents{%
+ \begin{multicols}{2}[\section*{\contentsname}]%
+ \small
+ \@starttoc{toc}%
+ \end{multicols}}
+\makeatother
\EnableCrossrefs
\CodelineIndex
\RecordChanges
@@ -64,30 +185,16 @@ This work consists of the file \jobname.dtx
\end{document}
%</driver>
%
-%<*readme>
-------------------------
-THE BIDI PACKAGE v0.2.2
-
-This package provides a convenient interface for typesetting
-bidirectional texts with XeLaTeX.
-
-NB: To regenerate the pdf documentation from the dtx file you must
-use xelatex. The fonts Junicode, Scheherazade and Ezra SIL must also
-be installed on your system.
---------------
-François Charette
-2007
-%</readme>
-%
% \fi
-%
-% \errorcontextlines=999
-% \makeatletter
+% \makeatletter ^^A% To document @-cmds
+% \errorcontextlines=999 ^^A% Show up all my mistakes
%
% \GetFileInfo{\jobname.sty}
%
% \title{The \pkg{bidi} package}
-% \author{François Charette}
+% ^^A \author{\textcolor{myblue}{François Charette}\\
+% \author{François Charette\\
+% \footnotesize\texttt{<fιrmιcus@gmχ.νετ>}}
% \date{\filedate \qquad \fileversion}
%
% \maketitle
@@ -102,7 +209,7 @@ François Charette
% could be useful outside of the \XeTeX\ world.}
% ^^A\eTeX-based typesetting engines and the \LaTeX\ format,
% Most of its macros are directly copied or adapted from
-% the Babel bidirectional module for Hebrew.\footnote{ See
+% the Babel bidirectional module for Hebrew (by Boris Lavva).\footnote{ See
% ^^A\url{ftp://dante.ctan.org/tex-archive/macros/latex/required/babel/hebrew.dtx}
% section 60.4 of the \href{ftp://dante.ctan.org/tex-archive/macros/latex/required/babel/babel.pdf}{Babel user documentation.}}
%
@@ -119,12 +226,12 @@ François Charette
% \setLR
% \end{Verbatim}
%
-% \setRL\setfootnoteLR^^A\fontspec[ExternalLocation]{cmr12}
+% \setRL\setfootnoteLR
% This is a right-to-left paragraph.\footnote{ %
% Note that when processing fonts that are not TFM-based,
% \XeTeX, contrary to \TeX, uses (roughly speaking) one box per word,
% instead of one per character. The command \cmd\RL\ is thus usually
-% superfluous when inserting a single Arabic or Hebrew word.}
+% superfluous when inserting a single word.}
% \setLR
%
%
@@ -139,17 +246,10 @@ François Charette
% (or equivalently \cmd\unsetfootnoteRL).
% \unsetfootnoteRL
%
-% \textbf{Important note:} Currently, \XeTeX's (version 0.996) placement of the
-% footnote mark at the beginning of plain footnotes in RL context is incorrect
-% (as you can see yourself below).\footnote{ %
-% More precisely, this is a bug in \XeTeX's handling of glue in
-% right-to-left context.}
-% This will likely be fixed in the next version.
-%
% With the package \pkg{manyfoot}, it is possible to have several layers
% of footnotes, each of which can be set in a different direction.
% See the documentation to Arab\XeTeX\ for more details. This should also be
-% possible with \pkg{bigfoot}, but I have not tested it yet.
+% possible with \pkg{bigfoot}.
%
% Some other \LaTeX\ macros are redefined internally to ensure their correct
% behaviour in bidirectional display. Contrary to the Babel approach, we leave
@@ -163,55 +263,26 @@ François Charette
% Because of the way bidirectionality is implemented in \eTeX, no information on
% directionality is included in the dvi (or xdv) output. Consequently, if a color
% \cmd\special\ is inserted in the middle of a paragraph, the color change will
-% be effected as though the text would run from left to right. For \cmd\textcolor,
+% be in effect as though the text would run from left to right. For \cmd\textcolor,
% the output will be correct only if the textual argument falls on a single line.
% A better approach is to set the color of text by means of \XeTeX's font features,
% as in this example:
% \begin{Verbatim}[gobble=2]
% \newcommand{\textblue}[1]{{\addfontfeature{Color=0000FF}#1}}
-% \setRL\fontspec[Script=Arabic]{Scheherazade}
+% \setRL
+% {\arabicfont
% اسود اسود اسود اسود اسود اسود اسود اسود اسود اسود اسود اسود
% اسود \textblue{ازرق ازرق ازرق ازرق ازرق ازرق ازرق } اسود اسود
% اسود اسود اسود اسود
+% }
% \end{Verbatim}
% \newcommand{\textblue}[1]{{\addfontfeature{Color=0000FF}#1}}
-% \setRL\fontspec[Script=Arabic]{Scheherazade}
+% \setRL
+% {\arabicfont
% اسود اسود اسود اسود اسود اسود اسود اسود اسود اسود اسود اسود اسود
% \textblue{ازرق ازرق ازرق ازرق ازرق ازرق ازرق} اسود اسود
-% اسود اسود اسود اسود\setLR
-%
-% \section{Alphabetic numerals in Arabic, Hebrew and Syriac}
-%
-% For convenience the following macros are provided for generating numbers
-% in alphanumerical notation in Arabic (in both Eastern and Western styles)
-% and Hebrew. The interested reader can find information on these systems
-% in the following two Wikipedia articles:
-% \url{http://en.wikipedia.org/wiki/Abjad_numerals} and
-% \url{http://en.wikipedia.org/wiki/Hebrew_numerals}.
-% Note that the Hebrew implementation in \pkg{bidi} is less sophisticated than
-% the one in Babel, where various special cases are taken into account.
-%
-% \subsection{Examples}
-% \parindentoff
-% The Arabic \textit{abjad} numbers can be generated with the command \cmd\abjad.
-% \DescribeMacro{\abjad}
-% Example: |\abjad{1863}| yields {\arabicfont\abjad{1863}}.
-%
-% In the Maghrib the conventions are somewhat different, and the maghribi forms
-% of the \textit{abjad} numerals are obtained with the \cmd\abjadmaghribi\ command.
-% \DescribeMacro{\abjadmaghribi}
-% Example: |\abjadmaghribi{1863}| yields {\arabicfont\abjadmaghribi{1863}}.
-%
-% Hebrew numerals are generated with the command \cmd\hebrewnumeral.
-% \DescribeMacro{\hebrewnumeral} Example:
-% |\hebrewnumeral{1863}| yields {\hebrewfont\hebrewnumeral{1863}}.
-%
-% Experimental support is also provided for Syriac abjad numerals, which can be generated
-% with \cmd\abjadsyriac. \DescribeMacro{\abjadsyriac}
-% Example: |\abjadsyriac{463}| yields {\syriacfont\abjadsyriac{463}}.
-%
-% Note that the above macros only outputs the Unicode characters:
-% the active font must thus contain the necessary glyphs.
+% اسود اسود اسود اسود}
+% \setLR
%
% \section{Scripts written from right-to-left}
%
@@ -256,7 +327,7 @@ François Charette
% must be inserted before each
% word. This could be easily automated by means of a TECkit font mapping.
% Etruscanists interested in this can contact me directly.}
-% \hfill \RL{\damase\addfontfeature{Mapping=etruscan}auleśi meteliś} ^^A𐌀𐌖𐌋𐌄𐌑𐌉 𐌌𐌄𐌕𐌄𐌋𐌉𐌑 ^^A(Aules'i Metelis)
+% \hfill \RL{\damase 𐌀𐌖𐌋𐌄𐌑𐌉 𐌌𐌄𐌕𐌄𐌋𐌉𐌑} ^^A\addfontfeature{Mapping=etruscan}auleśi meteliś}
% \item N'ko:\footnote{ %
% As can be seen in this example, the ICU rendering engine does not yet
% support contextual substitutions for N'Ko.}
@@ -266,21 +337,28 @@ François Charette
% \item Kharosthi: \hfill {\fontspec[Script=Kharosthi]{MPH 2B Damase} 𐨗𐨁𐨙𐨪} ^^A random gibberish
% \item Cypriot: \hfill {\fontspec[Script=Cypriot Syllabary]{MPH 2B Damase} 𐠌𐠥𐠯} ^^A random gibberish
% \end{compactitem}
+%
+% \section{Acknowledgements}
+%
+% Thanks to Boris Lavva (author of \pkg{rlbabel.def}),
+% the authors of Farsi\TeX,
+% Youssef Jabri [\RL{\arabicfont يوسف جبري}] (author of \pkg{Arabi}),
+% and Vafa Khalighi [\RL{\arabicfont وفا خليقي}] (author of \pkg{xepersian}).
+%
+% \StopEventually{}
%
-%% \section{Implementation}
-%\iffalse
+% \section{Implementation}
+% \iffalse
%<*package>
-%\fi
+% \fi
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{bidi}
- [2007/04/30 v0.2.2 Bidirectional typesetting in XeLaTeX]
-% this is not used for now:
-%\newif\if@rlmain
-%\@rlmainfalse
-%\DeclareOption{rldocument}{\@rlmaintrue}
-%\ExecuteOptions{rldocument}
-%\ProcessOptions
+ [2008/07/07 v0.3 Bidirectional typesetting in XeLaTeX]
+\newif\if@rlmain
+\@rlmainfalse
+\DeclareOption{rldocument}{\@rlmaintrue}
+\ProcessOptions
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ifx\TeXXeTstate\undefined\else%
\TeXXeTstate=1
@@ -293,11 +371,13 @@ François Charette
engine}%
\fi
\newif\if@rl
-%\AtBeginDocument{% Here we set the main document direction
-% \if@rl\@rlmaintrue%
-% \else\@rlmainfalse%
-% \fi%
-%}
+\AtBeginDocument{% Here we set the main document direction
+ \if@rlmain\else
+ \if@rl\@rlmaintrue%
+ \else\@rlmainfalse%
+ \fi%
+ \fi%
+}
% \end{macrocode}
% \subsection{Basic bidi macros}
% This defines the macros for RL insertion in LR context and conversely.
@@ -319,47 +399,69 @@ François Charette
%
% For global right-to-left typesetting, the directional primitive must be
% included within an \cmd\everypar\ construct. The traditional approach was to
-% redefine \cmd\everypar\ as a one-argument macro, but since some packages (such
-% as \pkg{ledmac}) also play tricks with \cmd\everypar, this can become
-% problematic. Hence we have adopted Youssef Jabri's clever approach in his
-% \pkg{Arabi} package.
+% redefine \cmd\everypar\ as a one-argument macro, but since some packages such
+% as \pkg{ledmac} also play tricks with \cmd\everypar, this can become
+% problematic. Hence we have adopted Youssef Jabri's approach in his
+% \pkg{Arabi} package (\,\RL{\arabicfont شكراً جزيلاً}).
% \begin{macrocode}
\def\rl@everypar{\if@rl{\setbox\z@\lastbox\beginR\usebox\z@}\fi}
\let\o@everypar=\everypar
-% The following, surely, will not play well with all packages, e.g. ledmac
+%The following, surely, will not play well with all packages, e.g. ledmac
%\def\everypar#1{\o@everypar{\rl@everypar#1}}
-% But we now use this instead, taken from Arabicore.sty in the Arabi package.
-% Thanks to Youssef Jabri! Shukran jazilan!
+% But we now use this instead, taken from Arabicore.sty
\newtoks\n@everypar
\n@everypar\expandafter{\the\o@everypar}
\o@everypar{\rl@everypar\the\n@everypar}
\let\everypar=\n@everypar
% \end{macrocode}
%
-% This is not used at the moment:
+% This is similar to |\ensuremath| in \LaTeX:
% \begin{macrocode}
\def\@ensure@RL#1{\if@rl#1\else\RL{#1}\fi}
\def\@ensure@LR#1{\if@rl\LR{#1}\else#1\fi}
% \end{macrocode}
%
+% This does the opposite (which is useful for ensuring correct directionality
+% in boxes or tabular environments, for instance):
+% \begin{macrocode}
+\def\@ensure@dir#1{\if@rl\RL{#1}\else{#1}\fi}
+\def\@ensure@maindir#1{\if@rlmain\RL{#1}\else{#1}\fi}
+% \end{macrocode}
+% These are not yet used…
+% \begin{macrocode}
+\def\@@RL{RL}
+\def\@@LR{LR}
+\def\save@dir{\if@rl\gdef\saved@@dir{RL}\else\gdef\saved@@dir{LR}\fi}
+\def\reset@dir{\ifx\saved@@dir\@@RL\setRL\else\ifx\saved@@dir\@@LR\setLR\else\relax\fi\fi}
+% \end{macrocode}
+%
% \subsection{Logos}
% The following redefinitions ensure proper typesetting of the various logos.
% \begin{macrocode}
%preserve logos
\let\@@TeX\TeX
-\def\TeX{\LR{\@@TeX}}
+\def\TeX{\@ensure@LR{\@@TeX}}
\let\@@LaTeX\LaTeX
-\def\LaTeX{\LR{\@@LaTeX}}
+\def\LaTeX{\@ensure@LR{\@@LaTeX}}
\let\@@LaTeXe\LaTeXe
-\def\LaTeXe{\LR{\@@LaTeXe}}
+\def\LaTeXe{\@ensure@LR{\@@LaTeXe}}
\@ifpackageloaded{xltxtra}{
\let\@@XeTeX\XeTeX
-\def\XeTeX{\LR{\@@XeTeX}}
+\def\XeTeX{\@ensure@LR{\@@XeTeX}}
+\let\@@XeLaTeX\XeLaTeX
+\def\XeLaTeX{\@ensure@LR{\@@XeLaTeX}}
}{}
% \end{macrocode}
-% \subsection{Redefinition of internal \LaTeX\ macros}
+% \subsection{Redefinition of various internal \LaTeX\ macros}
+% \subsubsection{\cmd{\text}}
+% \cmd{\text} is defined in \pkg{amstext.sty}.
+% \begin{macrocode}
+\@ifundefined{text}{}{%
+\let\t@xt=\text
+\def\text#1{\t@xt{\@ensure@dir{#1}}}}
+% \end{macrocode}
+% \subsubsection{\cmd{\list}}
% \begin{macrocode}
-%VARIOUS LATEX MACROS
\def\list#1#2{%
\ifnum \@listdepth >5\relax
\@toodeep
@@ -386,7 +488,9 @@ François Charette
\fi
\parshape \@ne \@totalleftmargin \linewidth
\ignorespaces}
-%%
+% \end{macrocode}
+% \subsubsection{Dotted line in table of contents}
+% \begin{macrocode}
\def\@dottedtocline#1#2#3#4#5{%
\ifnum #1>\c@tocdepth \else
\vskip \z@ \@plus.2\p@
@@ -407,7 +511,9 @@ François Charette
\hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor \beginL#5\endL}%
\par}%
\fi}
-%%
+% \end{macrocode}
+% \subsubsection{\cmd{\raggedright} and \cmd{\raggedleft}}
+% \begin{macrocode}
\def\raggedright{%
\let\\\@centercr
\leftskip\z@skip\rightskip\@flushglue
@@ -418,27 +524,67 @@ François Charette
\else\@@raggedleft\fi}
\renewcommand\raggedright{\if@rl\@@raggedleft%
\else\@@raggedright\fi}
+% \end{macrocode}
+% \subsubsection{\cmd{\underline}}
+% \begin{macrocode}
\let\@@@underline=\underline
\def\underline#1{\@@@underline{\if@rl\RL{#1}\else #1\fi}}
\if@compatibility
\let\undertext=\underline
\fi
% \end{macrocode}
+% \subsubsection{\cmd\@outputdblcol}
+% \begin{macrocode}
+\let\lr@outputdblcol\@outputdblcol
+\renewcommand{\@outputdblcol}{%
+ \if@rlmain%
+ \rl@outputdblcol%
+ \else%
+ \lr@outputdblcol%
+ \fi%
+}
+\newcommand{\rl@outputdblcol}{%
+ \if@firstcolumn
+ \global \@firstcolumnfalse
+ \global \setbox\@leftcolumn \box\@outputbox
+ \else
+ \global \@firstcolumntrue
+ \setbox\@outputbox \vbox {\hb@xt@\textwidth {%
+ \hskip\columnwidth%
+ \hfil\vrule\@width\columnseprule\hfil
+ \hb@xt@\columnwidth {%
+ \box\@leftcolumn \hss}%
+ \hb@xt@\columnwidth {%
+ \hskip-\textwidth%
+ \box\@outputbox \hss}%
+ \hskip\columnsep%
+ \hskip\columnwidth}}%
+ \@combinedblfloats
+ \@outputpage
+ \begingroup
+ \@dblfloatplacement
+ \@startdblcolumn
+ \@whilesw\if@fcolmade \fi
+ {\@outputpage
+ \@startdblcolumn}%
+ \endgroup
+ \fi}
+
% \subsection{Footnotes}
% This implements the bidirectionality of plain \LaTeX\ footnotes.
% \begin{macrocode}
\newif\if@rl@footnote
-\if@rl\@rl@footnotetrue\else\@rl@footnotefalse\fi
+\if@rlmain\@rl@footnotetrue\else\@rl@footnotefalse\fi
\let\@@footnoterule=\footnoterule
\def\LRfootnoterule{\@@footnoterule}
-%bug?-->this causes new par to be set, hence hack with vskip :-{
+%%bug?-->this causes new par to be set, hence hack with vskip :-{
\def\RLfootnoterule{\vskip -\baselineskip\hb@xt@\hsize{\hss\vbox{\@@footnoterule}}}
%
\def\setfootnoteRL{\@rl@footnotetrue}
\def\unsetfootnoteRL{\@rl@footnotefalse}
\def\setfootnoteLR{\unsetfootnoteRL}
%
-\def\footnoterule{\if@rl@footnote\RLfootnoterule\else\LRfootnoterule\fi}
+\def\footnoterule{\if@rlmain\RLfootnoterule\else\LRfootnoterule\fi}
% \end{macrocode}
% \subsection{Bidi switching commands}
% Commands for switching between LR and RL global contexts.
@@ -464,7 +610,7 @@ François Charette
\@makefntext{%
\rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
\color@endgroup}}%
-%... also in minipages
+%%... also in minipages
\long\def\@mpfootnotetext#1{%
\global\setbox\@mpfootins\vbox{%
\if@rl@footnote\@rltrue\else\@rlfalse\fi
@@ -480,6 +626,134 @@ François Charette
\color@endgroup
}}
% \end{macrocode}
+% \subsection{Captions}
+% This redefines the macros responsible for captions in various popular classes
+% (article, book, report, scrartcl, scrbook, scrreprt, and memoir).
+% \begin{macrocode}
+\@ifundefined{KOMAClassName}{%
+\@ifclassloaded{memoir}{%
+\long\def\@makecaption#1#2{\let\@memtempa\relax
+ \ifdim\prevdepth>-99\p@ \vskip\abovecaptionskip
+ \else \def\@memtempa{\vbox to\topskip{}}\fi
+ \let\@contfnote\footnote \renewcommand{\footnote}[2][]{}
+ \let\@contfmark\footnotemark \renewcommand{\footnotemark}[1][]{}
+ \sbox\@tempboxa{\@contnfont #1\@contdelim \@conttfont #2}
+ \let\footnote\@contfnote
+ \let\footnotemark\@contfmark
+ \ifdim\wd\@tempboxa<\linewidth \centering \fi
+ \if@contcw
+ \centering
+ \parbox{\@contcwidth}{%
+ \ifdim\wd\@tempboxa<\@contcwidth \centering \fi
+ \fi
+ \if@conthang
+ \sbox\@tempboxa{\@contnfont #1\@contdelim}
+ \@contpre%
+ \@ensure@dir{\@contcstyle\hangindent=\wd\@tempboxa
+ \noindent\box\@tempboxa\@memtempa \@conttfont #2}\par
+ \else
+ \if@contindent
+ \@contpre%
+ \@ensure@dir{\@contnfont #1\@contdelim}\@memtempa
+ \@ensure@dir{\@contcstyle\hangindent=\@contindw
+ \hangafter=\@ne\@conttfont #2}\par% <- v1.4
+ \else
+ \@contpre%
+ \@ensure@dir{\@contnfont #1\@contdelim}\@memtempa
+ \@ensure@dir{\ifdim\wd\@tempboxa<\linewidth
+ \@contcshortstyle\else \@contcstyle\fi% <- v1.4
+ \@conttfont #2}\par
+ \fi
+ \fi
+ \@contpost
+ \if@contcw
+ \par
+ } % end of the \parbox
+ \fi
+ \vskip\belowcaptionskip}
+}% else we redefine \@makecaption for the standard classes
+{\@ifundefined{@makecaption}{%
+%warning ??
+}{\long\def\@makecaption#1#2{%
+ \vskip\abovecaptionskip
+ \sbox\@tempboxa{\@ensure@dir{#1: #2}}%
+ \ifdim \wd\@tempboxa >\hsize
+ \@ensure@dir{#1: #2}\par
+ \else
+ \global \@minipagefalse
+ \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
+ \fi
+ \vskip\belowcaptionskip}%
+ }%
+ }%
+}% ELSE KOMASCRIPT
+{\@ifclassloaded{scrlttr2}{}% do nothing for letter class
+{\renewcommand{\@@makecaption}[3]{%
+ \cap@margin
+ \ifonelinecaptions
+ \@tempcnta=\value{mpfootnote}\@tempcntb=\value{footnote}%
+ \let\scr@tmp@footnotetext=\@footnotetext
+ \let\@footnotetext=\@gobble
+ \sbox\@tempboxa{%
+ {\capfont\strut\ignorespaces
+ #1{{\caplabelfont#2\captionformat}}%
+ #3\unskip\strut}%
+ }%
+ \let\@footnotetext=\scr@tmp@footnotetext
+ \let\scr@tmp@footnotetext=\undefined
+ \setcounter{footnote}{\@tempcntb}%
+ \setcounter{mpfootnote}{\@tempcnta}%
+ \else
+ \sbox\@tempboxa{\hspace*{2\cap@width}}%
+ \fi
+ \begingroup%
+ \setlength{\@tempdima}{\cap@width}%
+ \ifdim \wd\@tempboxa >\@tempdima
+ \hb@xt@\hsize{%
+ \setbox\@tempboxa\vbox{\hsize=\cap@width
+ \ifdofullc@p
+ \@ensure@dir{\capfont\@hangfrom{\scr@smashdp{\strut\ignorespaces
+ #1{{\caplabelfont#2\captionformat}}}}%
+ {#3\unskip\strut\par}}%
+ \else%
+ \ifdim\cap@indent<\z@
+ \@ensure@dir{\capfont\strut\ignorespaces
+ #1{{\caplabelfont #2\captionformat\par}}%
+ \noindent\hspace*{-\cap@indent}#3\unskip\strut\par}%
+ \else%
+ \if@capbreak
+ \@ensure@dir{\capfont\strut\ignorespaces
+ #1{{\caplabelfont #2\captionformat\par}}%
+ \noindent\@hangfrom{\hspace*{\cap@indent}}{#3\par}}%
+ \else
+ \@ensure@dir{\capfont\@hangfrom{\scr@smashdp\strut\hspace*{\cap@indent}}%
+ {\hspace{-\cap@indent}\scr@smashdp{\ignorespaces#1%
+ {{\caplabelfont#2\captionformat}}}#3\unskip\strut\par}}%
+ \fi
+ \fi
+ \fi
+ }%
+ \setlength{\@tempdima}{\ht\@tempboxa}%
+ \addtolength{\@tempdima}{\dp\@tempboxa}%
+ \addtolength{\@tempdima}{-\ht\strutbox}%
+ \ht\@tempboxa\ht\strutbox
+ \dp\@tempboxa\@tempdima
+ \strut\cap@left
+ \box\@tempboxa
+ \cap@right\strut
+ }%
+ \else
+ \global \@minipagefalse
+ \sbox\@tempboxa{%
+ \@ensure@dir{\capfont\scr@smashdp{\strut\ignorespaces
+ #1{{\caplabelfont#2\captionformat}}}%
+ #3}%
+ }%
+ \hb@xt@\hsize{\strut\cap@left\box\@tempboxa\cap@right\strut}%
+ \fi
+ \endgroup}
+}}%
+% \end{macrocode}
% \subsection{\cmd{\textcolor}}
% \cmd\textcolor\ needs to be redefined so that the color-switching
% commands in the output will affect the correct portion of text also
@@ -487,7 +761,7 @@ François Charette
% more than one line, which is why we issue a warning. See §~\ref{bidicolor}
% above for an alternative approach to colored text using \XeTeX\ font features.
% The following code (less the warning) is again taken from \texttt{rlbabel.def}.
-% \begin{macrocode}
+% \begin{macrocode}
\ifx\@textcolor\@undefined\else%
\AtBeginDocument{%
\def\@textcolor#1#2#3{%
@@ -501,169 +775,103 @@ François Charette
}%
}%
\fi
-%%%
% \end{macrocode}
-% \subsection{Alphanumerical numbers}
-% The code that follows is a straightforward adaptation of the corresponding
-% code in the \pkg{Arabi} package. The code for Hebrew numerals is a simplified version
-% of the implementation in Babel.
+% \subsection{Tabular environments}
+% This is taken almost verbatim from Farsi\TeX, with the addition of a
+% patch for the \pkg{array} package (which does not work correctly yet).
% \begin{macrocode}
-\def\abjad#1{%
-\ifnum#1>1999 \PackageWarning{bidi}{Illegal value (#1) for abjad numeral} {#1}
-\else
- \ifnum#1<\z@\space\PackageWarning{bidi}{Illegal value (#1) for abjad numeral}%
- \else
- \ifnum#1<10\expandafter\abj@num@i\number#1%
- \else
- \ifnum#1<100\expandafter\abj@num@ii\number#1%
- \else
- \ifnum#1<\@m\expandafter\abj@num@iii\number#1%
- \else
- \ifnum#1<\@M\expandafter\abj@num@iv\number#1%since #1<2000, we must have 1000
- \fi
- \fi
- \fi
- \fi
- \fi
-\fi
-}
-
-\def\abjadmaghribi#1{%
-\ifnum#1>1999 \PackageWarning{bidi}{Illegal value (#1) for abjad numeral} {#1}
-\else
- \ifnum#1<\z@\space\PackageWarning{bidi}{Illegal value (#1) for abjad numeral}%
- \else
- \ifnum#1<10\expandafter\abj@num@i\number#1%
- \else
- \ifnum#1<100\expandafter\abj@maghribi@num@ii\number#1%
- \else
- \ifnum#1<\@m\expandafter\abj@maghribi@num@iii\number#1%
- \else
- \ifnum#1<\@M\expandafter\abj@maghribi@num@iv\number#1%
- \fi
- \fi
- \fi
- \fi
- \fi
-\fi
-}
-
-\def\hebrewnumeral#1{%
-\ifnum#1>9999 \PackageWarning{bidi}{Illegal value (#1) for Hebrew numeral} {#1}
-\else
- \ifnum#1<\z@\space\PackageWarning{bidi}{Illegal value (#1) for Hebrew numeral}%
- \else
- \ifnum#1<10\expandafter\heb@num@i\number#1%
- \else
- \ifnum#1<100\expandafter\heb@num@ii\number#1%
- \else
- \ifnum#1<\@m\expandafter\heb@num@iii\number#1%
- \else
- \ifnum#1<\@M\expandafter\heb@num@iv\number#1%
- \fi
- \fi
- \fi
- \fi
- \fi
-\fi
-}
-
-\def\abjadsyriac#1{%
-\ifnum#1>499 \PackageWarning{bidi}{Illegal value (#1) for Syriac abjad numeral} {#1}
-\else
- \ifnum#1<\z@\space\PackageWarning{bidi}{Illegal value (#1) for Syriac abjad numeral}%
- \else
- \ifnum#1<10\expandafter\abj@syr@num@i\number#1%
- \else
- \ifnum#1<100\expandafter\abj@syr@num@ii\number#1%
- \else
- \expandafter\abj@syr@num@iii\number#1%
- \fi
- \fi
- \fi
-\fi
+\newif\if@tab@rl
+\if@rlmain\@tab@rltrue\else\@tab@rlfalse\fi
+\@ifpackageloaded{array}%
+{\PackageWarningNoLine{bidi}{%
+ You are using the package array (or the memoir class). ^^J
+ Unfortunately right-to-left tabular environments are not ^^J
+ yet supported with the array package.}
+\let\@uthor=\author
+\def\author#1{\@uthor{\@ensure@dir{#1}}}
+}%
+%\def\@array[#1]#2{%
+% \@tempdima \ht \strutbox
+% \advance \@tempdima by\extrarowheight
+% \setbox \@arstrutbox \hbox{\vrule
+% \@height \arraystretch \@tempdima
+% \@depth \arraystretch \dp \strutbox
+% \@width \z@}%
+% \begingroup
+% \@mkpream{#2}%
+% \xdef\@preamble{\noexpand \ialign \@halignto
+% \bgroup \@arstrut \@preamble
+% \tabskip \z@ \cr}%
+% \endgroup
+% \@arrayleft
+% \if #1t\vtop \else \if#1b\vbox \else \vcenter \fi \fi
+% \bgroup
+% \let \@sharp ##\let \protect \relax
+% \lineskip \z@
+% \baselineskip \z@
+% \if@tab@rl\hbox\bgroup\beginR\vbox\bgroup\fi
+% \m@th
+% \let\\\@arraycr \let\tabularnewline\\\let\par\@empty
+% \@preamble}
+%\def\@tabular{%
+% \if@rl\global\@tab@rltrue\fi
+% \leavevmode
+% \hbox \bgroup\if@tab@rl\beginR\fi
+% $\col@sep\tabcolsep
+% \let\d@llarbegin\begingroup \let\d@llarend\endgroup
+% \@tabarray}
+%\def\endtabular{\endarray\if@tab@rl\egroup\endR\egroup\fi
+%$\if@tab@rl\endR\fi
+%\egroup}%
+{% ELSE DEFAULT LATEX MACROS
+\def\@tabular{%
+ \if@rl\global\@tab@rltrue\fi
+ \leavevmode \hbox \bgroup \if@tab@rl\beginR\fi
+ $\let\@acol\@tabacol
+ \let\@classz\@tabclassz
+ \let\@classiv\@tabclassiv \let\\\@tabularcr\@tabarray}
+\def\endtabular{\crcr\egroup\if@tab@rl\egroup\endR\egroup\fi
+ \egroup $\if@tab@rl\endR\fi \egroup}%
+\def\@array[#1]#2{\setbox\@arstrutbox=\hbox{\vrule
+ height\arraystretch \ht\strutbox
+ depth\arraystretch \dp\strutbox
+ width\z@}\@mkpream{#2}\edef\@preamble{%
+\halign \noexpand\@halignto
+\bgroup \tabskip\z@ \@arstrut \@preamble \tabskip\z@ \cr}%
+\let\@startpbox\@@startpbox \let\@endpbox\@@endpbox
+\if #1t\vtop \else \if#1b\vbox \else \vcenter \fi\fi
+\bgroup \let\par\relax
+\let\@sharp##\let\protect\relax \lineskip\z@\baselineskip\z@
+\if@tab@rl\hbox\bgroup\beginR\vbox\bgroup\fi
+\@preamble}
}
-%
% \end{macrocode}
-% \subsubsection{Symbol for zero}
-% By default the \textit{abjad} symbol for zero is not defined,
-% but if a package writer or user owns or develops a font containing
-% appropriate glyphs (e.g. as found in medieval manuscripts), it can be
-% easily redefined.
+% \subsection{Equation labels in RL documents}
+% Adapted from Farsi\TeX.
% \begin{macrocode}
-\def\abjad@zero{}
-\def\hebnum@zero{}
-\def\syriac@zero{}
+\def\@open@paren{\if@rlmain)\else(\fi}
+\def\@close@paren{\if@rlmain(\else)\fi}
+\def\tagform@#1{\maketag@@@{\@open@paren\ignorespaces#1\unskip\@@italiccorr\@close@paren}}
% \end{macrocode}
-% \subsubsection{Definitions of alphanumeric characters}
+% \subsection{TODO}
+% \subsubsection{Unicode CTRL Chars}
% \begin{macrocode}
-\def\abj@num@i#1{%
- \ifcase#1\or\char"0627 \or\char"0628 \or\char"062C \char"200D\or\char"062F %
- \or\char"0647 \or\char"0648 \or\char"0632 \or\char"062D \or\char"0637 \fi
- \ifnum#1=\z@\abjad@zero\fi}
-\def\abj@num@ii#1{%
- \ifcase#1\or\char"064A \or\char"0643 \or\char"0644 \or\char"0645 \or\char"0646 %
- \or\char"0633 \or\char"0639 \or\char"0641 \or\char"0635 \fi
- \ifnum#1=\z@\fi\abj@num@i}
-\def\abj@num@iii#1{%
- \ifcase#1\or\char"0642 \or\char"0631 \or\char"0634 \or\char"062A \or\char"062B %
- \or\char"062E \or\char"0630 \or\char"0636 \or\char"0638 \fi
- \ifnum#1=\z@\fi\abj@num@ii}
-\def\abj@num@iv#1{%
- \ifcase#1\or\char"063A \fi
- \ifnum#1=\z@\fi\abj@num@iii}
-
-%maghribi س -> ص ص -> ض ش -> س ض -> ظ ظ -> غ غ -> ش
-\def\abj@maghribi@num@ii#1{%
- \ifcase#1\or\char"064A \or\char"0643 \or\char"0644 \or\char"0645 \or\char"0646 %
- \or\char"0635 \or\char"0639 \or\char"0641 \or\char"0636 \fi
- \ifnum#1=\z@\abjad@zero\fi\abj@num@i}
-\def\abj@maghribi@num@iii#1{%
- \ifcase#1\or\char"0642 \or\char"0631 \or\char"0633 \or\char"062A \or\char"062B %
- \or\char"062E \or\char"0630 \or\char"0638 \or\char"063A \fi
- \ifnum#1=\z@\fi\abj@maghribi@num@ii}
-\def\abj@maghribi@num@iv#1{%
- \ifcase#1\or\char"0634 \fi
- \ifnum#1=\z@\fi\abj@maghribi@num@iii}
-
-%Hebrew alphabetic numerals (primitive implementation -- the code in Babel is more complex):
-\def\heb@num@i#1{%
- \ifcase#1\or\char"05D0 \or\char"05D1 \or\char"05D2 \or\char"05D3 \or\char"05D4 %
- \or\char"05D5 \or\char"05D6 \or\char"05D7 \or\char"05D8 \fi
- \ifnum#1=\z@\hebnum@zero\fi}
-\def\heb@num@ii#1{%
- \ifcase#1\or\char"05D9 \or\char"05DB \or\char"05DC \or\char"05DE \or\char"05E0 %
- \or\char"05E1 \or\char"05E2 \or\char"05E4 \or\char"05E6 \fi
- \ifnum#1=\z@\fi\heb@num@i}
-\def\heb@num@iii#1{%
- \ifcase#1\or\char"05E7 \or\char"05E8 \or\char"05E9 \or\char"05EA \or\char"05DA %
- \or\char"05DD \or\char"05DF \or\char"05E3 \or\char"05E5 \fi
- \ifnum#1=\z@\fi\heb@num@ii}
-\def\heb@num@iv#1{%
- \ifcase#1\or\char"05D0\char"05F3 \or\char"05D1\char"05F3 \or\char"05D2\char"05F3 %
- \or\char"05D3\char"05F3 \or\char"05D4\char"05F3 \or\char"05D5\char"05F3 %
- \or\char"05D6\char"05F3 \or\char"05D7\char"05F3 \or\char"05D8\char"05F3 \fi
- \ifnum#1=\z@\fi\heb@num@iii}
-%TODO [optionally]
-% -insert gereshayim (\char"05F4) before last letter of a sequence of two letters or more
-% -insert geresh (\char"05F3) after letter if it is alone
-
-\def\abj@syr@num@i#1{%
- \ifcase#1\or\char"0710 \or\char"0712 \or\char"0713 \or\char"0715 %
- \or\char"0717 \or\char"0718 \or\char"0719 \or\char"071A \or\char"071B\fi
- \ifnum#1=\z@\syriac@zero\fi}
-\def\abj@syr@num@ii#1{%
- \ifcase#1\or\char"071D \or\char"071F \or\char"0720 \or\char"0721 \or\char"0722 %
- \or\char"0723 \or\char"0725 \or\char"0726 \or\char"0728 \fi
- \ifnum#1=\z@\fi\abj@syr@num@i}
-\def\abj@syr@num@iii#1{%
- \ifcase#1\or\char"0729 \or\char"072A \or\char"072B \or\char"072C \fi
- \ifnum#1=\z@\fi\abj@syr@num@ii}
+%% Make these Unicode chars active and define them so that they work
+%% in conformance to the Unicode bidi algorithm!
+%% \catcode"200E=\active
+%% \catcode"200F=\active
+%% \def‎{\setLR}
+%% \def‏{\setRL}
+%% 202A -> {\@ensure@LR\bgroup} ? or \LR
+%% 202B -> {\@ensure@RL\bgroup} ? or \RL
+%% 202C -> {\egroup} ? or \if@rl\@rlfalse\else\@rltrue\fi ?
+%% 202D -> {?} %LRO
+%% 202E -> {?} %RLO
% \end{macrocode}
%
-%\iffalse
+% \iffalse
%</package>
-%\fi
+% \fi
%
% ^^A\clearpage
% ^^A\PrintChanges
@@ -673,79 +881,6 @@ François Charette
%
% \Finale
%
-%\iffalse
-%<*dtx-style>
-% \begin{macrocode}
-\ProvidesPackage{dtx-style}
-\usepackage{fontspec,xltxtra}
-\usepackage{bidi}
-\usepackage{xspace,fancyvrb,paralist}
-\usepackage[xetex]{color}
-\definecolor{myblue}{rgb}{0.02,0.04,0.48}
-\definecolor{myred}{rgb}{0.65,0.04,0.07}
-\definecolor{darkgray}{gray}{0.3}
-\definecolor{lightgray}{gray}{0.6}
-\definecolor{IslamicGreen}{rgb}{0,.43,0}
-\usepackage[dvipdfm,
- bookmarks=true,
- colorlinks=true,
- linkcolor=myblue,
- urlcolor=myblue,
- citecolor=myblue,
- hyperindex=false,
- hyperfootnotes=false,
- pdftitle={The bidi package},
- pdfauthor={F Charette <firmicus@gmx.net>},
- pdfsubject={An interface for typesetting bidirectional texts with XeLaTeX},
- pdfkeywords={XeTeX, XeLaTeX, Right-to-Left, Bidi, Arabic, Hebrew}
- ]{hyperref}
-% NB some of this preamble is taken or adapted from fontspec-doc-style.sty
-\newcommand*\pkg[1]{\textsf{#1}}
-\def\eg{\textit{e.g.,}\xspace}
-\def\ie{\textit{i.e.,}\xspace}
-\def\ca{\textit{ca.}\@\xspace}
-\def\Eg{\textit{E.g.,}\xspace}
-\def\Ie{\textit{I.e.,}\xspace}
-\def\etc{\@ifnextchar.{\textit{etc}}{\textit{etc.}\@\xspace}}
-\def\arabxetex{Arab\XeTeX}
-
-\newlength{\oldparindent}
-\newcommand{\parindentoff}{\setlength{\oldparindent}{\parindent} \setlength{\parindent}{0pt}}
-\newcommand{\parindenton}{\setlength{\parindent}{\oldparindent}}
-
-%% LOGOS, tuned for Palatino (seems also OK with Junicode):
-\makeatletter
-\TeX@logo@spacing{-0.12em}{-0.12em}%
- {0.5ex}{-0.3em}{-0.12em}{-0.1em}
-\makeatother
-%% fontspec declarations:
-\setromanfont[Mapping=tex-text]{Junicode}%{FPL Neu}
-\defaultfontfeatures{Scale=MatchLowercase}
-\setmonofont{DejaVu Sans Mono}%{Inconsolata}%{Latin Modern Typewriter Proportional}%{Luxi Mono}%{Courier New}
-\setsansfont{DejaVu Sans}
-\newfontfamily\arabicfont[Script=Arabic,Scale=1.5]{Scheherazade}
-\newfontfamily\hebrewfont[Script=Hebrew]{Ezra SIL}
-\newfontfamily\syriacfont[Script=Syriac]{Estrangelo Talada}
-\newfontfamily\damase{MPH 2B Damase}
-\linespread{1.05}
-\frenchspacing
-\renewcommand{\footnoterule}{}
-\skip\footins=2\bigskipamount
-%% ToC
-\def\@dotsep{1000}
-\setcounter{tocdepth}{2}
-\setlength\columnseprule{0.4pt}
-\makeatletter
-\renewcommand\tableofcontents{%
- \begin{multicols}{2}[\section*{\contentsname}]%
- \small
- \@starttoc{toc}%
- \end{multicols}}
-\makeatother
-% \end{macrocode}
-%</dtx-style>
-%\fi
-%
%
% \typeout{*************************************************************}
% \typeout{*}
diff --git a/Master/texmf-dist/source/xelatex/bidi/bidi.ins b/Master/texmf-dist/source/xelatex/bidi/bidi.ins
new file mode 100644
index 00000000000..3d60a60cbd7
--- /dev/null
+++ b/Master/texmf-dist/source/xelatex/bidi/bidi.ins
@@ -0,0 +1,30 @@
+\input docstrip.tex
+\keepsilent
+\preamble
+
+ ____________________________
+
+ The bidi package
+ (C) 2007-2008 François Charette
+ License information appended
+
+\endpreamble
+\postamble
+
+Copyright (C) 2007-2008 by François Charette <firmicus at gmx dot net>
+
+Distributable 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 François Charette.
+
+This work consists of the file \jobname.dtx
+ and the derived files \jobname.sty and \jobname.pdf.
+
+\endpostamble
+\askforoverwritefalse
+\generate{\file{\jobname.sty}{\from{\jobname.dtx}{package}}}
+\nopreamble\nopostamble
+\endbatchfile