You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
346 lines
9.8 KiB
346 lines
9.8 KiB
% Copyright 2006 by Till Tantau
|
|
%
|
|
% This file may be distributed and/or modified
|
|
%
|
|
% 1. under the LaTeX Project Public License and/or
|
|
% 2. under the GNU Public License.
|
|
%
|
|
% See the file doc/generic/pgf/licenses/LICENSE for more details.
|
|
|
|
|
|
|
|
\pgfutil@format@is@plaintrue
|
|
|
|
|
|
% The aux files, needed for reading back coordinates
|
|
\def\pgfutil@aux@read@hook{
|
|
\pgfutil@IfFileExists{\jobname.pgf}{\input \jobname.pgf\relax}{}
|
|
\csname newwrite\endcsname\pgfutil@auxout
|
|
\immediate\csname openout\endcsname\pgfutil@auxout\jobname.pgf
|
|
}
|
|
\def\pgfutil@writetoaux#1{\write\pgfutil@auxout{#1}}
|
|
|
|
% XColor-like support for plain TeX
|
|
|
|
\def\pgfutil@definecolor#1#2#3{\csname pgfutil@emu@#2\endcsname{#1}#3\@nil}
|
|
|
|
\def\pgfutil@emu@rgb#1#2,#3,#4\@nil{\expandafter\def\csname\string\color@#1\endcsname{\xcolor@{}{}{rgb}{#2,#3,#4}}}
|
|
\def\pgfutil@emu@gray#1#2\@nil{\expandafter\def\csname\string\color@#1\endcsname{\xcolor@{}{}{rgb}{#2,#2,#2}}}
|
|
\def\pgfutil@emu@RGB#1#2,#3,#4\@nil{%
|
|
\begingroup
|
|
\pgfmathdivide@{#2}{255}\let\pgfutil@emu@RGB@r\pgfmathresult
|
|
\pgfmathdivide@{#3}{255}\let\pgfutil@emu@RGB@g\pgfmathresult
|
|
\pgfmathdivide@{#4}{255}\let\pgfutil@emu@RGB@b\pgfmathresult
|
|
\edef\pgf@marshal{\def\expandafter\noexpand\csname\string\color@#1\endcsname{%
|
|
\noexpand\xcolor@{}{}{rgb}{\pgfutil@emu@RGB@r,\pgfutil@emu@RGB@g,\pgfutil@emu@RGB@b}}}%
|
|
\expandafter\endgroup\pgf@marshal
|
|
}
|
|
|
|
\pgfutil@definecolor{white}{gray}{1}
|
|
\pgfutil@definecolor{black}{gray}{0}
|
|
\pgfutil@definecolor{gray}{gray}{0.5}
|
|
\pgfutil@definecolor{red}{rgb}{1,0,0}
|
|
\pgfutil@definecolor{green}{rgb}{0,1,0}
|
|
\pgfutil@definecolor{blue}{rgb}{0,0,1}
|
|
\pgfutil@definecolor{cyan}{rgb}{0,1,1}
|
|
\pgfutil@definecolor{magenta}{rgb}{1,0,1}
|
|
\pgfutil@definecolor{yellow}{rgb}{1,1,0}
|
|
\pgfutil@definecolor{orange}{rgb}{1,0.5,0}
|
|
\pgfutil@definecolor{violet}{rgb}{0.5,0,0.5}
|
|
\pgfutil@definecolor{purple}{rgb}{0.75,0,0.25}
|
|
\pgfutil@definecolor{brown}{rgb}{0.75,0.5,0.25}
|
|
|
|
\def\pgfutil@color#1{%
|
|
\pgfutil@colorlet{.}{#1}%
|
|
\pgfsysprotocol@getcurrentprotocol\pgfutil@emu@temp%
|
|
{%
|
|
\pgfsysprotocol@setcurrentprotocol\pgfutil@empty%
|
|
\pgfsysprotocol@bufferedtrue%
|
|
\pgfsetcolor{.}%
|
|
\expandafter\pgfsys@outerinvoke\expandafter{\pgfsysprotocol@currentprotocol}%
|
|
}%
|
|
\pgfsysprotocol@setcurrentprotocol\pgfutil@emu@temp%
|
|
\aftergroup\pgfutil@reset@color%
|
|
}
|
|
|
|
\def\pgfutil@extractcolorspec#1#2{%
|
|
\def#2{{#1}}%
|
|
}
|
|
|
|
\def\pgfutil@convertcolorspec#1#2#3{%
|
|
\edef#3{\expandafter\expandafter\expandafter\pgfutil@emu@select\csname\string\color@#1\endcsname}%
|
|
}
|
|
|
|
|
|
\def\pgfutil@doifcolorelse#1#2#3{%
|
|
\expandafter\ifx\csname\string\color@#1\endcsname\relax%
|
|
\let\pgf@next=\pgfutil@secondoftwo%
|
|
\else
|
|
\let\pgf@next=\pgfutil@firstoftwo%
|
|
\fi%
|
|
\pgf@next{#2}{#3}%
|
|
}
|
|
|
|
|
|
\def\pgfutil@reset@color{%
|
|
\pgfsysprotocol@getcurrentprotocol\pgfutil@emu@temp%
|
|
{%
|
|
\pgfsysprotocol@setcurrentprotocol\pgfutil@empty%
|
|
\pgfsysprotocol@bufferedtrue%
|
|
\pgfsetcolor{.}%
|
|
\expandafter\pgfsys@outerinvoke\expandafter{\pgfsysprotocol@currentprotocol}%
|
|
}%
|
|
\pgfsysprotocol@setcurrentprotocol\pgfutil@emu@temp%
|
|
}
|
|
\expandafter\def\csname\string\color@.\endcsname{\xcolor@{}{}{rgb}{0,0,0}}
|
|
|
|
\def\pgfutil@colorlet#1#2{%
|
|
\edef\pgf@marshal{#2}%
|
|
\expandafter\pgfutil@in@\expandafter!\expandafter{\pgf@marshal}%
|
|
\ifpgfutil@in@%
|
|
% compute mixture
|
|
{%
|
|
\expandafter\pgfutil@emu@mix\pgf@marshal!white!\@nil%
|
|
\xdef\pgf@marshal{\noexpand\def\expandafter\noexpand\csname\string\color@#1\endcsname{%
|
|
\noexpand\xcolor@{}{}{rgb}{\pgf@sys@tonumber\pgf@xa,\pgf@sys@tonumber\pgf@xb,\pgf@sys@tonumber\pgf@xc}}}%
|
|
}%
|
|
\pgf@marshal%
|
|
\else%
|
|
\edef\pgf@marshal{\noexpand\let\expandafter\noexpand\csname\string\color@#1\endcsname=%
|
|
\expandafter\noexpand\csname\string\color@#2\endcsname}%
|
|
\pgf@marshal%
|
|
\fi%
|
|
}
|
|
\def\pgfutil@emu@mix#1!#2!#3!#4\@nil{%
|
|
\expandafter\expandafter\expandafter\pgfutil@emu@unpack\csname\string\color@#1\endcsname%
|
|
\pgf@ya=\pgf@xa%
|
|
\pgf@yb=\pgf@xb%
|
|
\pgf@yc=\pgf@xc%
|
|
\expandafter\expandafter\expandafter\pgfutil@emu@unpack\csname\string\color@#3\endcsname%
|
|
\c@pgf@counta=#2\relax%
|
|
\c@pgf@countb=100\relax%
|
|
\advance\c@pgf@countb by-\c@pgf@counta\relax%
|
|
\pgf@xa=\c@pgf@countb\pgf@xa%
|
|
\advance\pgf@xa by\c@pgf@counta\pgf@ya%
|
|
\divide\pgf@xa by 100\relax%
|
|
\pgf@xb=\c@pgf@countb\pgf@xb%
|
|
\advance\pgf@xb by\c@pgf@counta\pgf@yb%
|
|
\divide\pgf@xb by 100\relax%
|
|
\pgf@xc=\c@pgf@countb\pgf@xc%
|
|
\advance\pgf@xc by\c@pgf@counta\pgf@yc%
|
|
\divide\pgf@xc by 100\relax%
|
|
}
|
|
\def\pgfutil@emu@unpack#1#2#3#4#5{%
|
|
\pgfutil@emu@@unpack#5\@nil%
|
|
}
|
|
\def\pgfutil@emu@@unpack#1,#2,#3\@nil{%
|
|
\pgf@xa=#1pt%
|
|
\pgf@xb=#2pt%
|
|
\pgf@xc=#3pt%
|
|
}
|
|
|
|
\def\pgfutil@emu@select#1#2#3#4#5{#5}
|
|
|
|
|
|
|
|
\let\definecolor=\pgfutil@definecolor
|
|
\let\color=\pgfutil@color
|
|
\let\colorlet=\pgfutil@colorlet
|
|
\let\extractcolorspec=\pgfutil@extractcolorspec
|
|
\let\convertcolorspec=\pgfutil@convertcolorspec
|
|
|
|
\def\XC@tgt@mod#1{#1}
|
|
\def\XC@sdef#1#2{\edef#1{#2}}
|
|
\def\XC@mod@cmyk{cmyk}
|
|
\def\XC@mod@rgb{rgb}
|
|
|
|
|
|
% pgfutil@minipage
|
|
|
|
\def\pgfutil@minipage[#1]#2{%
|
|
\hbox to#2\bgroup%
|
|
\hsize=#2\relax%
|
|
\vbox\bgroup\noindent%
|
|
}
|
|
\def\pgfutil@endminipage{\egroup\egroup}
|
|
|
|
|
|
|
|
% Driver detector (not so good):
|
|
|
|
\ifx\pdfoutput\@undefined\alloc@0\count\countdef\insc@unt\pdfoutput\fi
|
|
\ifx\pdfoutput\relax\alloc@0\count\countdef\insc@unt\pdfoutput\fi
|
|
|
|
\def\pgfutil@guessdriver{
|
|
\ifx\directlua\@undefined
|
|
\ifx\HCode\@undefined%
|
|
\ifcase\pdfoutput%
|
|
\ifx\XeTeXversion\@undefined
|
|
\def\pgfsysdriver{pgfsys-dvips.def}% hopefully
|
|
\else
|
|
\def\pgfsysdriver{pgfsys-xetex.def}% should be right
|
|
\fi
|
|
\else%
|
|
\def\pgfsysdriver{pgfsys-pdftex.def}% should be right
|
|
\fi%
|
|
\else%
|
|
\def\pgfsysdriver{pgfsys-tex4ht.def}% should be right
|
|
\fi%
|
|
\else
|
|
\def\pgfsysdriver{pgfsys-luatex.def}%
|
|
\fi
|
|
}
|
|
|
|
|
|
|
|
% Global colors
|
|
|
|
\let\pgfutil@globalcolorsfalse=\relax
|
|
\let\pgfutil@globalcolorstrue=\relax
|
|
|
|
|
|
|
|
% Font stuff
|
|
|
|
\def\pgfutil@font@tiny{\fam\z@\fiverm} % How to do this correctly?
|
|
\def\pgfutil@font@scriptsize{\fam\z@\sevenrm}
|
|
\def\pgfutil@font@footnotesize{\rm}
|
|
\def\pgfutil@font@small{\fam\z@\ninerm}
|
|
\def\pgfutil@font@normalsize{\rm}
|
|
\def\pgfutil@font@large{\rm}
|
|
\def\pgfutil@font@Large{\rm}
|
|
\def\pgfutil@font@huge{\rm}
|
|
\def\pgfutil@font@Huge{\rm}
|
|
|
|
\def\pgfutil@font@itshape{\it}
|
|
\def\pgfutil@font@bfseries{\bf}
|
|
|
|
\let\pgfutil@font@normalfont=\rm
|
|
|
|
\let\pgfutil@selectfont=\rm
|
|
|
|
|
|
% Extra counters, registers, boxes
|
|
|
|
\newcount\pgfutil@tempcnta
|
|
\newcount\pgfutil@tempcntb
|
|
|
|
\newbox\pgfutil@tempboxa
|
|
|
|
\let\pgfmath@tempdima\pgfutil@tempdima
|
|
\let\pgfmath@tempdima\pgfutil@tempdima
|
|
\let\pgfmath@tempcnta\pgfutil@tempcnta
|
|
\let\pgfmath@tempcntb\pgfutil@tempcntb
|
|
|
|
% From LaTeX
|
|
\newskip\pgfutil@flushglue
|
|
\pgfutil@flushglue=0pt plus 1fil
|
|
|
|
% Module stuff
|
|
|
|
\def\pgfutil@usemodule#1{\input #1.tex}
|
|
|
|
|
|
|
|
% End of file stuff
|
|
|
|
\let\pgfutil@origend=\end
|
|
\def\end{\the\pgfutil@everybye\pgfutil@origend}
|
|
|
|
% Link to existing stuff
|
|
\let\pgfutil@voidb@x\voidb@x
|
|
\let\pgfutil@toks@\toks@
|
|
|
|
|
|
|
|
|
|
% Hack shipout. Now use atbegshi
|
|
|
|
\def\pgfutil@insertatbegincurrentpagefrombox#1{%
|
|
\edef\pgf@temp{\the\wd\pgfutil@abb}%
|
|
\global\setbox\pgfutil@abb\hbox{%
|
|
\unhbox\pgfutil@abb
|
|
%
|
|
% the order in which \pgfutil@insertatbegincurrentpagefrombox
|
|
% matters unless we make the following -shift!
|
|
% To see this, consider writing two such statements. The second
|
|
% one will (naturally) be placed more to the right, although there
|
|
% is no apparent reason why it should.
|
|
%
|
|
% CF observed problems when placing patterns in XObjects without
|
|
% this skip (dvipdfmx driver for pgfplots shader=interp)
|
|
\hskip-\pgf@temp\relax
|
|
#1%
|
|
}%
|
|
}
|
|
\newbox\pgfutil@abb%
|
|
\def\pgfutil@insertatbegincurrentpage#1{%
|
|
\expandafter\gdef\expandafter\pgfutil@abc\expandafter{\pgfutil@abc#1}%
|
|
}
|
|
\let\pgfutil@abc\pgfutil@empty%
|
|
\def\pgfutil@insertatbegineverypage#1{%
|
|
\expandafter\gdef\expandafter\pgfutil@abe\expandafter{\pgfutil@abe#1}%
|
|
}
|
|
\let\pgfutil@abe\pgfutil@empty%
|
|
|
|
% Code by Heiko Oberdiek on ctt
|
|
\input atbegshi.sty\relax
|
|
\AtBeginShipout{%
|
|
\setbox\AtBeginShipoutBox=\vbox{%
|
|
\setbox0=\hbox{%
|
|
\begingroup
|
|
% the boxes \pgfutil@abe ("every page") and \pgfutil@abb ("current page")
|
|
% are used to generate pdf objects / dictionaries which are
|
|
% required for the graphics which are somewhere in the "real"
|
|
% page content.
|
|
% BUT: these pdf objects MUST NOT be affected by text layout
|
|
% shifts! Consequently, we have to undo \hoffset and \voffset
|
|
% (which are h/v shifts to the page layout).
|
|
%
|
|
% Note that this of importance for shadings. To be more
|
|
% specific: try out shadings with standalone (which uses
|
|
% \hoffset) and with xdvipdfmx (which appears to be more
|
|
% fragile than pdflatex) - they break unless we undo \hoffset
|
|
% and \voffset.
|
|
\ifdim\hoffset=0pt \else \hskip-\hoffset\fi
|
|
\pgfutil@abe
|
|
\unhbox\pgfutil@abb
|
|
\pgfutil@abc
|
|
\global\let\pgfutil@abc\pgfutil@empty
|
|
\ifdim\hoffset=0pt \else \hskip+\hoffset\fi
|
|
\endgroup
|
|
}%
|
|
\wd0=0pt\relax
|
|
\ht0=0pt\relax
|
|
\dp0=0pt\relax
|
|
% ... see remark above regarding \hoffset/\voffset:
|
|
\ifdim\voffset=0pt \else \vskip-\voffset\fi
|
|
\box0 %
|
|
\ifdim\voffset=0pt \else \vskip+\voffset\fi
|
|
\nointerlineskip
|
|
\box\AtBeginShipoutBox
|
|
}%
|
|
}%
|
|
% End of HO code
|
|
|
|
% The following is still messy and needs to be cleanup up (everything
|
|
% prefixed by pgfutil@):
|
|
|
|
%\def\PackageInfo#1#2{}
|
|
%\def\PackageWarning#1#2{\immediate\write17{Package #1: Warning! #2.}}%
|
|
%\def\PackageError#1#2#3{\immediate\write17{Package #1: Error! #2.}}%
|
|
\long\def\AtBeginDocument#1{#1}%
|
|
|
|
% pgfcalendar uses translations
|
|
|
|
\def\pgfutil@translate#1{#1} % is there a translator package for plain?
|
|
|
|
% e-TeX primitives
|
|
|
|
\pgfutil@IfUndefined{protected}{
|
|
\def\pgfutil@protected{}%
|
|
}{%
|
|
\let\pgfutil@protected\protected
|
|
}
|
|
|
|
\endinput
|
|
|