summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/xelatex/bidi/bidi-doc.tex
blob: f7d3bdb3034c3fb62eafce54af258b8b04394916 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
\documentclass{article}
\usepackage{fontspec}
\usepackage{calc}
\usepackage{pifont}
\usepackage{bbding}
\usepackage[left=2.5cm,right=2.5cm,top=2.5cm,bottom=2.5cm,nohead]{geometry}
\usepackage[colorlinks=true,linkcolor=mybrown,urlcolor=mygreen]{hyperref}
\usepackage{bidicode}
\usepackage{bidi}
\newcounter{local}
\renewcommand\theenumi{\protect\setcounter{local}%
  {201+\the\value{enumi}}\protect\ding{\value{local}}}
\renewcommand\labelenumi{\theenumi}
\renewcommand\labelitemi{\HandRight}
\renewcommand\labelitemii{\HandRightUp}
\renewcommand\labelitemiii{\HandCuffRight}
\renewcommand\labelitemiv{\HandPencilLeft}
\definecolor{mybrown}{rgb}{.6,0,0}
\definecolor{mygreen}{rgb}{0,.43,0}
\definecolor{Orange}{rgb}{1,.4,.2}
\title{The \textsf{bidi} Package\\ \href{http://bidi.berlios.de}{\texttt{http://bidi.berlios.de}}}
\author{Vafa Khalighi\\ \href{mailto:vafa@users.berlios.de}{\texttt{vafa@users.berlios.de}}}
\date{Version 1.0.4}
\begin{document}
\maketitle
\tableofcontents
\lstlistoflistings
\section{Introduction}
\textsf{bidi} provides a convenient interface for typesetting bidirectional texts with \XeLaTeX. The package includes adaptations for use with many other commonly-used packages.

The \textsf{bidi} package at the moment only works with \XeTeX\ engine, but we will support Lua\TeX\ engine as well in our next release.
\subsection{\textsf{bidi} Info On The Terminal and In The Log File}
If you use \textsf{bidi} package to write any input \TeX\ document, and then run \texttt{xelatex} on your document, \textsf{bidi} writes some information about itself to the terminal and to the log file. The information is something like:
\begin{center}
\colorbox{lightgray}{\begin{minipage}{0.9\textwidth}\ttfamily
bidi package (Support for bidirectional typesetting with XeLaTeX)\\
Description: A convenient interface for typesetting bidirectional\\
texts with XeLaTeX.  The package includes adaptations for use\\
with many other commonly-used packages.\\
Copyright © 2009-2010 Vafa Khalighi\\
\bidiversion, <\bidirevision>, \bididate\\
License: LaTeX Project Public License, version 1.3c or higher (your choice)\\
Home: http://bidi.berlios.de\\
Location on CTAN: /macros/xetex/latex/bidi
\end{minipage}}
\end{center}
\subsection{PDF Creator of \textsf{bidi} Documents}
If you use \textsf{bidi} package to produce a PDF file, the \textsf{bidi} package writes itself to the Application field of the PDF file and hyperref would have no effect since this is done at the beggining of the document. Thus if you produce a PDF file using the \textsf{bidi} package and then you look at the application field in the properties of the PDF file, you will see this:

\begin{center}
\colorbox{yellow}{\begin{minipage}{0.6\textwidth}%
Bidi \bidiversion\ <\bidirevision> Copyright © 2009-2010 Vafa Khalighi
\end{minipage}}
\end{center}
Check out the properties of this document to verify this.
\section{Basics}
\subsection{Loading The Package}
You can load the package in the ordinary way;
\begin{BDef}
\Lcs{usepackage}\OptArgs\Largb{bidi}
\end{BDef}
Where \texttt{options} of the package are explained later in \autoref{options}.

When loading the package, it is important to know that:
\begin{enumerate}
\item \textsf{bidi} should be the last package that you loade, because otherwise you are certainly going to overwrite \textsf{bidi}'s definitions and consequently, you will not get the expected output.
\item In fact, \textsf{bidi} makes sure that some specific packages are loaded before \textsf{bidi}; these are those packages that \textsf{bidi} modifies them for bidirectional typesetting. 

If you load \textsf{bidi} before any of these packages, then you will get an error saying that you should load \textsf{bidi} as your last package.

For instance, consider the following minimal example:
\begin{lstlisting}[caption={Wrong Order Of Loading \textsf{bidi} Package},captionpos=t]
\documentclass{minimal}
\usepackage{bidi}
\usepackage{graphicx}
\begin{document}
This is just a test.
\end{document}
\end{lstlisting}
Where \textsf{graphicx} is loaded after \textsf{bidi}. If you run \texttt{xelatex} on this document, you will get an error which looks like this:
\begin{lstlisting}[numbers=none]
! Package bidi Error: Oops! you have loaded package graphicx after bidi package
. Please load package graphicx before bidi package, and then try to run xelatex
 on your document again.

See the bidi package documentation for explanation.
Type  H <return>  for immediate help.
 ...                                              
                                                  
l.4 \begin{document}
                    
? 

\end{lstlisting}
\end{enumerate}
\subsection{Commands for Version, Subversion Revision and Date of The Package}
\begin{BDef}
\Lcs{bidiversion}\quad\Lcs{bidirevision}\quad\Lcs{bididate}
\end{BDef}
\begin{itemize}
\item \Lcs{bidiversion} gives the current version of the package.
\item \Lcs{bidirevision} gives the current subversion revision of the package.
\item \Lcs{bididate} gives the current date of the package.
\end{itemize}
\begin{lstlisting}[morekeywords={bidiversion,bidirevision,bididate},captionpos=t,caption={Version, SVN Revision and Date Commands}]
\documentclass{article}
\usepackage{bidi}
\begin{document}
This is typeset by \textsf{bidi} package, \bidiversion, \bidirevision, \bididate.
\end{document}
\end{lstlisting}
\subsection{Options of The Package\label{options}}
There are two options, namely \texttt{RTLdocument} and \texttt{rldocument}, which are essentialy equivalent. If you pass any of these options to the package, you will be typesetting a document containing mainly RTL texts with some LTR texts. These options activate \Lcs{setRTL} (explained in \autoref{PSC}), \Lcs{RTLdblcol} (explained in \autoref{twocolumn}) and \Lcs{autofootnoterule} (explained in \autoref{footnoterule}).

It is clear that if you do not pass any of these options to the package, you will be typesetting a document containing mainly LTR texts with some RTL texts.
\subsection{Paragraph Switching Commands\label{PSC}}
\begin{BDef}
\Lcs{setLTR}\quad\Lcs{setLR}\quad\Lcs{unsetRL}\quad\Lcs{unsetRTL}\\
\Lcs{setRTL}\quad\Lcs{setRL}\quad\Lcs{unsetLTR}
\end{BDef}
\begin{itemize}
\item With any of the commands in the first row, you can typeset LTR paragraphs.
\item With any of the commands in the second row, you can typeset RTL paragraphs.
\end{itemize}
\begin{lstlisting}[morekeywords={setRTL,setLTR},captionpos=t,caption={Paragraph Direction Switching}]
\documentclass{article}
\usepackage{bidi}
\begin{document}
\setRTL%
Anyone who reads Old and Middle English literary texts will be familiar with the mid-brown volumes of the EETS, with the symbol of Alfred's jewel embossed on the front cover.

\setLTR% Notice the blank line before \setLTR
Anyone who reads Old and Middle English literary texts will be familiar with the mid-brown volumes of the EETS, with the symbol of Alfred's jewel embossed on the front cover.
\end{document}
\end{lstlisting}
\subsection{Pargraph Switching Environments}
\begin{BDef}
\LBEG{LTR}\quad\Larga{text}\quad\LEND{LTR}\\
\LBEG{RTL}\quad\Larga{text}\quad\LEND{RTL}
\end{BDef}
\begin{itemize}
\item With \texttt{LTR} environment, you can typeset LTR paragraphs.
\item With \texttt{RTL} environment, you can typeset RTL paragraphs.
\end{itemize}
\begin{lstlisting}[captionpos=t,caption={\texttt{RTL} and \texttt{LTR} Environments}]
\documentclass{article}
\usepackage{bidi}
\begin{document}
\begin{RTL}
Anyone who reads Old and Middle English literary texts will be familiar with the mid-brown volumes of the EETS, with the symbol of Alfred's jewel embossed on the front cover.
\begin{LTR}
Anyone who reads Old and Middle English literary texts will be familiar with the mid-brown volumes of the EETS, with the symbol of Alfred's jewel embossed on the front cover.
\end{LTR}
And we are still typesetting RTL.
\end{RTL}
\end{document}
\end{lstlisting}
\subsection{Typesetting Short LTR and RTL Texts}
\begin{BDef}
\Lcs{LRE}\Largb{\Larga{text}}\quad\Lcs{LR}\Largb{\Larga{text}}\\
\Lcs{RLE}\Largb{\Larga{text}}\quad\Lcs{RL}\Largb{\Larga{text}}
\end{BDef}
\begin{itemize}
\item With any of the commands in the first row, you can typeset short LTR text inside RTL paragraphs.
\item With any of the commands in the second row, you can typeset short RTL text inside LTR paragraphs.
\end{itemize}
\begin{lstlisting}[morekeywords={LRE,RLE},captionpos=t,caption={Typesetting Short LTR and RTL texts}]
\begin{document}
\begin{RTL}
Anyone who reads Old and Middle English \LRE{Short LTR text} literary texts will be familiar with the mid-brown volumes of the EETS, with the symbol of Alfred's jewel embossed on the front cover.
\begin{LTR}
Anyone who reads Old and Middle English \RLE{Short RTL text} literary texts will be familiar with the mid-brown volumes of the EETS, with the symbol of Alfred's jewel embossed on the front cover.
\end{LTR}
\end{RTL}
\end{document}
\end{lstlisting}
\subsection{Footnotes}
\begin{BDef}
\Lcs{footnote}\OptArg{num}\Largb{\Larga{text}}\quad\Lcs{LTRfootnote}\OptArg{num}\Largb{\Larga{text}}\quad\Lcs{RTLfootnote}\OptArg{num}\Largb{\Larga{text}}\\
\Lcs{setfootnoteRL}\quad\Lcs{setfootnoteLR}\quad\Lcs{unsetfootnoteRL}\\
\Lcs{thanks}\Largb{\Larga{text}}\quad\Lcs{LTRthanks}\Largb{\Larga{text}}\quad\Lcs{RTLthanks}\Largb{\Larga{text}}
\end{BDef}
\begin{itemize}
\item \Lcs{footnote} in RTL mode produces an RTL footnote while in LTR mode it produces an LTR footnote.
\item \Lcs{LTRfootnote} will always produce an LTR footnote, independent on the current mode.
\item \Lcs{RTLfootnote} will always produce an RTL footnote, independent on the current mode.
\item Specifying a \Lcs{setfootnoteRL} command anywhere will make \Lcs{footnote} produce an RTL footnote.
\item Specifying either a \Lcs{setfootnoteLR} or an \Lcs{unsetfootnoteRL} command anywhere will make \Lcs{footnote} produce an LTR footnote.
\item \Lcs{thanks} (to be used only inside \Lcs{author} or \Lcs{title} argument) in RTL mode produces an RTL footnote while in LTR mode it produces an LTR footnote.
\item \Lcs{LTRthanks} (to be used only inside \Lcs{author} or \Lcs{title} argument) will always produce an LTR footnote, independent on the current mode.
\item \Lcs{RTLthanks} (to be used only inside \Lcs{author} or \Lcs{title} argument) will always produce an RTL footnote, independent on the current mode.
\end{itemize}
\begin{BDef}
\Lcs{footnotetext}\OptArg{num}\Largb{\Larga{text}}\quad\Lcs{LTRfootnotetext}\OptArg{num}\Largb{\Larga{text}}\quad\Lcs{RTLfootnotetext}\OptArg{num}\Largb{\Larga{text}}
\end{BDef}
\begin{itemize}
\item \Lcs{footnotetext} used in conjunction with \Lcs{footnotemark},  in RTL mode produces an RTL footnote while in LTR mode it produces an LTR footnote.
\item \Lcs{LTRfootnotetext} used in conjunction with \Lcs{footnotemark}, will always produce an LTR footnote, independent on the current mode.
\item \Lcs{RTLfootnotetext} used in conjunction with \Lcs{footnotemark}, will always produce an RTL footnote, independent on the current mode.
\end{itemize}
\subsubsection{Footnote Rule\label{footnoterule}}
The behavior of footnote rules can also be controlled.
\begin{BDef}
\Lcs{autofootnoterule}\quad\Lcs{rightfootnoterule}\quad\Lcs{leftfootnoterule}\\
\Lcs{LRfootnoterule}\quad\Lcs{textwidthfootnoterule}
\end{BDef}
\begin{itemize}
\item \Lcs{autofootnoterule} will draw the footnote rule right or left aligned based on the direction of the first footnote following the rule (i.e., put in the current page).
\item \Lcs{rightfootnoterule} will put footnote rule on the right-hand side.
\item \Lcs{leftfootnoterule} or \Lcs{LRfootnoterule} will put footnote rule on the left-hand side.
\item \Lcs{textwidthfootnoterule} will draw the footnote rule with a width equal to \Lcs{textwidth}.
\end{itemize}
\subsection{Two Column Typesetting\label{twocolumn}}
\begin{BDef}
\Lcs{RTLdblcol}\quad\Lcs{LTRdblcol}
\end{BDef}
If you pass the \texttt{twocolumn} option to the class file and if the main direction of the document is RTL, then you get RTL two column and if the main direction of the document is LTR, then you get LTR two column. In addition, \Lcs{RTLdblcol} allows you to have RTL two column typesetting and \Lcs{LTRdblcol} allows you to have LTR two column typesetting as the options of the class file.
\subsection{RTL cases}
\begin{BDef}
\Lcs{rcases}\Largb{\Lcs{text}\Largb{\Larga{brach1}}\Lcs{cr}\Lcs{text}\Largb{\Larga{brach2}}\Lcs{cr}%
\Lcs{text}\Largb{\Larga{brach3}}\ldots}\Lcs{text}\Largb{\Larga{main}}
\end{BDef}
\Lcs{rcases} is defined in bidi for typesetting RTL cases. \Lcs{text} is defined in \textsf{amsmath} package, so this means that you need to load \textsf{amsmath} package too.
\begin{lstlisting}[morekeywords={setRTL,rcases,text},captionpos=t,caption={RTL Cases}]
\documentclass{article}
\usepackage{amsmath}
\usepackage{bidi}
\begin{document}
\setRTL
\[\rcases{\text{men}\cr\text{women}}
\text{Humans Beings}
\]
\end{document}
\end{lstlisting}
\subsection{Typesetting Logos}
\begin{BDef}
\Lcs{XeTeX}\quad\Lcs{XeLaTeX}
\end{BDef}
\textsf{bidi} defines \XeTeX\ and \XeLaTeX\ logos and in addition, it makes sure that logos, \TeX, \LaTeX, \LaTeXe\ are typeset LTR.
\subsection{Separation Mark}
\begin{BDef}
\Lcs{SepMark}\Largb{\Larga{mark}}\quad\Lcs{@SepMark}
\end{BDef}
Generally in Standard \LaTeX, dot is used for separation between section numbers, equation numbers any anything else which needs to be seperated. You can use \Lcs{SepMark} to use any other mark as the seperation mark instead a dot.
\begin{lstlisting}[morekeywords={SepMark,subsection,subsubsection},captionpos=t,caption={Using A Dash Instead A Dot For Seperation Marks}]
\documentclass{article}
\usepackage{bidi}
\SepMark{-}
\begin{document}
\section{First}
\subsection{Second}
\subsubsection{Third}
\end{document}
\end{lstlisting}

If you decide to change the numbering of chapters, sections, subsections, equations, figures and \ldots, you should either load \textsf{amsmath} package and use \Lcs{numberwithin} macro to do this or do the ordinary way, but instead dot write \Lcs{@SepMark}. Using dot instead \Lcs{@SepMark} will certainly make trouble.

\begin{lstlisting}[morekeywords={SepMark,theequation,thesection},captionpos=t,caption={Redefining \Lcs{theequation}}]
\documentclass{article}
\usepackage{bidi}
\SepMark{-}
\makeatletter
\renewcommand\theequation{\thesection\@SepMark\@arabic\c@equation}
\makeatother
\begin{document}
\section{First}
\begin{equation}
x^2+y^2=z^2
\end{equation}
\end{document}
\end{lstlisting}
\subsection{\Lcs{raggedright}, \Lcs{raggedleft} commands, \texttt{flushleft} and \texttt{flushright} Environments}
\Lcs{raggedright} command and \texttt{flushleft} environment put the text on the left hand side and \Lcs{raggedleft} command and \texttt{flushright} environment put the text on the right hand side, independent on the current mode.
\subsection{Typesetting of Headers and Footers}
If the main direction of the document is RTL, then headers and footers are typeset RTL and if the main direction of the document is LTR, then headers and footers are typeset LTR.

Please note that if you would like to define any page style for headers and footers such as \Lcs{pagestyle}\Largb{headings}, you should do it after loading \textsf{bidi} package because \textsf{bidi} for proper direction typesetting of headers and footers redefines page styles for headers and footers and so if you change your headers and footers before loading \textsf{bidi} package, your definitions for headers and footers would have no effect at all.
\subsection{Tabular Typesetting}
In RTL mode, tabular are typeset RTL and in LTR mode, tabular are typeset LTR. 
\subsection{Equation Numbers}
For \texttt{reqno}, equation numbers are on the right hand side and for \texttt{leqno}, equation numbers are on the left hand side, independent on the current mode.
\section{Support For Various Packages and Classes}
The \textsf{bidi} package supports \textsf{amsmath}, \textsf{amsthm}, \textsf{array}, \textsf{arydshln}, \textsf{breqn}, \textsf{color}, \textsf{colortbl}, \textsf{draftwatermark}, \textsf{fancyhdr}, \textsf{flowfram}, \textsf{graphicx}, \textsf{hyperref}, \textsf{listings}, \textsf{minitoc}, \textsf{multicol}, \textsf{pdfpages}, \textsf{pstricks}, \textsf{ragged2e}, \textsf{stabular}, \textsf{supertabular}, \textsf{xtab}, \textsf{tabls}, \textsf{tabulary}, \textsf{PGF \&\ TIKZ}, \textsf{tocbibind}, \textsf{tocloft}, \textsf{tocstyle}, \textsf{wrapfig}, \textsf{xcolor}, \textsf{xltxtra} packages, \textsf{amsart}, \textsf{amsbook}, \textsf{standrad article}, \textsf{standard book}, \textsf{bookest}, \textsf{extbook}, \textsf{standard letter}, \textsf{memoir}, \textsf{rapport3}, \textsf{refrep}, \textsf{standard report}, \textsf{scartcl}, \textsf{scrbook}, \textsf{scrreprt} classes and any other packages and classes that relies on these packages and classes. This means, you can use all these packages and classes in addition to other packages and classes that rely on these packages and classes and use their functionality fully for your bidirectional documents. 

We now give some details that you should know about the supported packages or classes.
\subsection{Color}
You can use \textsf{color} and \textsf{xcolor} packages to typeset texts in colours and colour boxes produced by \Lcs{colorbox} and \Lcs{fcolorbox} commands. Please note that your Coloured text should not span more than a line, if your text  spans more than a line, you will be in trouble which means your whole document, page or paragraph may be coloured. If your texts spans more than a line, then you should use \textsf{xecolour} package.

Also if you are going to use \Lcs{color} command to colour the text at the beginning of a paragraph, then you should have \Lcs{leavevmode} before \Lcs{color} command.

For having coloured tabular, you can use \textsf{colortbl} package.
\subsection{Hyperref}
The \textsf{hyperref} package works fine with bidirectional documents if and only if, your link will not span more than a line. If your link spans more than a line, then your whole document, or page or paragraph may be linked.

\subsection{\textsf{fancyhdr} Package}
When using \textsf{fancyhdr} package, any commands of \textsf{fancyhdr} package such as \Lcs{pagestyle}\Largb{fancy}, should be done after loading \textsf{bidi} package.
\subsection{\textsf{flowfram} Package}
You can use \textsf{flowfram} package for your bidirectional documents. Please note that \textsf{flowfram} package provides support for bidirectional column typesetting, for details, see its manual.
\subsection{Multicolumn Typesetting}
In the previous versions of \textsf{bidi} package, it was recommended that you need to use \textsf{fmultico} package instead the original \textsf{multicol} package for RTL multicolumn typesetting. This is not the case any more and you should not use buggy \textsf{fmultico} package any more. Simply load the original \textsf{multicol} package before loading \textsf{bidi}. \textsf{bidi} now supports \textsf{multicol} package and you can typeset bidirectional multi columns.

In addition, you also can use \textsf{vwcol} package for variable width bidirectional column typesetting.
\section{Extra \textsf{bidi} Packages and Classes}
\subsection{The Issue of Footnote}
In standard \LaTeX\, you can not use footnotes inside \Lcs{chapter}, \Lcs{part}, \Lcs{section}, \Lcs{subsection}, \Lcs{subsection} and any other section-like commands, \Lcs{caption} and tabular environment.

\textsf{bidi} package provides \textsf{bidiftnxtra} package that solves the issue of footnote in standard \LaTeX. \textsf{bidiftnxtra} package should be loaded after \textsf{bidi} package.
\subsection{Typesetting Poems}
The \textsf{bidi} package provides \textsf{bidipoem} package for typesetting Persian poems. It provides four environments, \texttt{traditionalpoem}, \texttt{modernpoem} and starred version of these. In the starred version of these environments you do not need to type {\ttfamily\symbol{92}\symbol{92}} and that is the only difference with the normal version of the environments. The \texttt{traditionalpoem} environment and its starred version are also useful for typesetting Classic Arabic poetry, in fact this package may also be useful for other RTL languages.

When using \textsf{bidipoem} package, at least you need to run \texttt{xelatex} twice on your document. In fact, if you run \texttt{xelatex} just once on your document, you get a message saying ``Unjustified poem.  Rerun \texttt{XeLaTeX} to get poem right''.

When you typeset your poems, you might get underfull \Lcs{hbox} messages. This is absolutely normal and if you want to get rid of these underfull \Lcs{hbox} messages, then you would need to use Kashida.

If you need to change the default distance between two verses, you can do just that by:
\begin{BDef}
\Lcs{renewcommand}\Lcs{poemcolsepskip}\Largb{\Larga{length}}
\end{BDef}
\begin{BDef}
\LBEG{traditionalpoem}\\
\Larga{verse1}\texttt{\&}\Larga{verse2}{\ttfamily\symbol{92}\symbol{92}}\\
\Larga{verse3}\texttt{\&}\Larga{verse4}{\ttfamily\symbol{92}\symbol{92}}\\
\ldots\\
\LEND{traditionalpoem}
\end{BDef}
\begin{BDef}
\LBEG{traditionalpoem*}\\
\Larga{verse1}\texttt{\&}\Larga{verse2}\\
\Larga{verse3}\texttt{\&}\Larga{verse4}\\
\ldots\\
\LEND{traditionalpoem*}
\end{BDef}
\subsection{Print Two Pages On A Single Page}
\textsf{bidi} package provides \textsf{bidi2in1} package  for printing two pages on a single (landscape) A4 page. Page numbers appear on the included pages, and not on the landscape 'container' page.

\subsection{Producing Presentations}
At the moment, there is only one class that you can prepare your presentations
with.

\subsubsection{\textsf{bidipresentation} Class}
\textsf{bidipresentation} is a simple class for presentations to be shown on
screen or beamer. It is derived from \LaTeX's article class. The “virtual paper
size” of documents produced by this class: width=128mm, height=96mm.
\textsf{bidipresentation} requires that the \textsf{fancyhdr} and \textsf{geometry} packages
are available on the system. Enhancements to the \textsf{bidipresentation}
class are easily made available by other packages, these include slides with
a background from a bitmap (\textsf{eso-pic} package).

\paragraph{Usage:}
The class is used with
\begin{BDef}
\Lcs{documentclass}\OptArgs\Largb{bidipresentation}
\end{BDef}
        Options of the article class are also available to \textsf{bidipresentation}, e. g.
 10pt, 11pt, 12pt for selection of font size. However, not all options of the
        article class will be appropriate for a presentation class, e. g. twocolumn.

A simple example document:
\begin{lstlisting}[caption={\textsf{bidipresentation} Sample},morekeywords={AddToShipoutPicture,includegraphics,distance}]
 \documentclass[12pt]{bidipresentation}
 \usepackage{eso-pic}
 \usepackage[RTLdocument]{bidi}
 \pagestyle{pres}
 \AddToShipoutPicture{
 \includegraphics{gradient2.png}
}
 \begin{document}
 \begin{titlepage}
\centering
   \distance{1}
   {
\Huge \bfseries Title of the presentation \par
}
 \vspace{1.3ex} \large
 Author\\[2ex]Institution
 \distance{2}
 \end{titlepage}
 \begin{plainslide}[Title of Page]
The first page
\end{plainslide}
\begin{rawslide}
The second page
 \end{rawslide}
\end{document}
\end{lstlisting}
The title page can be created within the \texttt{titlepage} environment, the \Lcs{maketitle}
command is not available. Slides may be created with the \texttt{plainslide} environment, you may add the title of the slide with the optional parameter. The
contents of the slide are centered vertically. Another environment generating a slide is \texttt{rawslide}: slides are written without title, contents are not
vertically centered.

The \Lcs{distance}\Largb{\Larga{number}} command allows to introduce vertical space into
slides constructed with the \texttt{rawslide} and \texttt{titlepage} environments. You should
use pairs of \Lcs{distance}\Largb{} commands with numbers indicating the relative
height of empty space, see the titlepage in the example above.

Pictures can be included with the \Lcs{includegraphics} command of the \textsf{graphicx} package. Please be aware that the dimensions of the pages are 128mm $\times$
96mm and therefore included graphics are scaled appropriately.

\paragraph{Enhancements to \textsf{bidipresentation}:}

\subparagraph{Fill background of a presentation with bitmaps:}
\textsf{eso-pic} package allows you to paint the background with a picture:
\begin{lstlisting}[morekeywords={AddToShipoutPicture,includegraphics}]
\usepackage{eso-pic}
...
\AddToShipoutPicture{
\includegraphics{gradient2.png}
}
\end{lstlisting}
\Lcs{AddToShipoutPicture}\Largb{} puts the picture on every page, \Lcs{AddToShipoutPicture*}\Largb{}
puts it on to the current page, \Lcs{ClearShipoutPicture} clears the background
beginning with the current page. Details of \textsf{eso-pic}’s commands can be
found in its own documentation.



\section{Some Useful Internal Macros}
There are some useful internal macros that might be helpful for you. This section, explains all these useful internals.
\subsection{RTL Conditional}
\begin{BDef}
\Lcs{if@RTL}
\end{BDef}
\Lcs{if@RTL} conditional is true inside RTL mode and it is false in LTR mode. 
\subsection{Main RTL Conditional}
\begin{BDef}
\Lcs{if@RTLmain}
\end{BDef}
If the main direction of the document is RTL, \Lcs{if@RTLmain} is true and if the main direction of the document is LTR, \Lcs{if@RTLmain} is false.
\subsection{Latin Conditional}
\begin{BDef}
\Lcs{if@Latin}
\end{BDef}
\Lcs{if@Latin} inside any environment that uses Latin font is true and inside any environment that uses RTL font is false.
\subsection{Tags Internal Macro}
\begin{BDef}
\Lcs{@iftagsloaded}\Largb{\Larga{tags name}}\Largb{\Larga{do thing(s) if the tag is loaded}}\Largb{\Larga{do thing(s) if the tag is not loaded}}
\end{BDef}
As you can see, the syntax of \Lcs{@iftagsloaded} is exactly the same as the syntax of \Lcs{@ifpackageloaded} and \Lcs{@ifclassloaded}. By tags, we mean things like \texttt{leqno} or \texttt{reqno}. Please note that in the argument \Larga{tags name}, the extension \texttt{clo} should not be given.
\subsection{Definition File Loaded Internal Macro}
\begin{BDef}
\Lcs{@ifdefinitionfileloaded}\Largb{\Larga{definition file name}}\Largb{\Larga{do thing(s) if the definition file is loaded}}\\
\Largb{\Larga{do thing(s) if the definition file  is not loaded}}
\end{BDef}
As you can see, the syntax of \Lcs{@ifdefinitionfileloaded} is exactly the same as the syntax of \Lcs{@ifpackageloaded} and \Lcs{@ifclassloaded}. By definition file, we mean things like \texttt{hyperref-bidi.def} or \texttt{wrapfig-bidi.def}. Please note that in the argument \Larga{definition file name}, the extension \texttt{def} should not be given.
\subsection{Tabular Conditional}
\begin{BDef}
\Lcs{if@RTLtab}
\end{BDef}
If the tabular is typeset RTL, \Lcs{if@RTLtab} is true and if the tabular is typeset LTR, \Lcs{if@RTLtab} is false.
\subsection{Footnote Conditional}
\begin{BDef}
\Lcs{if@RTL@footnote}
\end{BDef}
When footnotes are typeset RTL, \Lcs{if@RTL@footnote} is true and when footnotes are typeset LTR, \Lcs{if@RTL@footnote} is false.
\subsection{Direction Ensuring Macros}
\begin{BDef}
\Lcs{@ensure@RTL}\Largb{\Larga{text}}\quad\Lcs{@ensure@RL}\Largb{\Larga{text}}\quad\Lcs{@ensure@LTR}\Largb{\Larga{text}}\quad\Lcs{@ensure@LR}\Largb{\Larga{text}}\\
\Lcs{@ensure@dir}\Largb{\Larga{text}}\quad\Lcs{@ensure@maindir}\Largb{\Larga{text}}
\end{BDef}
\begin{itemize}
\item  \Lcs{@ensure@RTL} and \Lcs{@ensure@RL} internals make sure that \Larga{text} is always typeset RTL, independent on the current mode.
\item  \Lcs{@ensure@LTR} and \Lcs{@ensure@LR} internals make sure that \Larga{text} is always typeset LTR, independent on the current mode.
\item \Lcs{@ensure@dir} and \Lcs{@ensure@maindir} if used in RTL mode, they put \Larga{text} inside \Lcs{RLE} and if used in LTR mode, they put the text as it is.
\end{itemize}
\subsection{Reset Direction Macro}
\begin{BDef}
\Lcs{save@dir}\quad\Lcs{saved@@dir}\quad\Lcs{reset@dir}
\end{BDef}
\begin{itemize}
\item \Lcs{save@dir}, if the direction of typesetting is RTL, defines \Lcs{saved@@dir} to be RTL and if the direction of typesetting is LTR, defines \Lcs{saved@@dir} to be LTR.
\item \Lcs{reset@dir}, if \Lcs{saved@@dir} is defined as RTL, inserts \Lcs{setRTL} otherwise, if  \Lcs{saved@@dir} is defined as LTR, inserts \Lcs{setLTR}, otherwise does nothing.
\end{itemize}
\end{document}