diff options
Diffstat (limited to 'Master/texmf-dist/tex/lualatex/simurgh/simurgh-ltx.sty')
-rw-r--r-- | Master/texmf-dist/tex/lualatex/simurgh/simurgh-ltx.sty | 692 |
1 files changed, 692 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/lualatex/simurgh/simurgh-ltx.sty b/Master/texmf-dist/tex/lualatex/simurgh/simurgh-ltx.sty new file mode 100644 index 00000000000..0679d1b5935 --- /dev/null +++ b/Master/texmf-dist/tex/lualatex/simurgh/simurgh-ltx.sty @@ -0,0 +1,692 @@ +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{simurgh-ltx}[2013/12/01 v0.01a changes to `latex.ltx'] +\newif\if@RTLtab +\newif\if@RTLmarginpar +\newif\if@LTRmarginpar +\newif\if@LTRbibitems +\newif\if@RTLbibitems + +\def\SepMark#1{\gdef\@SepMark{\if@RTL\fi#1\if@RTL\fi}} +\SepMark{.} + +\def\setRTLbibitems{\@RTLbibitemstrue\@LTRbibitemsfalse} +\def\setLTRbibitems{\@LTRbibitemstrue\@RTLbibitemsfalse} +\def\setdefaultbibitems{\@RTLbibitemsfalse\@LTRbibitemsfalse} + +\def\setRTLmarginpar{\@RTLmarginpartrue\@LTRmarginparfalse} +\def\setLTRmarginpar{\@LTRmarginpartrue\@RTLmarginparfalse} +\def\setdefaultmarginpar{\@RTLmarginparfalse\@LTRmarginparfalse} + +\let\simurgh@TeX\TeX +\def\TeX{\ensurelatintext{\simurgh@TeX}} +\let\simurgh@LaTeX\LaTeX +\def\LaTeX{\ensurelatintext{\simurgh@LaTeX}} +\let\simurgh@LaTeXe\LaTeXe +\def\LaTeXe{\ensurelatintext{\simurgh@LaTeXe}} + +\def\RTLcases#1{\left\}\vcenter{\normalbaselines\m@th + \ialign{$##\hfil$&\quad{##}\hfil\crcr#1\crcr}}\,\right\.} + +\def\@thmcountersep{\@SepMark} + +\def\list#1#2{% + \ifnum \@listdepth >5\relax + \@toodeep + \else + \global\advance\@listdepth\@ne + \fi + \rightmargin\z@ + \listparindent\z@ + \itemindent\z@ + \csname @list\romannumeral\the\@listdepth\endcsname + \def\@itemlabel{#1}% + \let\makelabel\@mklab + \@nmbrlistfalse + #2\relax + \@trivlist + \parskip\parsep + \parindent\listparindent + \advance\linewidth -\rightmargin + \advance\linewidth -\leftmargin + \if@RTL% + \advance\@totalleftmargin \leftmargin% + \else% + \advance\@totalleftmargin \rightmargin% + \fi% + \parshape \@ne \@totalleftmargin \linewidth + \ignorespaces} + + + +\def\@item[#1]{% + \if@noparitem + \@donoparitem + \else + \if@inlabel + \indent \par + \fi + \ifhmode + \unskip\unskip \par + \fi + \if@newlist + \if@nobreak + \@nbitem + \else + \addpenalty\@beginparpenalty + \addvspace\@topsep + \addvspace{-\parskip}% + \fi + \else + \addpenalty\@itempenalty + \addvspace\itemsep + \fi + \global\@inlabeltrue + \fi + \everypar{% + \@minipagefalse + \global\@newlistfalse + \if@inlabel + \global\@inlabelfalse + {\setbox\z@\lastbox + \ifvoid\z@ + \kern-\itemindent + \fi}% + \box\@labels + \penalty\z@ + \fi + \if@nobreak + \@nobreakfalse + \clubpenalty \@M + \else + \clubpenalty \@clubpenalty + \everypar{}% + \fi}% + \if@noitemarg + \@noitemargfalse + \if@nmbrlist + \refstepcounter\@listctr + \fi + \fi + \ensuresboxdir\@tempboxa{\makelabel{#1}}% + \if@RTL% + \global\setbox\@labels\hbox dir TRT{% + \unhbox\@labels + \hskip \itemindent + \hskip -\labelwidth + \hskip -\labelsep + \ifdim \wd\@tempboxa >\labelwidth + \box\@tempboxa + \else + \hbox to\labelwidth {\unhbox\@tempboxa}% + \fi + \hskip \labelsep}% + \else% + \global\setbox\@labels\hbox dir TLT{% + \unhbox\@labels + \hskip \itemindent + \hskip -\labelwidth + \hskip -\labelsep + \ifdim \wd\@tempboxa >\labelwidth + \box\@tempboxa + \else + \hbox to\labelwidth {\unhbox\@tempboxa}% + \fi + \hskip \labelsep}% + \fi% + \ignorespaces} + + +\long\def\@iiiparbox#1#2[#3]#4#5{% + \leavevmode + \@pboxswfalse + \setlength\@tempdima{#4}% + \@begin@tempboxa\vbox{\hsize\@tempdima\@parboxrestore#5\@@par}% + \ifx\relax#2\else + \setlength\@tempdimb{#2}% + \edef\@parboxto{to\the\@tempdimb}% + \fi + \if#1b\vbox + \else\if #1t\vtop + \else\ifmmode\vcenter + \else\@pboxswtrue \if@RTL\simurgh@mathdir TRT\fi$\vcenter + \fi\fi\fi + \@parboxto{\let\hss\vss\let\unhbox\unvbox + \csname bm@#3\endcsname}% + \if@pboxsw \m@th$\fi + \@end@tempboxa} + +\newenvironment{LTRitems} + {\par\@RTLfalse% + \simurgh@pardir TLT% + \simurgh@textdir TLT% + \parshape \@ne \dimexpr(\@totalleftmargin-\leftmargin) \linewidth% + \ignorespaces}{\vskip\z@} + +\newenvironment{RTLitems} + {\par\@RTLtrue% + \simurgh@pardir TRT% + \simurgh@textdir TRT% + \parshape \@ne \dimexpr(\@totalleftmargin+\leftmargin) \linewidth% + \ignorespaces}{\vskip\z@} + + +\newenvironment{latinitems}{\begin{LTRitems}\reset@latinfont}{\end{LTRitems}} +\newenvironment{parsiitems}{\begin{RTLitems}\reset@parsifont}{\end{RTLitems}} + +\let\simurgh@raggedleft\raggedleft +\let\simurgh@raggedright\raggedright +\def\raggedleft{% + \if@RTL% + \simurgh@raggedright% + \else% + \simurgh@raggedleft% + \fi} +\def\raggedright{% + \if@RTL% + \simurgh@raggedleft% + \else% + \simurgh@raggedright% + \fi} + + +\def\leftline#1{% + \if@RTL% + \@@line{\hss#1}% + \else% + \ifvmode% + \@@line{\hss#1}% + \else% + \@@line{#1\hss}% + \fi% +\fi% +} + +\def\rightline#1{% + \if@RTL% + \@@line{#1\hss}% + \else% + \ifvmode% + \@@line{#1\hss}% + \else% + \@@line{\hss#1}% + \fi% +\fi% +} + +% here we redefine \rlap and \llap so that right means `at the end of line' and left means `at the beggining of the line' +% independent of the mode (RTL or LTR) we are in. this way, we make sure that specific macros that has to deal with +% `at the beginning of the line' or `at the end of the line' still works correctly and there is no need to modify them. +\def\llap#1{% + \if@RTL% + \hb@xt@\z@{\hss#1}% + \else% + \ifvmode% + \hb@xt@\z@{#1\hss}% + \else% + \hb@xt@\z@{\hss#1}% + \fi% +\fi% +} + +\def\rlap#1{% + \if@RTL% + \hb@xt@\z@{#1\hss}% + \else% + \ifvmode% + \hb@xt@\z@{\hss#1}% + \else% + \hb@xt@\z@{#1\hss}% + \fi% +\fi% +} + +% logical \llap and \rlap macros + +\def\simurghllap#1{% + \if@RTL% + \hb@xt@\z@{#1\hss}% + \else% + \ifvmode% + \hb@xt@\z@{#1\hss}% + \else% + \hb@xt@\z@{\hss#1}% + \fi% +\fi% +} + +\def\simurghrlap#1{% + \if@RTL% + \hb@xt@\z@{\hss#1}% + \else% + \ifvmode% + \hb@xt@\z@{\hss#1}% + \else% + \hb@xt@\z@{#1\hss}% + \fi% +\fi% +} + + +\def\@hangfrom#1{\setbox\@tempboxa\hbox{{#1}}% + \hangindent% + \if@RTL% + \else% + -% + \fi% + \wd\@tempboxa\noindent\box\@tempboxa} + +\def\bm@l{\if@RTL\hss\unhbox\@tempboxa\else\unhbox\@tempboxa\hss\fi} +\def\bm@r{\if@RTL\unhbox\@tempboxa\hss\else\hss\unhbox\@tempboxa\fi} +\def\bm@t{\unhbox\@tempboxa\hss} +\def\bm@b{\hss\unhbox\@tempboxa} + + +\def\LTRmarginpar{% + \ifhmode + \@bsphack + \@floatpenalty -\@Mii + \else + \@floatpenalty-\@Miii + \fi + \ifinner + \@parmoderr + \@floatpenalty\z@ + \else + \@next\@currbox\@freelist{}{}% + \@next\@marbox\@freelist{\global\count\@marbox\m@ne}% + {\@floatpenalty\z@ + \@fltovf\def\@currbox{\@tempboxa}\def\@marbox{\@tempboxa}}% + \fi + \@ifnextchar [\@LTRxmpar\@LTRympar} +\long\def\@LTRxmpar[#1]#2{% + \@LTRsavemarbox\@marbox{#1}% + \@LTRsavemarbox\@currbox{#2}% + \@xympar} +\long\def\@LTRympar#1{% + \@LTRsavemarbox\@marbox{#1}% + \global\setbox\@currbox\copy\@marbox + \@xympar} +\long\def \@LTRsavemarbox #1#2{% + \global\setbox #1% + \color@vbox + \vtop dir TLT{% + \@RTLfalse% + \hsize\marginparwidth + \@parboxrestore + \@LTRmarginparreset + #2% + \@minipagefalse + \outer@nobreak + }% + \color@endbox +} + +\def \@LTRmarginparreset {% + \reset@latinfont + \normalsize + \@setminipage +} + +\def\RTLmarginpar{% + \ifhmode + \@bsphack + \@floatpenalty -\@Mii + \else + \@floatpenalty-\@Miii + \fi + \ifinner + \@parmoderr + \@floatpenalty\z@ + \else + \@next\@currbox\@freelist{}{}% + \@next\@marbox\@freelist{\global\count\@marbox\m@ne}% + {\@floatpenalty\z@ + \@fltovf\def\@currbox{\@tempboxa}\def\@marbox{\@tempboxa}}% + \fi + \@ifnextchar [\@RTLxmpar\@RTLympar} +\long\def\@RTLxmpar[#1]#2{% + \@RTLsavemarbox\@marbox{#1}% + \@RTLsavemarbox\@currbox{#2}% + \@xympar} +\long\def\@RTLympar#1{% + \@RTLsavemarbox\@marbox{#1}% + \global\setbox\@currbox\copy\@marbox + \@xympar} +\long\def \@RTLsavemarbox #1#2{% + \global\setbox #1% + \color@vbox + \vtop dir TRT{% + \@RTLtrue% + \hsize\marginparwidth + \@parboxrestore + \@RTLmarginparreset + #2% + \@minipagefalse + \outer@nobreak + }% + \color@endbox +} + +\def \@RTLmarginparreset {% + \reset@parsifont + \normalsize + \@setminipage +} + +\def \@marginparreset {% + \if@Latin% + \reset@latinfont% + \else% + \reset@parsifont% + \fi% + \reset@font + \normalsize + \@setminipage +} + + +\def\hb@xt@addmarginpar@{% + \if@RTL% + \if@LTRmarginpar% + \hbox dir TLT to% + \else% + \hbox dir TRT to% + \fi% + \else% + \if@RTLmarginpar% + \hbox dir TRT to% + \else% + \hbox dir TLT to% + \fi% + \fi} + +\def\vtop@addmarginpar{% + \if@RTL% + \if@LTRmarginpar% + \vtop dir TLT% + \else% + \vtop dir TRT% + \fi% + \else% + \if@RTLmarginpar% + \vtop dir TRT% + \else% + \vtop dir TLT% + \fi% + \fi} + + +\def\@addmarginpar{\@next\@marbox\@currlist{\@cons\@freelist\@marbox + \@cons\@freelist\@currbox}\@latexbug\@tempcnta\@ne + \if@twocolumn + \if@firstcolumn \@tempcnta\m@ne \fi + \else + \if@mparswitch + \ifodd\c@page \else\@tempcnta\m@ne \fi + \fi + \if@reversemargin \@tempcnta -\@tempcnta \fi + \fi + \ifnum\@tempcnta <\z@ \global\setbox\@marbox\box\@currbox \fi + \@tempdima\@mparbottom + \advance\@tempdima -\@pageht + \advance\@tempdima\ht\@marbox + \ifdim\@tempdima >\z@ + \@latex@warning@no@line {Marginpar on page \thepage\space moved}% + \else + \@tempdima\z@ + \fi + \global\@mparbottom\@pageht + \global\advance\@mparbottom\@tempdima + \global\advance\@mparbottom\dp\@marbox + \global\advance\@mparbottom\marginparpush + \advance\@tempdima -\ht\@marbox + \global\setbox \@marbox + \vbox {\vskip \@tempdima + \box \@marbox}% + \global \ht\@marbox \z@ + \global \dp\@marbox \z@ + \kern -\@pagedp + \nointerlineskip + \hb@xt@addmarginpar@\columnwidth + {\ifnum \@tempcnta >\z@ + \hskip\columnwidth \hskip\marginparsep + \else + \hskip -\marginparsep \hskip -\marginparwidth + \fi + \box\@marbox \hss}% + \nointerlineskip + \hbox{\vrule \@height\z@ \@width\z@ \@depth\@pagedp}} + +\long\def \@savemarbox #1#2{% + \global\setbox #1% + \color@vbox + \vtop@addmarginpar{% + \hsize\marginparwidth + \@parboxrestore + \@marginparreset + #2% + \@minipagefalse + \outer@nobreak + }% + \color@endbox +} + +\gdef\@stopline{% + \unskip + \@stopfield + \if@rjfield + \global\@rjfieldfalse + \@tempdima\@totalleftmargin + \advance\@tempdima\linewidth + \hb@xt@\@tempdima{% + \@itemfudge\hskip\dimen\@curtabmar + \box\@curline + \hfil + \box\@curfield}% + \else + \@addfield + \hb@xt@\linewidth{\@itemfudge\hskip\dimen\@curtabmar\box\@curline\hfil}% + \fi} + + +\def\LTR@outputdblcol{% + \if@firstcolumn + \global \@firstcolumnfalse + \global \setbox\@leftcolumn \box\@outputbox + \else + \global \@firstcolumntrue + \setbox\@outputbox \vbox dir TLT {% + \hb@xt@\textwidth {% + \hb@xt@\columnwidth {% + \box\@leftcolumn \hss}% + \hfil + {\normalcolor\vrule \@width\columnseprule}% + \hfil + \hb@xt@\columnwidth {% + \box\@outputbox \hss}% + }% + }% + \@combinedblfloats + \@outputpage + \begingroup + \@dblfloatplacement + \@startdblcolumn + \@whilesw\if@fcolmade \fi + {\@outputpage + \@startdblcolumn}% + \endgroup + \fi +} + +\def\RTL@outputdblcol{% + \if@firstcolumn + \global \@firstcolumnfalse + \global \setbox\@leftcolumn \box\@outputbox + \else + \global \@firstcolumntrue + \setbox\@outputbox \vbox dir TRT {% + \hb@xt@\textwidth {% + \hb@xt@\columnwidth {% + \box\@leftcolumn \hss}% + \hfil + {\normalcolor\vrule \@width\columnseprule}% + \hfil + \hb@xt@\columnwidth {% + \box\@outputbox \hss}% + }% + }% + \@combinedblfloats + \@outputpage + \begingroup + \@dblfloatplacement + \@startdblcolumn + \@whilesw\if@fcolmade \fi + {\@outputpage + \@startdblcolumn}% + \endgroup + \fi +} + + + +\newcommand*{\RTLdblcol}{\renewcommand*{\@outputdblcol}{\RTL@outputdblcol}} +\newcommand*{\LTRdblcol}{\renewcommand*{\@outputdblcol}{\LTR@outputdblcol}} + +\def\@outputpage{% +\begingroup % the \endgroup is put in by \aftergroup + \let \protect \noexpand + \@resetactivechars + \global\let\@@if@newlist\if@newlist + \global\@newlistfalse + \@parboxrestore + \shipout \vbox{% + \set@typeset@protect + \aftergroup \endgroup + \aftergroup \set@typeset@protect + % correct? or just restore by ending + % the group? + \if@specialpage + \global\@specialpagefalse\@nameuse{ps@\@specialstyle}% + \fi + \if@twoside + \ifodd\count\z@ \let\@thehead\@oddhead \let\@thefoot\@oddfoot + \let\@themargin\oddsidemargin + \else \let\@thehead\@evenhead + \let\@thefoot\@evenfoot \let\@themargin\evensidemargin + \fi + \fi + \if@RTLmain% + \reset@parsifont% + \else% + \reset@latinfont% + \fi% + \normalsize + \normalsfcodes + \let\label\@gobble + \let\index\@gobble + \let\glossary\@gobble + \baselineskip\z@skip \lineskip\z@skip \lineskiplimit\z@ + \@begindvi + \vskip \topmargin + \moveright\@themargin \vbox {% + \setbox\@tempboxa \vbox to\headheight{% + \vfil + \color@hbox + \normalcolor + \hb@xt@\textwidth{\@thehead}% + \color@endbox + }% %% 22 Feb 87 + \dp\@tempboxa \z@ + \box\@tempboxa + \vskip \headsep + \box\@outputbox + \baselineskip \footskip + \color@hbox + \normalcolor + \hb@xt@\textwidth{\@thefoot}% + \color@endbox + }% + }% + \global\let\if@newlist\@@if@newlist + \global \@colht \textheight + \stepcounter{page}% + \let\firstmark\botmark +} + +\global\@RTLtabfalse +\def\@tabular{\if@RTL\@RTLtabtrue\fi% + \leavevmode \hbox \bgroup $\let\@acol\@tabacol + \let\@classz\@tabclassz + \let\@classiv\@tabclassiv \let\\\@tabularcr\@tabarray} +\def\endtabular{\crcr\egroup\egroup $\egroup\@RTLtabfalse} +\expandafter \let \csname endtabular*\endcsname = \endtabular +\def\@array[#1]#2{% + \if #1t\vtop \else \if#1b\vbox \else \vcenter \fi\fi + \bgroup + \setbox\@arstrutbox\hbox{% + \vrule \@height\arraystretch\ht\strutbox + \@depth\arraystretch \dp\strutbox + \@width\z@}% + \@mkpream{#2}% + \edef\@preamble{% + \ialign \noexpand\@halignto + \bgroup \@arstrut \@preamble \tabskip\z@skip \cr}% + \let\@startpbox\@@startpbox \let\@endpbox\@@endpbox + \let\tabularnewline\\% + \let\par\@empty + \let\@sharp##% + \set@typeset@protect + \lineskip\z@skip\baselineskip\z@skip + \ifhmode \@preamerr\z@ \@@par\fi + \if@RTLtab\simurgh@textdir TRT\fi% + \@preamble} +\def\array{\let\@acol\@arrayacol \let\@classz\@arrayclassz + \let\@classiv\@arrayclassiv + \let\\\@arraycr\let\@halignto\@empty\@RTLtabfalse\@tabarray} +\def\@testpach#1{\@chclass \ifnum \@lastchclass=\tw@ 4 \else + \ifnum \@lastchclass=3 5 \else + \z@ \if #1c\@chnum \z@ \else + \if \if@RTLtab#1r\else#1l\fi\@chnum \@ne \else + \if \if@RTLtab#1l\else#1r\fi\@chnum \tw@ \else + \@chclass \if #1|\@ne \else + \if #1@\tw@ \else + \if #1p3 \else \z@ \@preamerr 0\fi + \fi \fi \fi \fi \fi \fi +\fi} + + +\DeclareRobustCommand\Latincite{% + \@ifnextchar [{\@tempswatrue\@Latincitex}{\@tempswafalse\@Latincitex[]}} +\def\@Latincitex[#1]#2{\leavevmode + \let\@citea\@empty + \@cite{\textLatin{\@for\@citeb:=#2\do + {\@citea\def\@citea{,\penalty\@m\ }% + \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}% + \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi + \@ifundefined{b@\@citeb}{\hbox{\reset@font\bfseries ?}% + \G@refundefinedtrue + \@latex@warning + {Citation `\@citeb' on page \thepage \space undefined}}% + {\@cite@ofmt{\csname b@\@citeb\endcsname}}}}}{#1}} + + + + + +\RequirePackage{simurgh-footnotes} +\if@twocolumn + \let\autofootnoterule\relax + \let\leftfootnoterule\relax + \let\rightfootnoterule\relax + \textwidthfootnoterule +\fi + + + +\everydisplay\expandafter{\the\everydisplay\predisplaydirection\z@} + + +\simurgh@newrobustcmd*{\parsirq}{«} +\simurgh@newrobustcmd*{\parsilq}{»} + +\endinput
\ No newline at end of file |