%PDF- %PDF-
| Direktori : /proc/self/root/data/old/usr/share/texlive/texmf-dist/tex/latex/bidi/ |
| Current File : //proc/self/root/data/old/usr/share/texlive/texmf-dist/tex/latex/bidi/bidituftesidenote.sty |
%%
%% This is file `bidituftesidenote.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% bidi.dtx (with options: `bidituftesidenote.sty')
%%
%% ______________________________________
%% Copyright © 2009–2013 Persian TeX Group
%%
%% License information appended.
%%
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{bidituftesidenote}[2011/06/17 v0.1
bidi implementation of tufte sidenote]
\RequirePackage{xifthen}
\RequirePackage{ragged2e}
\RequirePackage{setspace}
\RequirePackage{hopatch}
\def\bidituftesidenotemarginpar{%
\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 [\@bidituftesidenotexmpar\@bidituftesidenoteympar}
\long\def\@bidituftesidenotexmpar[#1]#2{%
\@bidituftesidenotesavemarbox\@marbox{#1}%
\@bidituftesidenotesavemarbox\@currbox{#2}%
\@xympar}
\long\def\@bidituftesidenoteympar#1{%
\@bidituftesidenotesavemarbox\@marbox{#1}%
\global\setbox\@currbox\copy\@marbox
\@xympar}
\long\def \@bidituftesidenotesavemarbox #1#2{%
\global\setbox #1%
\color@vbox
\vtop{%
\hsize\marginparwidth
\@parboxrestore
\@bidituftesidenotemarginparreset
#2%
\@minipagefalse
\outer@nobreak
}%
\color@endbox
}
\def \@bidituftesidenotemarginparreset {%
\reset@font
\normalsize
\@minipagetrue
\everypar{\@minipagefalse\everypar{}\if@RTL@footnote\beginR\else\beginL\fi}%
}
\def\LTRbidituftesidenotemarginpar{%
\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 [\@LTRbidituftesidenotexmpar\@LTRbidituftesidenoteympar}
\long\def\@LTRbidituftesidenotexmpar[#1]#2{%
\@LTRbidituftesidenotesavemarbox\@marbox{#1}%
\@LTRbidituftesidenotesavemarbox\@currbox{#2}%
\@xympar}
\long\def\@LTRbidituftesidenoteympar#1{%
\@LTRbidituftesidenotesavemarbox\@marbox{#1}%
\global\setbox\@currbox\copy\@marbox
\@xympar}
\long\def \@LTRbidituftesidenotesavemarbox #1#2{%
\global\setbox #1%
\color@vbox
\vtop{%
\hsize\marginparwidth
\@parboxrestore
\@LTRbidituftesidenotemarginparreset
#2%
\@minipagefalse
\outer@nobreak
}%
\color@endbox
}
\def \@LTRbidituftesidenotemarginparreset {%
\reset@font
\normalsize
\@minipagetrue
\everypar{\@minipagefalse\everypar{}\beginL}%
}
\def\RTLbidituftesidenotemarginpar{%
\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 [\@RTLbidituftesidenotexmpar\@RTLbidituftesidenoteympar}
\long\def\@RTLbidituftesidenotexmpar[#1]#2{%
\@RTLbidituftesidenotesavemarbox\@marbox{#1}%
\@RTLbidituftesidenotesavemarbox\@currbox{#2}%
\@xympar}
\long\def\@RTLbidituftesidenoteympar#1{%
\@RTLbidituftesidenotesavemarbox\@marbox{#1}%
\global\setbox\@currbox\copy\@marbox
\@xympar}
\long\def \@RTLbidituftesidenotesavemarbox #1#2{%
\global\setbox #1%
\color@vbox
\vtop{%
\hsize\marginparwidth
\@parboxrestore
\@RTLbidituftesidenotemarginparreset
#2%
\@minipagefalse
\outer@nobreak
}%
\color@endbox
}
\def \@RTLbidituftesidenotemarginparreset {%
\reset@font
\normalsize
\@minipagetrue
\everypar{\@minipagefalse\everypar{}\beginR}%
}
\newcommand{\@bidituftesidenote@marginfont}{\normalfont\footnotesize}
\newcommand*{\@bidituftesidenote@sidenote@font}{\@bidituftesidenote@marginfont}
\newcommand*{\@bidituftesidenote@marginnote@font}{\@bidituftesidenote@marginfont}
\newcommand*{\@bidituftesidenote@citation@font}{\@bidituftesidenote@marginfont}
\newcommand*{\setsidenotefont}[1]{\renewcommand*{\@bidituftesidenote@sidenote@font}{#1}}
\newcommand*{\setmarginnotefont}[1]{\renewcommand*{\@bidituftesidenote@marginnote@font}{#1}}
\newcommand*{\setcitationfont}[1]{\renewcommand*{\@bidituftesidenote@citation@font}{#1}}
\newcommand*{\@bidituftesidenote@sidenote@justification}{\@bidituftesidenote@justification@autodetect}
\newcommand*{\@bidituftesidenote@marginnote@justification}{\@bidituftesidenote@justification@autodetect}
\newcommand*{\@bidituftesidenote@citation@justification}{\@bidituftesidenote@justification@autodetect}
\newcommand*{\@bidituftesidenote@justification@autodetect}{\justifying}%
\newcommand{\@bidituftesidenote@margin@par}{%
\setlength{\RaggedRightParindent}{0.5pc}%
\setlength{\JustifyingParindent}{0.5pc}%
\setlength{\parindent}{0.5pc}%
\setlength{\parskip}{0pt}%
}
%%
\@ifundefined{gsetlength}{%
\newcommand*{\gsetlength}[2]{%
\setlength{#1}{#2}%
\global#1=#1\relax%
}%
}{}
%%
\@ifundefined{gsetboolean}{%
\newcommand*{\gsetboolean}[2]{% based on code from ifthen pkg
\lowercase{\def\@tempa{#2}}%
\@ifundefined{@tempswa\@tempa}%
{\PackageError{ifthen}{You can only set a boolean to `true' or `false'}\@ehc}%
{\@ifundefined{#1\@tempa}%
{\PackageError{ifthen}{Boolean #1 undefined}\@ehc}%
{\global\csname#1\@tempa\endcsname}%
}%
}%
}{}
%%
\catcode`\Q=3
\def\@bidituftesidenote@trim@spaces#1{%
% Use grouping to emulate a multi-token afterassignment queue
\begingroup%
% Put `\toks 0 {' into the afterassignment queue
\aftergroup\toks\aftergroup0\aftergroup{%
% Apply \trimb to the replacement text of #1, adding a leading
% \noexpand to prevent brace stripping and to serve another purpose
% later.
\expandafter\@bidituftesidenote@trim@b\expandafter\noexpand#1Q Q}%
% Transfer the trimmed text back into #1.
\edef#1{\the\toks0}%
}
\def\@bidituftesidenote@trim@b#1 Q{\@bidituftesidenote@trim@c#1Q}
\def\@bidituftesidenote@trim@c#1Q#2{\afterassignment\endgroup \vfuzz\the\vfuzz#1}
\catcode`\Q=11
%%
\RequirePackage{natbib}
\RequirePackage{bibentry} % allows bibitems to be typeset outside thebibliography environment
\renewcommand\BR@b@bibitem[2][]{%
\ifthenelse{\isempty{#1}}%
{\BR@bibitem{#2}}%
{\BR@bibitem[#1]{#2}}%
\BR@c@bibitem{#2}%
}
\nobibliography* % pre-loads the bibliography keys
%%
\newcounter{@bidituftesidenote@num@bibkeys}%
\newcommand{\@bidituftesidenote@normal@cite}[2][0pt]{%
% Snag the last bibentry in the list for later comparison
\let\@temp@last@bibkey\@empty%
\@for\@temp@bibkey:=#2\do{\let\@temp@last@bibkey\@temp@bibkey}%
\sidenote[][#1]{%
% Loop through all the bibentries, separating them with semicolons and spaces
\normalsize\normalfont\@bidituftesidenote@citation@font%
\setcounter{@bidituftesidenote@num@bibkeys}{0}%
\@for\@temp@bibkeyx:=#2\do{%
\ifthenelse{\equal{\@temp@last@bibkey}{\@temp@bibkeyx}}%
{\ifthenelse{\equal{\value{@bidituftesidenote@num@bibkeys}}{0}}{}{and\ }%
\@bidituftesidenote@trim@spaces\@temp@bibkeyx% trim spaces around bibkey
\bibentry{\@temp@bibkeyx}}%
{\@bidituftesidenote@trim@spaces\@temp@bibkeyx% trim spaces around bibkey
\bibentry{\@temp@bibkeyx};\ }%
\stepcounter{@bidituftesidenote@num@bibkeys}%
}%
}%
}
%%
\gdef\@bidituftesidenote@citations{}% list of cite keys
\newcommand\@bidituftesidenote@add@citation[1]{\relax% adds a new bibkey to the list of cite keys
\ifx\@bidituftesidenote@citations\@empty\else
\g@addto@macro\@bidituftesidenote@citations{,}% separate by commas
\fi
\g@addto@macro\@bidituftesidenote@citations{#1}
}
\newcommand{\@bidituftesidenote@print@citations}[1][0pt]{% puts the citations in a margin note
% Snag the last bibentry in the list for later comparison
\let\@temp@last@bibkey\@empty%
\@for\@temp@bibkey:=\@bidituftesidenote@citations\do{\let\@temp@last@bibkey\@temp@bibkey}%
\marginpar{%
\hbox{}\vspace*{#1}%
\@bidituftesidenote@citation@font%
\@bidituftesidenote@citation@justification%
\@bidituftesidenote@margin@par% use parindent and parskip settings for marginal text
\vspace*{-1\baselineskip}%
% Loop through all the bibentries, separating them with semicolons and spaces
\setcounter{@bidituftesidenote@num@bibkeys}{0}%
\@for\@temp@bibkeyx:=\@bidituftesidenote@citations\do{%
\ifthenelse{\equal{\@temp@last@bibkey}{\@temp@bibkeyx}}%
{\ifthenelse{\equal{\value{@bidituftesidenote@num@bibkeys}}{0}}{}{and\ }%
\@bidituftesidenote@trim@spaces\@temp@bibkeyx% trim spaces around bibkey
\bibentry{\@temp@bibkeyx}}%
{\@bidituftesidenote@trim@spaces\@temp@bibkeyx% trim spaces around bibkey
\bibentry{\@temp@bibkeyx};\ }%
\stepcounter{@bidituftesidenote@num@bibkeys}%
}%
}%
}
%%
\newcommand{\@bidituftesidenote@sidenote@citations}{}% contains list of \cites in sidenote
\newcommand{\@bidituftesidenote@infootnote@cite}[1]{%
\@bidituftesidenote@add@citation{#1}
}
%%
\let\cite\@bidituftesidenote@normal@cite
%%
\RequirePackage{optparams}% for our new sidenote commands -- provides multiple optional arguments for commands
\providecommand{\footnotelayout}{\@bidituftesidenote@sidenote@font\@bidituftesidenote@sidenote@justification}
\renewcommand{\footnotelayout}{\@bidituftesidenote@sidenote@font\@bidituftesidenote@sidenote@justification}
\hopatch@AfterPackage{bidi}{\long\def\@makefntext#1{\@textsuperscript{\@bidituftesidenote@sidenote@font\tiny\@thefnmark}\,\footnotelayout#1}}
\hopatch@AfterPackage{bidi}{\def\@makefnmark{\hbox{\@textsuperscript{\normalfont\footnotesize\@thefnmark}}}}
\providecommand*{\multiplefootnotemarker}{3sp}
\providecommand*{\multfootsep}{,}
\hopatch@AfterPackage{bidi}{%
\renewcommand{\@footnotemark}{%
\leavevmode%
\ifhmode%
\edef\@x@sf{\the\spacefactor}%
\@bidituftesidenote@check@multiple@sidenotes%
\nobreak%
\fi%
\@makefnmark%
\ifhmode\spacefactor\@x@sf\fi%
\relax%
}%
}
\newcommand{\@bidituftesidenote@check@multiple@sidenotes}{%
\ifdim\lastkern=\multiplefootnotemarker\relax%
\edef\@x@sf{\the\spacefactor}%
\unkern%
\textsuperscript{\multfootsep}%
\spacefactor\@x@sf\relax%
\fi
}
\hopatch@AfterPackage{bidi}{%
\renewcommand\@footnotetext[2][0pt]{%
\bidituftesidenotemarginpar{%
\hbox{}\vspace*{#1}%
\def\baselinestretch {\setspace@singlespace}%
\reset@font\footnotesize%
\@bidituftesidenote@margin@par% use parindent and parskip settings for marginal text
\vspace*{-1\baselineskip}\noindent%
\protected@edef\@currentlabel{%
\csname p@footnote\endcsname\@thefnmark%
}%
\color@begingroup%
\@makefntext{%
\ignorespaces#2%
}%
\color@endgroup%
}%
}%
\renewcommand\@LTRfootnotetext[2][0pt]{%
\LTRbidituftesidenotemarginpar{%
\hbox{}\vspace*{#1}%
\def\baselinestretch {\setspace@singlespace}%
\reset@font\footnotesize%
\@bidituftesidenote@margin@par% use parindent and parskip settings for marginal text
\vspace*{-1\baselineskip}\noindent%
\protected@edef\@currentlabel{%
\csname p@footnote\endcsname\@thefnmark%
}%
\color@begingroup%
\@makefntext{%
\ignorespaces#2%
}%
\color@endgroup%
}%
}%
\renewcommand\@RTLfootnotetext[2][0pt]{%
\RTLbidituftesidenotemarginpar{%
\hbox{}\vspace*{#1}%
\def\baselinestretch {\setspace@singlespace}%
\reset@font\footnotesize%
\@bidituftesidenote@margin@par% use parindent and parskip settings for marginal text
\vspace*{-1\baselineskip}\noindent%
\protected@edef\@currentlabel{%
\csname p@footnote\endcsname\@thefnmark%
}%
\color@begingroup%
\@makefntext{%
\ignorespaces#2%
}%
\color@endgroup%
}%
}%
}
\newlength{\@bidituftesidenote@sidenote@vertical@offset}
\setlength{\@bidituftesidenote@sidenote@vertical@offset}{0pt}
\long\def\@bidituftesidenote@sidenote[#1][#2]#3{%
\let\cite\@bidituftesidenote@infootnote@cite% use the in-sidenote \cite command
\gdef\@bidituftesidenote@citations{}% clear out any old citations
\ifthenelse{\NOT\isempty{#2}}{%
\gsetlength{\@bidituftesidenote@sidenote@vertical@offset}{#2}%
}{%
\gsetlength{\@bidituftesidenote@sidenote@vertical@offset}{0pt}%
}%
\ifthenelse{\isempty{#1}}{%
% no specific footnote number provided
\stepcounter\@mpfn%
\protected@xdef\@thefnmark{\thempfn}%
\@footnotemark\@footnotetext[\@bidituftesidenote@sidenote@vertical@offset]{#3}%
}{%
% specific footnote number provided
\begingroup%
\csname c@\@mpfn\endcsname #1\relax%
\unrestored@protected@xdef\@thefnmark{\thempfn}%
\endgroup%
\@footnotemark\@footnotetext[\@bidituftesidenote@sidenote@vertical@offset]{#3}%
}%
\@bidituftesidenote@print@citations% print any citations
\let\cite\@bidituftesidenote@normal@cite% go back to using normal in-text \cite command
\unskip\ignorespaces% remove extra white space
\kern-\multiplefootnotemarker% remove \kern left behind by sidenote
\kern\multiplefootnotemarker\relax% add new \kern here to replace the one we yanked
}
\long\def\@LTRbidituftesidenote@sidenote[#1][#2]#3{%
\let\cite\@bidituftesidenote@infootnote@cite% use the in-sidenote \cite command
\gdef\@bidituftesidenote@citations{}% clear out any old citations
\ifthenelse{\NOT\isempty{#2}}{%
\gsetlength{\@bidituftesidenote@sidenote@vertical@offset}{#2}%
}{%
\gsetlength{\@bidituftesidenote@sidenote@vertical@offset}{0pt}%
}%
\ifthenelse{\isempty{#1}}{%
% no specific footnote number provided
\stepcounter\@mpfn%
\protected@xdef\@thefnmark{\thempfn}%
\@footnotemark\@LTRfootnotetext[\@bidituftesidenote@sidenote@vertical@offset]{#3}%
}{%
% specific footnote number provided
\begingroup%
\csname c@\@mpfn\endcsname #1\relax%
\unrestored@protected@xdef\@thefnmark{\thempfn}%
\endgroup%
\@footnotemark\@LTRfootnotetext[\@bidituftesidenote@sidenote@vertical@offset]{#3}%
}%
\@bidituftesidenote@print@citations% print any citations
\let\cite\@bidituftesidenote@normal@cite% go back to using normal in-text \cite command
\unskip\ignorespaces% remove extra white space
\kern-\multiplefootnotemarker% remove \kern left behind by sidenote
\kern\multiplefootnotemarker\relax% add new \kern here to replace the one we yanked
}
\long\def\@RTLbidituftesidenote@sidenote[#1][#2]#3{%
\let\cite\@bidituftesidenote@infootnote@cite% use the in-sidenote \cite command
\gdef\@bidituftesidenote@citations{}% clear out any old citations
\ifthenelse{\NOT\isempty{#2}}{%
\gsetlength{\@bidituftesidenote@sidenote@vertical@offset}{#2}%
}{%
\gsetlength{\@bidituftesidenote@sidenote@vertical@offset}{0pt}%
}%
\ifthenelse{\isempty{#1}}{%
% no specific footnote number provided
\stepcounter\@mpfn%
\protected@xdef\@thefnmark{\thempfn}%
\@footnotemark\@RTLfootnotetext[\@bidituftesidenote@sidenote@vertical@offset]{#3}%
}{%
% specific footnote number provided
\begingroup%
\csname c@\@mpfn\endcsname #1\relax%
\unrestored@protected@xdef\@thefnmark{\thempfn}%
\endgroup%
\@footnotemark\@RTLfootnotetext[\@bidituftesidenote@sidenote@vertical@offset]{#3}%
}%
\@bidituftesidenote@print@citations% print any citations
\let\cite\@bidituftesidenote@normal@cite% go back to using normal in-text \cite command
\unskip\ignorespaces% remove extra white space
\kern-\multiplefootnotemarker% remove \kern left behind by sidenote
\kern\multiplefootnotemarker\relax% add new \kern here to replace the one we yanked
}
\newcommand{\sidenote}{\optparams{\@bidituftesidenote@sidenote}{[][0pt]}}
\newcommand{\LTRsidenote}{\optparams{\@LTRbidituftesidenote@sidenote}{[][0pt]}}
\newcommand{\RTLsidenote}{\optparams{\@RTLbidituftesidenote@sidenote}{[][0pt]}}
\hopatch@AfterPackage{bidi}{%
\renewcommand{\footnote}{\optparams{\@bidituftesidenote@sidenote}{[][0pt]}}%
\renewcommand{\LTRfootnote}{\optparams{\@LTRbidituftesidenote@sidenote}{[][0pt]}}%
\renewcommand{\RTLfootnote}{\optparams{\@RTLbidituftesidenote@sidenote}{[][0pt]}}%
}
%%
\newcommand\marginnote[2][0pt]{%
\let\cite\@bidituftesidenote@infootnote@cite% use the in-sidenote \cite command
\gdef\@bidituftesidenote@citations{}% clear out any old citations
\bidituftesidenotemarginpar{\hbox{}\vspace*{#1}\@bidituftesidenote@marginnote@font\@bidituftesidenote@marginnote@justification\@bidituftesidenote@margin@par\vspace*{-1\baselineskip}\noindent #2}%
\@bidituftesidenote@print@citations% print any citations
\let\cite\@bidituftesidenote@normal@cite% go back to using normal in-text \cite command
}
\newcommand\LTRmarginnote[2][0pt]{%
\let\cite\@bidituftesidenote@infootnote@cite% use the in-sidenote \cite command
\gdef\@bidituftesidenote@citations{}% clear out any old citations
\LTRbidituftesidenotemarginpar{\hbox{}\vspace*{#1}\@bidituftesidenote@marginnote@font\@bidituftesidenote@marginnote@justification\@bidituftesidenote@margin@par\vspace*{-1\baselineskip}\noindent #2}%
\@bidituftesidenote@print@citations% print any citations
\let\cite\@bidituftesidenote@normal@cite% go back to using normal in-text \cite command
}
\newcommand\RTLmarginnote[2][0pt]{%
\let\cite\@bidituftesidenote@infootnote@cite% use the in-sidenote \cite command
\gdef\@bidituftesidenote@citations{}% clear out any old citations
\RTLbidituftesidenotemarginpar{\hbox{}\vspace*{#1}\@bidituftesidenote@marginnote@font\@bidituftesidenote@marginnote@justification\@bidituftesidenote@margin@par\vspace*{-1\baselineskip}\noindent #2}%
\@bidituftesidenote@print@citations% print any citations
\let\cite\@bidituftesidenote@normal@cite% go back to using normal in-text \cite command
}
%%
%% Copyright © 2009–2013 Persian TeX Group <persian-tex@tug.org>
%%
%% 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 Persian TeX Group.
%%
%%
%%
%%
%% End of file `bidituftesidenote.sty'.