diff options
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r-- | Master/texmf-dist/tex/xelatex/xechangebar/xechangebar.sty | 1158 |
1 files changed, 1158 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/xelatex/xechangebar/xechangebar.sty b/Master/texmf-dist/tex/xelatex/xechangebar/xechangebar.sty new file mode 100644 index 00000000000..04df4038ec3 --- /dev/null +++ b/Master/texmf-dist/tex/xelatex/xechangebar/xechangebar.sty @@ -0,0 +1,1158 @@ +%% +%% +%% Copyright (C) 1994-2005 Johannes Braams, All rights reserved. +%% Copyright (C) 2017 Apostolos Syropoulos, All rights reserved. +%% Modified by Apostolos Syropoulos for use with XeLaTeX +%% -------------------------------------------------------------- +%% +%% It may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3 +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of LaTeX +%% version 2003/12/01 or later. +%% +%% This work has the LPPL maintenance status "maintained". +%% +%% The Current Maintainer of this work is Johannes Braams. +%% +%% This file may only be distributed together with a copy of the +%% changebar package. You may however distribute thechangebar package +%% without such generated files. +%% +%% The list of all files belonging to the changebar package is +%% given in the file `manifest.txt. +%% +%% The list of derived (unpacked) files belonging to the distribution +%% and covered by LPPL is defined by the unpacking scripts (with +%% extension .ins) which are part of the distribution. +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{xechangebar} + [2017/08/03 v1.0 Extends v3.5c of package changebar] +\def\cb@maxpoint{80} +\def\cb@minpoint{1} +\def\cb@nil{0} +\newcount\cb@nextpoint +\cb@nextpoint=\cb@minpoint +\newcount\cb@topleft +\newcount\cb@topright +\newcount\cb@botleft +\newcount\cb@botright +\newcount\cb@cnta +\newcount\cb@cntb +\newdimen\cb@dima +\newdimen\cb@curbarwd +\newcount\cb@page +\newcount\cb@pagecount +\cb@pagecount=0 +\def\cb@barsplace{0} +\newif\if@cb@trace +\newif\if@cb@firstcolumn +\def\cb@pdfxy#1#2#3#4#5{} +\newdimen\cb@odd@left +\newdimen\cb@odd@right +\newdimen\cb@even@left +\newdimen\cb@even@right +\def\cb@positions{% + \global\cb@odd@left=\hoffset + \global\cb@even@left\cb@odd@left + \global\advance\cb@odd@left by \oddsidemargin + \global\cb@odd@right\cb@odd@left + \global\advance\cb@odd@right by \textwidth + \global\advance\cb@odd@right by \changebarsep + \global\advance\cb@odd@right by 0.5\changebarwidth + \global\advance\cb@odd@left by -\changebarsep + \global\advance\cb@odd@left by -0.5\changebarwidth + \if@twoside + \global\advance\cb@even@left by \evensidemargin + \global\cb@even@right\cb@even@left + \global\advance\cb@even@left by -\changebarsep + \global\advance\cb@even@left by -0.5\changebarwidth + \global\advance\cb@even@right by \textwidth + \global\advance\cb@even@right by \changebarsep + \global\advance\cb@even@right by 0.5\changebarwidth + \else + \global\let\cb@even@left\cb@odd@left + \global\let\cb@even@right\cb@odd@right + \fi + } +{\catcode`\p=12\catcode`\t=12 \gdef\cb@removedim#1pt{#1}} +\DeclareOption{DVItoLN03}{\global\chardef\cb@driver@setup=0\relax} +\DeclareOption{dvitoln03}{\global\chardef\cb@driver@setup=0\relax} +\DeclareOption{DVItoPS}{\global\chardef\cb@driver@setup=1\relax} +\DeclareOption{dvitops}{\global\chardef\cb@driver@setup=1\relax} +\DeclareOption{DVIps}{\global\chardef\cb@driver@setup=2\relax} +\DeclareOption{dvips}{\global\chardef\cb@driver@setup=2\relax} +\DeclareOption{emTeX}{\global\chardef\cb@driver@setup=3\relax} +\DeclareOption{emtex}{\global\chardef\cb@driver@setup=3\relax} +\DeclareOption{textures}{\global\chardef\cb@driver@setup=4\relax} +\DeclareOption{Textures}{\global\chardef\cb@driver@setup=4\relax} +\DeclareOption{VTeX}{\global\chardef\cb@driver@setup=5\relax} +\DeclareOption{vtex}{\global\chardef\cb@driver@setup=5\relax} +\DeclareOption{PDFTeX}{\cb@pdftexcheck} +\DeclareOption{pdftex}{\cb@pdftexcheck} +\DeclareOption{xetex}{\cb@xetexcheck} +\def\cb@pdftexcheck{% + \ifx\pdfsavepos\@undefined\cb@pdftexerror + \else\ifx\pdfoutput\@undefined\cb@pdftexerror + \else\ifnum\pdfoutput>0 + \global\chardef\cb@driver@setup=6\relax + \ifx\cb@writexy\@undefined + \newwrite\cb@writexy + \newread\cb@readxy + \immediate\openout\cb@writexy=\jobname.cb2\relax + \fi + \gdef\cb@pdfxy##1##2##3##4##5{% + \immediate\write\cb@writexy{##1.##2p##3,##4,##5}% + \expandafter\gdef\csname cb@##1.##2\endcsname{##3,##4,##5}} + \else\cb@pdftexerror\fi\fi\fi} +\def\cb@pdftexerror{\PackageError + {changebar}% + {PDFTeX option cannot be used}% + {You are using a LaTeX run which does not generate PDF\MessageBreak + or you are using a very old version of PDFTeX}} +\def\cb@xetexcheck{% + \expandafter\ifx\csname XeTeXrevision\endcsname\@undefined \cb@xetexerror + \else + \global\chardef\cb@driver@setup=7\relax + \ifx\cb@writexy\@undefined + \newwrite\cb@writexy + \newread\cb@readxy + \immediate\openout\cb@writexy=\jobname.cb2\relax + \fi + \gdef\cb@pdfxy##1##2##3##4##5{% + \immediate\write\cb@writexy{##1.##2p##3,##4,##5}% + \expandafter\gdef\csname cb@##1.##2\endcsname{##3,##4,##5}} + \gdef\sec@nd@ftw@##1 ##2{##2} + \fi} +\def\cb@xetexerror{\PackageError + {changebar}% + {XeTeX option cannot be used}% + {You are not using XeLaTeX}} +\DeclareOption{outerbars}{\def\cb@barsplace{1}} +\DeclareOption{innerbars}{\def\cb@barsplace{0}} +\DeclareOption{leftbars}{\def\cb@barsplace{2}} +\DeclareOption{rightbars}{\def\cb@barsplace{3}} +\DeclareOption{traceon}{\@cb@tracetrue} +\DeclareOption{traceoff}{\@cb@tracefalse} +\DeclareOption{tracestacks}{% + \let\cb@trace@stack\cb@@show@stack + \def\cb@trace@push#1{\cb@trace{% + Pushed point \the\cb@topleft\space on \noexpand#1: #1}}% + \def\cb@trace@pop#1{\cb@trace{% + Popped point \the\cb@topleft\space from \noexpand#1: #1}}% + } +\DeclareOption{grey}{% + \def\cb@ps@color{\thechangebargrey\space 100 div setgray}} +\DeclareOption{color}{% + \def\cb@ps@color{\expandafter\c@lor@to@ps\cb@current@color\@@}% + \def\cb@color@pkg{color}} +\DeclareOption{xcolor}{% + \def\cb@ps@color{\expandafter\c@lor@to@ps\cb@current@color\@@}% + \def\cb@color@pkg{xcolor}} +\DeclareOption*{\OptionNotUsed\PackageError + {changebar}% + {Unrecognised option `\CurrentOption'\MessageBreak + known options are dvitoln03, dvitops, dvips,\MessageBreak + emtex, textures, pdftex, and vtex + grey, color, xcolor,\MessageBreak + outerbars, innerbars, leftbars and rightbars}} +\ifx\VTeXversion\@undefined + \expandafter\ifx\csname XeTeXrevision\endcsname\@undefined + \ifx\pdfoutput\@undefined + \ExecuteOptions{innerbars,traceoff,dvips,grey} + \else + \ifnum\pdfoutput>0 + \ExecuteOptions{innerbars,traceoff,pdftex,grey} + \else + \ExecuteOptions{innerbars,traceoff,dvips,grey} + \fi + \fi + \else + \ExecuteOptions{innerbars,traceoff,xetex,grey} + \fi +\else + \ExecuteOptions{innerbars,traceoff,vtex,grey} +\fi +\InputIfFileExists{changebar.cfg}{}{} +\def\cb@@show@stack#1{% + \cb@trace{% + stack status at #1:\MessageBreak + current stack: \cb@currentstack\MessageBreak + \@spaces end stack: \cb@endstack\MessageBreak + \space\space begin stack: \cb@beginstack\MessageBreak + history stack: \cb@historystack + }} +\let\cb@trace@stack\@gobble +\let\cb@trace@push\@gobble +\let\cb@trace@pop\@gobble +\ProcessOptions\relax +\ifx\pdfsavepos\@undefined +\else + \ifx\pdfoutput\@undefined + \else + \ifnum\pdfoutput>0 + \global\chardef\cb@driver@setup=6\relax + \fi + \fi +\fi +\newcommand{\cb@trace}[1]{% + \if@cb@trace + \GenericWarning + {(changebar)\@spaces\@spaces}% + {Package changebar: #1\@gobble}% + \fi + } +\if@compatibility + \def\driver#1{% + \bgroup\edef\next{\def\noexpand\tempa{#1}}% + \uppercase\expandafter{\next}% + \def\LN{DVITOLN03}% + \def\DVItoPS{DVITOPS}% + \def\DVIPS{DVIPS}% + \def\emTeX{EMTEX}% + \def\Textures{TEXTURES}% + \def\VTeX{VTEX}% + \def\pdfTeX{PDFTEX} + \def\xetex{XETEX} + \global\chardef\cb@driver@setup=0\relax + \ifx\tempa\LN \global\chardef\cb@driver@setup=0\fi + \ifx\tempa\DVItoPS \global\chardef\cb@driver@setup=1\fi + \ifx\tempa\DVIPS \global\chardef\cb@driver@setup=2\fi + \ifx\tempa\emTeX \global\chardef\cb@driver@setup=3\fi + \ifx\tempa\Textures \global\chardef\cb@driver@setup=4\fi + \ifx\tempa\VTeX \global\chardef\cb@driver@setup=5\fi + \ifx\tempa\pdfTeX \cb@pdftexcheck\fi + \ifx\tempa\xeTeX \cb@xetexcheck\fi + \egroup} + {\def\do{\noexpand\do\noexpand} + \xdef\@preamblecmds{\@preamblecmds \do\driver} + } +\fi +\def\cb@trace@defpoint#1#2{% + \cb@trace{% + defining point \the#1 at position \the#2 + \MessageBreak + cb@pagecount: \the\cb@pagecount; page \thepage}} +\def\cb@trace@connect#1#2#3{% + \cb@trace{% + connecting points \the#1 and \the#2; barwidth: \the#3 + \MessageBreak + cb@pagecount: \the\cb@pagecount; page \thepage}} +\def\cb@setup@specials{% +\ifcase\cb@driver@setup + \def\cb@defpoint##1##2{% + \special{ln03:defpoint \the##1(\the##2,)}% + \cb@trace@defpoint##1##2} + \def\cb@connect##1##2##3{% + \special{ln03:connect \the##1\space\space \the##2\space \the##3}% + \cb@trace@connect##1##2##3} + \def\cb@resetpoints{% + \special{ln03:resetpoints \cb@minpoint \space\cb@maxpoint}} +\or + \def\cb@defpoint##1##2{% + \special{dvitops: inline + \expandafter\cb@removedim\the##2\space 6.5536 mul\space + /CBarX\the##1\space exch def currentpoint exch pop + /CBarY\the##1\space exch def}% + \cb@trace@defpoint##1##2} + \def\cb@connect##1##2##3{% + \special{dvitops: inline + gsave \cb@ps@color\space + \expandafter\cb@removedim\the##3\space 6.5536 mul\space + CBarX\the##1\space\space CBarY\the##1\space\space moveto + CBarX\the##2\space\space CBarY\the##2\space\space lineto + stroke grestore}% + \cb@trace@connect##1##2##3} + \let\cb@resetpoints\relax +\or + \def\cb@defpoint##1##2{% + \special{ps: + \expandafter\cb@removedim\the##2\space + Resolution\space mul\space 72.27\space div\space + /CBarX\the##1\space exch def currentpoint exch pop + /CBarY\the##1\space exch def}% + \cb@trace@defpoint##1##2} + \def\cb@connect##1##2##3{% + \special{ps: + gsave \cb@ps@color\space + \expandafter\cb@removedim\the##3\space + Resolution\space mul\space 72.27\space div\space + setlinewidth + CBarX\the##1\space\space CBarY\the##1\space\space moveto + CBarX\the##2\space\space CBarY\the##2\space\space lineto + stroke grestore}% + \cb@trace@connect##1##2##3} + \let\cb@resetpoints\relax +\or + \def\cb@defpoint##1##2{% + \special{em:point \the##1,\the##2}% + \cb@trace@defpoint##1##2} + \def\cb@connect##1##2##3{% + \special{em:line \the##1,\the##2,\the##3}% + \cb@trace@connect##1##2##3} + \let\cb@resetpoints\relax +\or + \def\cb@defpoint##1##2{% + \special{postscript 0 0 transform}% leave [x,y] on the stack + \special{rawpostscript + \expandafter\cb@removedim\the##2\space + /CBarX\the##1\space exch def + itransform exch pop + /CBarY\the##1\space exch def}% + \if@cb@trace\cb@trace@defpoint##1##2\fi} + \def\cb@connect##1##2##3{% + \special{rawpostscript + gsave 1 setlinecap \cb@ps@color\space + \expandafter\cb@removedim\the##3\space + setlinewidth + CBarX\the##1\space\space CBarY\the##1\space\space moveto + CBarX\the##2\space\space CBarY\the##2\space\space lineto + stroke grestore}% + \if@cb@trace\cb@trace@connect##1##2##3\fi} + \let\cb@resetpoints\relax +\or + \def\cb@defpoint##1##2{% + \special{pS: + \expandafter\cb@removedim\the##2\space + Resolution\space mul\space 72.27\space div\space + /CBarX\the##1\space exch def currentpoint exch pop + /CBarY\the##1\space exch def}% + \cb@trace@defpoint##1##2} + \def\cb@connect##1##2##3{% + \special{pS: + gsave \cb@ps@color\space + \expandafter\cb@removedim\the##3\space + Resolution\space mul\space 72.27\space div\space + setlinewidth + CBarX\the##1\space\space CBarY\the##1\space\space moveto + CBarX\the##2\space\space CBarY\the##2\space\space lineto + stroke grestore}% + \cb@trace@connect##1##2##3} + \let\cb@resetpoints\relax +\or + \immediate\closeout\cb@writexy + \immediate\openin\cb@readxy=\jobname.cb2\relax + \def\cb@pdfpoints{} + \def\cb@pdfpagenr{0} + \def\cb@findpdfpoint##1##2{% + \edef\cb@temp + {\noexpand\cb@@findpdfpoint{\the##1}{\the##2}}% + \cb@temp + } + \def\cb@@findpdfpoint##1##2{% + \ifnum##2<\cb@pdfpagenr\relax\else + \cb@pdfreadxy{##2}% + \fi + \let\cb@pdfx\relax + \ifx\cb@pdfpoints\@empty\else + \ifnum##2<0\relax + \else + \edef\cb@temp{\noexpand\cb@pdffind{##1}{##2}\cb@pdfpoints\relax{}}% + \cb@temp + \fi + \fi + } + \def\cb@pdffind##1##2##3.##4p##5,##6,##7pt##8\relax##9{% + \def\cb@next{\cb@pdffind{##1}{##2}##8\relax{##9##3.##4p##5,##6,##7pt}}% + \ifnum ##1=##3 + \ifnum ##2=##4 + \def\cb@pdfx{##5sp}% + \def\cb@pdfy{##6sp}% + \def\cb@pdfz{##7pt}% + \let\cb@next\relax + \gdef\cb@pdfpoints{##9##8}% + \fi + \fi + \ifx\relax##8\relax + \let\cb@next\relax + \fi + \cb@next + }% + \def\cb@pdfreadxy##1{% + \let\cb@next\relax + \ifeof\cb@readxy + \global\let\cb@pdfpagenr\cb@maxpoint + \else + {\endlinechar=-1\read\cb@readxy to\cb@temp + \ifx\cb@temp\@empty\else + \expandafter\cb@pdfparsexy\cb@temp + \ifnum\cb@pdfpg<0\else + \xdef\cb@pdfpoints{\cb@pdfpoints\cb@temp}% + \cb@trace{PDFpoints=\cb@pdfpoints}% + \global\let\cb@pdfpagenr\cb@pdfpg + \fi + \ifnum\cb@pdfpg>##1\else + \global\def\cb@next{\cb@pdfreadxy{##1}}% + \fi + \fi + }% + \fi + \cb@next + }% + \def\cb@pdfparsexy##1.##2p##3,##4,##5pt{% + \def\cb@pdfpg{##2}}% + \def\cb@defpoint##1##2{% + \if@filesw + \begingroup + \edef\point{{\the##1}{\the\cb@pagecount}}% + \let\the=\z@ + \pdfsavepos + \edef\cb@temp{\write\@auxout + {\string\cb@pdfxy\point + {\the\pdflastxpos}{\the\pdflastypos}{\the##2}}}% + \cb@temp + \endgroup + \fi + \cb@trace@defpoint##1##2% + }% + \def\cb@cvtpct##1{% + \ifnum##1<0 0\else + \ifnum##1>99 1\else + \ifnum##1<10 0.0\the##1\else + 0.\the##1\fi\fi\fi} + \def\cb@connect##1##2##3{% + \cb@findpdfpoint{##1}\cb@pagecount + \ifx\cb@pdfx\relax\cb@rerun + \else + \let\cb@pdftopy\cb@pdfy + \cb@findpdfpoint{##2}\cb@pagecount + \ifx\cb@pdfx\relax\cb@rerun + \else + \begingroup + \cb@dima=\cb@pdfz + \advance\cb@dima by-\cb@pdfx + \advance\cb@dima by1in + \cb@dima=0.996264009963\cb@dima\relax + \ifx\cb@current@color\@undefined + \def\cb@temp{\cb@cvtpct\c@changebargrey}% + \pdfliteral{q \cb@temp\space g \cb@temp\space G}% + \else + \pdfliteral{q \cb@current@color}% + \fi + \edef\cb@temp{\expandafter\cb@removedim\the\cb@dima\space}% + \cb@dima=\cb@pdftopy + \advance\cb@dima-\cb@pdfy\relax + \cb@dima=0.996264009963\cb@dima\relax + ##3=0.996264009963##3\relax + \pdfliteral direct{\expandafter\cb@removedim\the##3 w + \cb@temp 0 m + \cb@temp \expandafter\cb@removedim\the\cb@dima\space l S Q}% + \endgroup + \cb@cntb=##1\relax + \ifodd\cb@cntb\advance\cb@cntb 1\else\advance\cb@cntb -1\fi + \cb@findpdfpoint\cb@cntb\cb@pagecount + \cb@cntb=##2\relax + \ifodd\cb@cntb\advance\cb@cntb 1\else\advance\cb@cntb -1\fi + \cb@findpdfpoint\cb@cntb\cb@pagecount + \fi + \fi + \cb@trace@connect##1##2##3% + }% + \gdef\cb@checkPdfxy##1##2##3##4##5{% + \cb@@findpdfpoint{##1}{##2}% + \ifnum##3=\cb@pdfx\relax + \ifnum##4=\cb@pdfy\relax + \ifdim##5=\cb@pdfz\relax + \else + \cb@error + \fi + \else + \cb@error + \fi + \else + \cb@error + \fi + } + \def\cb@maxpoint{9999999} + \let\cb@resetpoints\relax +\or +%xetex + \immediate\closeout\cb@writexy + \immediate\openin\cb@readxy=\jobname.cb2\relax + \def\cb@pdfpoints{} + \def\cb@pdfpagenr{0} + \def\cb@findpdfpoint##1##2{% + \edef\cb@temp + {\noexpand\cb@@findpdfpoint{\the##1}{\the##2}}% + \cb@temp + } + \def\cb@@findpdfpoint##1##2{% + \ifnum##2<\cb@pdfpagenr\relax\else + \cb@pdfreadxy{##2}% + \fi + \let\cb@pdfx\relax + \ifx\cb@pdfpoints\@empty\else + \ifnum##2<0\relax + \else + \edef\cb@temp{\noexpand\cb@pdffind{##1}{##2}\cb@pdfpoints\relax{}}% + \cb@temp + \fi + \fi + } + \def\cb@pdffind##1##2##3.##4p##5,##6,##7pt##8\relax##9{% + \def\cb@next{\cb@pdffind{##1}{##2}##8\relax{##9##3.##4p##5,##6,##7pt}}% + \ifnum ##1=##3 + \ifnum ##2=##4 + \def\cb@pdfx{##5sp}% + \def\cb@pdfy{##6sp}% + \def\cb@pdfz{##7pt}% + \let\cb@next\relax + \gdef\cb@pdfpoints{##9##8}% + \fi + \fi + \ifx\relax##8\relax + \let\cb@next\relax + \fi + \cb@next + }% + \def\cb@pdfreadxy##1{% + \let\cb@next\relax + \ifeof\cb@readxy + \global\let\cb@pdfpagenr\cb@maxpoint + \else + {\endlinechar=-1\read\cb@readxy to\cb@temp + \ifx\cb@temp\@empty\else + \expandafter\cb@pdfparsexy\cb@temp + \ifnum\cb@pdfpg<0\else + \xdef\cb@pdfpoints{\cb@pdfpoints\cb@temp}% + \cb@trace{PDFpoints=\cb@pdfpoints}% + \global\let\cb@pdfpagenr\cb@pdfpg + \fi + \ifnum\cb@pdfpg>##1\else + \global\def\cb@next{\cb@pdfreadxy{##1}}% + \fi + \fi + }% + \fi + \cb@next + }% + \def\cb@pdfparsexy##1.##2p##3,##4,##5pt{% + \def\cb@pdfpg{##2}}% + \def\cb@defpoint##1##2{% + \if@filesw + \begingroup + \edef\point{{\the##1}{\the\cb@pagecount}}% + \let\the=\z@ + \pdfsavepos + \edef\cb@temp{\write\@auxout + {\string\cb@pdfxy\point + {\the\pdflastxpos}{\the\pdflastypos}{\the##2}}}% + \cb@temp + \endgroup + \fi + \cb@trace@defpoint##1##2% + }% + \def\cb@cvtpct##1{% + \ifnum##1<0 0\else + \ifnum##1>99 1\else + \ifnum##1<10 0.0\the##1\else + 0.\the##1\fi\fi\fi} + \def\cb@connect##1##2##3{% + \cb@findpdfpoint{##1}\cb@pagecount + \ifx\cb@pdfx\relax\cb@rerun + \else + \let\cb@pdftopy\cb@pdfy + \cb@findpdfpoint{##2}\cb@pagecount + \ifx\cb@pdfx\relax\cb@rerun + \else + \begingroup + \cb@dima=\cb@pdfz + \advance\cb@dima by-\cb@pdfx + \advance\cb@dima by1in + \cb@dima=0.996264009963\cb@dima\relax + \ifx\cb@current@color\@undefined + \def\cb@temp{\cb@cvtpct\c@changebargrey}% + \special{pdf:literal q \cb@temp\space g\space\cb@temp\space G}% + \else + \special{pdf:literal q \expandafter\sec@nd@ftw@\cb@current@color\space RG + \expandafter\sec@nd@ftw@\cb@current@color\space rg}% + \fi + \edef\cb@temp{\expandafter\cb@removedim\the\cb@dima\space}% + \cb@dima=\cb@pdftopy + \advance\cb@dima-\cb@pdfy\relax + \cb@dima=0.996264009963\cb@dima\relax + ##3=0.996264009963##3\relax + \special{pdf:literal \expandafter\cb@removedim\the##3 w + \cb@temp 0 m + \cb@temp \expandafter\cb@removedim\the\cb@dima\space l S Q}% + \endgroup + \cb@cntb=##1\relax + \ifodd\cb@cntb\advance\cb@cntb 1\else\advance\cb@cntb -1\fi + \cb@findpdfpoint\cb@cntb\cb@pagecount + \cb@cntb=##2\relax + \ifodd\cb@cntb\advance\cb@cntb 1\else\advance\cb@cntb -1\fi + \cb@findpdfpoint\cb@cntb\cb@pagecount + \fi + \fi + \cb@trace@connect##1##2##3% + }% + \gdef\cb@checkPdfxy##1##2##3##4##5{% + \cb@@findpdfpoint{##1}{##2}% + \ifnum##3=\cb@pdfx\relax + \ifnum##4=\cb@pdfy\relax + \ifdim##5=\cb@pdfz\relax + \else + \cb@error + \fi + \else + \cb@error + \fi + \else + \cb@error + \fi + } + \def\cb@maxpoint{9999999} + \let\cb@resetpoints\relax +% +\or +\else + \PackageWarning{Changebar}{changebars not supported in unknown setup} + \def\cb@defpoint##1##2{\cb@trace@defpoint##1##2} + \def\cb@connect##1##2##3{\cb@trace@connect##1##2##3} + \let\cb@resetpoints\relax +\fi +\global\let\cb@setup@specials\relax} +\newcommand*{\cbstart}{\@ifnextchar [%] + {\cb@start}% + {\cb@start[\changebarwidth]}} +\newcommand*{\cbend}{\cb@end} +\newcommand*{\cbdelete}{\@ifnextchar [%] + {\cb@delete}% + {\cb@delete[\deletebarwidth]}} +\def\cb@delete[#1]{\vbox to \z@{\vss\cb@start[#1]\vskip #1\cb@end}} +\newenvironment{changebar}% + {\@ifnextchar [{\cb@start}% + {\cb@start[\changebarwidth]}}% + {\cb@end} +\newcommand*{\nochangebars}{% + \def\cb@start[##1]{}% + \def\cb@delete[##1]{}% + \let\cb@end\relax} +\newlength{\changebarwidth} +\setlength{\changebarwidth}{2pt} +\newlength{\deletebarwidth} +\setlength{\deletebarwidth}{4pt} +\newlength{\changebarsep} +\setlength{\changebarsep}{30pt} +\newcounter{changebargrey} +\setcounter{changebargrey}{65} +\@ifpackagewith{changebar}{\csname cb@color@pkg\endcsname}{% + \RequirePackage{\cb@color@pkg}% + \DeclareRobustCommand\cbcolor{% + \@ifnextchar[\@undeclaredcbcolor\@declaredcbcolor} + \def\@undeclaredcbcolor[#1]#2{% + \begingroup + \color[#1]{#2}% + \global\let\cb@current@color\current@color + \endgroup + \ignorespaces + } + \def\@declaredcbcolor#1{% + \begingroup + \color{#1}% + \global\let\cb@current@color\current@color + \endgroup + \ignorespaces}% + }{% + \def\cbcolor{\@ifnextchar[%] + \@@cbcolor\@cbcolor}% + \def\@@cbcolor[#1]#2{\cb@colwarn\def\@@cbcolor[##1]##2{}}% + \def\@cbcolor#1{\cb@colwarn\def\@cbcolor##1{}}% + \def\cb@colwarn{\PackageWarning{Changebar}% + {You didn't specify the option `color';\MessageBreak + your command \string\cbcolor\space will be ignored}}% + } +\def\cb@start[#1]{% + \cb@topleft=\cb@nextpoint + \cb@curbarwd#1\relax + \cb@push\cb@currentstack + \cb@checkpage\z@ + \cb@cnta\cb@pagecount + \cb@pagecount\cb@page\advance\cb@pagecount\m@ne + \ifvmode + \cb@setBeginPoints + \else + \vbox to \z@{% + \vskip -\ht\strutbox + \cb@setBeginPoints + \vskip \ht\strutbox}% + \fi + \cb@pagecount\cb@cnta + \cb@advancePoint} +\def\cb@advancePoint{% + \global\advance\cb@nextpoint by 4\relax + \ifnum\cb@nextpoint>\cb@maxpoint + \global\cb@nextpoint=\cb@minpoint\relax + \fi} +\def\cb@end{% + \cb@trace@stack{end of bar on page \the\c@page}% + \cb@pop\cb@currentstack + \ifnum\cb@topleft=\cb@nil + \PackageWarning{Changebar}% + {Badly nested changebars; Expect erroneous results}% + \else + \cb@checkpage\thr@@ + \cb@cnta\cb@pagecount + \cb@pagecount\cb@page\advance\cb@pagecount\m@ne + \ifvmode + \cb@setEndPoints + \else + \vadjust{\cb@setEndPoints}% + \fi + \cb@pagecount\cb@cnta + \fi + \ignorespaces} +\def\cb@checkpage#1{% + \cb@cnta\cb@topleft\relax + \advance\cb@cnta by #1\relax + \cb@cntb\cb@page\relax + \cb@dima\cb@curbarwd\relax + \cb@pop\cb@historystack + \ifnum\cb@topleft=\cb@nil + \else + \cb@FindPageNum + \ifnum\cb@topleft>\cb@maxpoint\else + \cb@cntb\cb@page + \fi + \@whilenum\cb@topleft>\cb@nil\do{% + \cb@push\cb@historystack + \cb@pop\cb@tempstack}% + \fi + \advance\cb@cnta by -#1\relax + \cb@topleft\cb@cnta\relax + \cb@page\cb@cntb\relax + \cb@curbarwd\cb@dima\relax + } +\def\cb@FindPageNum{% + \ifnum\cb@topleft=\cb@cnta + \else + \cb@push\cb@tempstack + \cb@pop\cb@historystack + \ifnum\cb@topleft=\cb@nil + \cb@trace{Ran out of history stack, new changebar?}% + \cb@topleft\cb@maxpoint\advance\cb@topleft\@ne + \else + \expandafter\expandafter\expandafter\cb@FindPageNum + \fi + \fi + }% +\def\cb@setBeginPoints{% + \cb@topright=\cb@topleft\advance\cb@topright by\@ne + \cb@cntb=\cb@pagecount + \divide\cb@cntb by\tw@ + \ifodd\cb@cntb + \cb@defpoint\cb@topleft\cb@even@left + \cb@defpoint\cb@topright\cb@even@right + \else + \cb@defpoint\cb@topleft\cb@odd@left + \cb@defpoint\cb@topright\cb@odd@right + \fi + \cb@writeAux\cb@topleft + } +\def\cb@setEndPoints{% + \cb@topright=\cb@topleft\advance\cb@topright by\@ne + \cb@botleft=\cb@topleft\advance\cb@botleft by\tw@ + \cb@botright=\cb@topleft\advance\cb@botright by\thr@@ + \cb@cntb=\cb@pagecount + \divide\cb@cntb by\tw@ + \ifodd\cb@cntb + \cb@defpoint\cb@botleft\cb@even@left + \cb@defpoint\cb@botright\cb@even@right + \else + \cb@defpoint\cb@botleft\cb@odd@left + \cb@defpoint\cb@botright\cb@odd@right + \fi + \cb@writeAux\cb@botright + \edef\cb@leftbar{% + \noexpand\cb@connect{\cb@topleft}{\cb@botleft}{\cb@curbarwd}}% + \edef\cb@rightbar{% + \noexpand\cb@connect{\cb@topright}{\cb@botright}{\cb@curbarwd}}% + \if@twocolumn + \ifodd\cb@pagecount\cb@rightbar\else\cb@leftbar\fi + \else + \ifcase\cb@barsplace + \ifodd\cb@cntb + \cb@rightbar + \else + \if@twoside\cb@leftbar\else\cb@rightbar\fi + \fi + \or + \ifodd\cb@cntb + \cb@leftbar + \else + \if@twoside\cb@rightbar\else\cb@leftbar\fi + \fi + \or + \cb@leftbar + \or + \cb@rightbar + \fi + \fi + }% +\def\cb@writeAux#1{% + \if@filesw + \begingroup + \edef\point{\the#1}% + \edef\level{\the\cb@curbarwd}% + \let\the=\z@ + \edef\cb@temp{\write\@auxout + {\string\cb@barpoint{\point}{\the\cb@pagecount}{\level}}}% + \cb@temp + \endgroup + \fi} +\newif\if@cb@pagejump +\def\cb@pagejumplst{-1} +\def\cb@nextpagejump{-1} +\def\cb@pagejump#1{\xdef\cb@pagejumplst{\cb@pagejumplst,#1}} +\def\cb@writepagejump#1{ + \cb@cntb=\cb@pagecount + \advance\cb@cntb by#1\relax + \global\setbox\@leftcolumn\vbox to\@colht{% + \edef\cb@temp{\write\@auxout{\string\cb@pagejump{\the\cb@cntb}}}% + \cb@temp + \dimen@ \dp\@leftcolumn + \unvbox \@leftcolumn + \vskip -\dimen@ + }% +} +\def\cb@poppagejump#1,#2\relax{% + \gdef\cb@nextpagejump{#1}% + \gdef\cb@pagejumplst{#2}} +\def\cb@checkpagecount{% + \if@twocolumn + \if@firstcolumn + \ifodd\cb@pagecount\global\advance\cb@pagecount by\@ne\fi + \fi + \else + \ifodd\cb@pagecount\global\advance\cb@pagecount by\@ne\fi + \fi + \if@twoside + \cb@cntb=\cb@pagecount + \divide\cb@cntb by\tw@ + \advance\cb@cntb by-\c@page + \ifodd\cb@cntb + \if@twocolumn + \if@firstcolumn + \@whilenum\cb@pagecount>\cb@nextpagejump\do{% + \expandafter\cb@poppagejump\cb@pagejumplst\relax}% + \ifnum\cb@pagecount=\cb@nextpagejump + \cb@trace{Page jump: \string\cb@pagecount=\the\cb@pagecount} + \global\advance\cb@pagecount by\tw@ + \global\@cb@pagejumptrue + \else + \global\@cb@pagejumpfalse + \fi + \else + \if@cb@pagejump + \cb@writepagejump{-3}% + \fi + \fi + \fi + \else + \if@twocolumn + \if@firstcolumn + \global\advance\cb@pagecount by\tw@ + \global\@cb@pagejumpfalse + \else + \if@cb@pagejump + \cb@trace{Page jump annulled, % + \string\cb@pagecount=\the\cb@pagecount} + \else + \cb@writepagejump{-1}% + \global\advance\cb@pagecount by\tw@ + \cb@rerun + \fi + \fi + \else + \global\advance\cb@pagecount by\tw@ + \fi + \fi + \fi +} +\let\ltx@makecol\@makecol +\def\cb@makecol{% + \if@twocolumn + \cb@trace{Twocolumn: \if@firstcolumn Left \else Right \fi column}% + \fi + \cb@trace@stack{before makecol, page \the\c@page, + \string\cb@pagecount=\the\cb@pagecount}% + \let\cb@writeAux\@gobble + \cb@checkpagecount + \setbox\@cclv \vbox{% + \cb@resetpoints + \cb@startSpanBars + \unvbox\@cclv + \boxmaxdepth\maxdepth}% + \global\advance\cb@pagecount by\@ne + \cb@buildstack\cb@processActive + \ltx@makecol + \if@twocolumn + \global\setbox\@outputbox \vbox to\@colht {% + \if@firstcolumn\write\@auxout{\string\@cb@firstcolumntrue}% + \else\write\@auxout{\string\@cb@firstcolumnfalse}% + \fi + \dimen@ \dp\@outputbox + \unvbox \@outputbox + \vskip -\dimen@ + }% + \fi + \cb@trace@stack{after makecol, page \the\c@page, + \string\cb@pagecount=\the\cb@pagecount}% + } +\let\@makecol\cb@makecol +\let\ltx@vtryfc\@vtryfc +\def\cb@vtryfc#1{% + \cb@trace{In vtryfc, page \the\c@page, + \string\cb@pagecount=\the\cb@pagecount}% + \let\cb@writeAux\@gobble + \cb@checkpagecount + \ltx@vtryfc{#1}% + \if@twocolumn + \global\setbox\@outputbox \vbox to\@colht{% + \if@firstcolumn\write\@auxout{\string\@cb@firstcolumntrue}% + \else\write\@auxout{\string\@cb@firstcolumnfalse}% + \fi + \unvbox\@outputbox + \boxmaxdepth\maxdepth + }% + \fi + \global\advance\cb@pagecount by \@ne +} +\let\@vtryfc\cb@vtryfc +\def\cb@processActive{% + \cb@pop\cb@endstack + \ifnum\cb@topleft=\cb@nil + \else + \setbox\@cclv\vbox{% + \unvbox\@cclv + \boxmaxdepth\maxdepth + \advance\cb@pagecount by -1\relax + \cb@setEndPoints}% + \cb@push\cb@historystack + \cb@push\cb@beginstack + \expandafter\cb@processActive + \fi} +\def\cb@startSpanBars{% + \cb@pop\cb@beginstack + \ifnum\cb@topleft=\cb@nil + \else + \cb@setBeginPoints + \cb@trace@stack{after StartSpanBars, page \the\c@page}% + \expandafter\cb@startSpanBars + \fi + } +\def\cb@buildstack{% + \cb@initstack\cb@endstack + \cb@pushNextActive} +\def\cb@pushNextActive{% + \cb@pop\cb@historystack + \ifnum\cb@topleft=\cb@nil + \else + \ifnum\cb@page>\cb@pagecount + \cb@push\cb@historystack + \else + \ifodd\cb@topleft + \cb@push\cb@endstack + \else + \cb@pop\cb@endstack + \fi + \expandafter\expandafter\expandafter\cb@pushNextActive + \fi + \fi} +\def\cb@initstack#1{\xdef#1{}} +\cb@initstack\cb@historystack +\newwrite\cb@write +\newread\cb@read +\immediate\openout\cb@write=\jobname.cb\relax +\cb@initstack\cb@endstack +\cb@initstack\cb@beginstack +\cb@initstack\cb@tempstack +\cb@initstack\cb@currentstack +\def\cb@thehistorystack{\cb@historystack} +\def\cb@pop#1{% + \ifx #1\@empty + \def\cb@temp{#1}% + \ifx\cb@temp\cb@thehistorystack + \ifeof\cb@read + \else + {\endlinechar=-1\read\cb@read to\cb@temp + \xdef\cb@historystack{\cb@historystack\cb@temp}% + }% + \fi + \fi + \fi + \ifx#1\@empty + \global\cb@topleft\cb@nil + \global\cb@page\z@\relax + \else + \expandafter\cb@carcdr#1e#1% + \fi + \cb@trace@pop{#1}} +\def\cb@carcdr#1n#2p#3l#4e#5{% + \global\cb@topleft#1\relax + \global\cb@page#2\relax + \global\cb@curbarwd#3\relax + \xdef#5{#4}} +\def\cb@push#1{% + \xdef#1{\the\cb@topleft n\the\cb@page p\the\cb@curbarwd l#1}% + \cb@trace@push{#1}} + +\def\cb@barpoint#1#2#3{\cb@cnta=#2 + \if@cb@firstcolumn\advance\cb@cnta by\m@ne\fi + \immediate\write\cb@write{#1n\the\cb@cnta p#3l}} +\AtBeginDocument{% + \cb@setup@specials + \cb@pagejump{999999999,}% + \cb@positions + \cb@trace{% + Odd left : \the\cb@odd@left\space + Odd right : \the\cb@odd@right\MessageBreak + Even left: \the\cb@even@left\space + Even right: \the\cb@even@right + }% + \immediate\closeout\cb@write + \immediate\openin\cb@read=\jobname.cb} +\AtEndDocument{% + \clearpage + \cb@initstack\cb@historystack + \immediate\closein\cb@read + \immediate\openin\cb@read=\jobname.cb% + \ifx\cb@readxy\@undefined + \else + \immediate\closein\cb@readxy + \immediate\openin\cb@readxy=\jobname.cb2% + \def\cb@pdfpoints{}% + \def\cb@pdfpagenr{0}% + \fi + \@cb@firstcolumnfalse + \cb@checkrerun + \let\cb@pdfxy\cb@checkPdfxy + \let\cb@pagejump\@gobble + \let\cb@barpoint\cb@checkHistory} +\def\cb@checkHistory#1#2#3{% + \cb@pop\cb@historystack + \ifnum #1=\cb@topleft\relax + \cb@cnta=#2 + \if@cb@firstcolumn\advance\cb@cnta by\m@ne\fi + \ifnum \cb@cnta=\cb@page\relax + \else + \cb@error + \fi + \else + \cb@error + \fi} +\def\cb@checkPdfxy#1#2#3#4#5{} +\def\cb@rerun{% + \global\let\cb@checkrerun\cb@error} +\let\cb@checkrerun\relax +\def\cb@error{% + \PackageWarning{Changebar}% + {Changebar info has changed.\MessageBreak + Rerun to get the bars right} + \gdef\cb@checkHistory##1##2##3{}% + \let\cb@barpoint\cb@checkHistory + \gdef\cb@checkPdfxy##1##2##3##4##5{}% + \let\cb@pdfxy\cb@checkPdfxy} +\let\ltx@end@float\end@float +\def\cb@end@float{% + \cb@trace@stack{end float on page \the\c@page}% + \cb@pop\cb@currentstack + \ifnum\cb@topleft=\cb@nil + \else + \cb@push\cb@currentstack + \global\cb@curbarwd=\cb@curbarwd + \@endfloatbox + \global\setbox\@currbox + \color@vbox + \normalcolor + \vbox\bgroup\cb@start[\cb@curbarwd]\unvbox\@currbox\cb@end + \fi + \ltx@end@float} +\let\end@float\cb@end@float +\let\flt@float@end\float@end +\def\float@end{% + \cb@trace@stack{end float on page \the\c@page}% + \cb@pop\cb@currentstack + \ifnum\cb@topleft=\cb@nil + \else + \cb@push\cb@currentstack + \global\cb@curbarwd\cb@curbarwd + \@endfloatbox + \global\setbox\@currbox + \color@vbox + \normalcolor + \vbox\bgroup\cb@start[\cb@curbarwd]\unvbox\@currbox\cb@end + \fi + \let\end@float\ltx@end@float + \flt@float@end + } +\let\ltx@end@dblfloat\end@dblfloat +\def\cb@end@dblfloat{% + \if@twocolumn + \cb@trace@stack{end dblfloat on page \the\c@page}% + \cb@pop\cb@currentstack + \ifnum\cb@topleft=\cb@nil + \else + \cb@push\cb@currentstack + \global\cb@curbarwd=\cb@curbarwd + \@endfloatbox + \global\setbox\@currbox + \color@vbox + \normalcolor + \vbox\bgroup\cb@start[\cb@curbarwd]\unvbox\@currbox\cb@end + \fi + \@endfloatbox + \ifnum\@floatpenalty <\z@ + \@largefloatcheck + \@cons\@dbldeferlist\@currbox + \fi + \ifnum \@floatpenalty =-\@Mii \@Esphack\fi + \else + \end@float + \fi} +\let\end@dblfloat\cb@end@dblfloat +\let\flt@float@dblend\float@dblend +\def\float@dblend{% + \cb@trace@stack{end dbl float on page \the\c@page}% + \cb@pop\cb@currentstack + \ifnum\cb@topleft=\cb@nil + \else + \cb@push\cb@currentstack + \global\cb@curbarwd=\cb@curbarwd + \@endfloatbox + \global\setbox\@currbox + \color@vbox + \normalcolor + \vbox\bgroup\cb@start[\cb@curbarwd]\unvbox\@currbox\cb@end + \fi + \let\end@dblfloat\ltx@end@dblfloat + \flt@float@dblend + } +\let\ltx@footnotetext\@footnotetext +\long\def\cb@footnotetext#1{% + \cb@trace@stack{end footnote on page \the\c@page}% + \cb@pop\cb@currentstack + \ifnum\cb@topleft=\cb@nil + \ltx@footnotetext{#1}% + \else + \cb@push\cb@currentstack + \edef\cb@temp{\the\cb@curbarwd}% + \ltx@footnotetext{\cb@start[\cb@temp]#1\cb@end}% + \fi} +\let\@footnotetext\cb@footnotetext +\let\ltx@mpfootnotetext\@mpfootnotetext +\long\def\cb@mpfootnotetext#1{% + \cb@pop\cb@currentstack + \ifnum\cb@topleft=\cb@nil + \ltx@mpfootnotetext{#1}% + \else + \cb@push\cb@currentstack + \edef\cb@temp{\the\cb@curbarwd}% + \ltx@mpfootnotetext{\cb@start[\cb@temp]#1\cb@end}% + \fi} +\let\@mpfootnotetext\cb@mpfootnotetext +\endinput +%% +%% End of file `xechangebar.sty'. |