\documentclass{ltxdoc} \input{bidi-doc-preamble.ltx} \begin{document} \section{Some Useful Internal Macros and Programming Tips} There are some useful internal macros and programming tips that might be helpful for you. This section, explains all these useful internals and programming tips. \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{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}}\\ \Lcs{@ensure@LR}\Largb{\Larga{text}}\quad \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}