diff options
Diffstat (limited to 'Master/texmf-dist/tex/generic/pgf/systemlayer')
14 files changed, 697 insertions, 369 deletions
diff --git a/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf-via-dvi.def b/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf-via-dvi.def index 5cbf2fd66ca..1605a956260 100644 --- a/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf-via-dvi.def +++ b/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf-via-dvi.def @@ -7,7 +7,7 @@ % % See the file doc/generic/pgf/licenses/LICENSE for more details. -\ProvidesFileRCS $Header: /cvsroot/pgf/pgf/generic/pgf/systemlayer/pgfsys-common-pdf-via-dvi.def,v 1.7 2008/05/19 12:52:49 tantau Exp $ +\ProvidesFileRCS $Header: /cvsroot/pgf/pgf/generic/pgf/systemlayer/pgfsys-common-pdf-via-dvi.def,v 1.8 2013/07/12 13:52:50 tantau Exp $ % Common driver commands for all drivers that produce pdf via the % detour of a dvi file @@ -23,6 +23,7 @@ % not show anything {\hbox to 0pt{\pgfutil@font@normalfont\pgfutil@selectfont.\hss}}% enforce font change \pgfsys@invoke{0 Tr}% + \pgfsys@invoke{0 J [] 0 d}% reset line cap and dash \wd#1=0pt% \ht#1=0pt% \dp#1=0pt% @@ -41,6 +42,7 @@ \pgflowlevelsynccm% \pgfsys@invoke{q -1 0 0 -1 0 0 cm}% \special{pdf: content -1 0 0 -1 0 0 cm q}% translate to original coordinate system + \pgfsys@invoke{0 J [] 0 d}% reset line cap and dash \wd#1=0pt% \ht#1=0pt% \dp#1=0pt% diff --git a/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.def b/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.def index c48d1c15238..32906ad3b64 100644 --- a/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.def +++ b/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.def @@ -7,7 +7,7 @@ % % See the file doc/generic/pgf/licenses/LICENSE for more details. -\ProvidesFileRCS $Header: /cvsroot/pgf/pgf/generic/pgf/systemlayer/pgfsys-common-pdf.def,v 1.10 2008/05/19 12:52:49 tantau Exp $ +\ProvidesFileRCS $Header: /cvsroot/pgf/pgf/generic/pgf/systemlayer/pgfsys-common-pdf.def,v 1.13 2013/10/10 12:00:15 tantau Exp $ % Common driver commands for all drivers that produce pdf @@ -63,7 +63,6 @@ % Opacity \def\pgfsys@stroke@opacity#1{% \expandafter\ifx\csname pgf@sys@pdf@so@#1\endcsname\relax% - % Hmm... define... \expandafter\gdef\csname pgf@sys@pdf@so@#1\endcsname{/pgf@CA#1}% \pgfutil@addpdfresource@extgs{/pgf@CA#1 << /CA #1 >>}%<< \fi% @@ -71,13 +70,40 @@ } \def\pgfsys@fill@opacity#1{% \expandafter\ifx\csname pgf@sys@pdf@fo@#1\endcsname\relax% - % Hmm... define... \expandafter\gdef\csname pgf@sys@pdf@fo@#1\endcsname{/pgf@ca#1}% \pgfutil@addpdfresource@extgs{/pgf@ca#1 << /ca #1 >>}%<< \fi% \pgfsysprotocol@literal{\csname pgf@sys@pdf@fo@#1\endcsname\space gs}% } - +\def\pgfsys@blend@mode#1{% + \expandafter\ifx\csname pgf@sys@pdf@bm@#1\endcsname\relax% + \expandafter\let\expandafter\pgf@temp\csname pgf@sys@pdf@blend@mode@map@#1\endcsname% + \expandafter\xdef\csname pgf@sys@pdf@bm@#1\endcsname{/pgf@bm\pgf@temp}% + \ifx\pgf@temp\relax% + \pgferror{Unknown blend mode '#1'}% + \def\pgf@temp{Normal}% + \fi% + \edef\pgf@temp{/pgf@bm\pgf@temp << /BM [ /\pgf@temp ] >>}%<< + \expandafter\pgfutil@addpdfresource@extgs\expandafter{\pgf@temp}% + \fi% + \pgfsysprotocol@literal{\csname pgf@sys@pdf@bm@#1\endcsname\space gs}% +} +\expandafter\def\csname pgf@sys@pdf@blend@mode@map@normal\endcsname{Normal} +\expandafter\def\csname pgf@sys@pdf@blend@mode@map@multiply\endcsname{Multiply} +\expandafter\def\csname pgf@sys@pdf@blend@mode@map@screen\endcsname{Screen} +\expandafter\def\csname pgf@sys@pdf@blend@mode@map@overlay\endcsname{Overlay} +\expandafter\def\csname pgf@sys@pdf@blend@mode@map@darken\endcsname{Darken} +\expandafter\def\csname pgf@sys@pdf@blend@mode@map@lighten\endcsname{Lighten} +\expandafter\def\csname pgf@sys@pdf@blend@mode@map@color dodge\endcsname{ColorDodge} +\expandafter\def\csname pgf@sys@pdf@blend@mode@map@color burn\endcsname{ColorBurn} +\expandafter\def\csname pgf@sys@pdf@blend@mode@map@hard light\endcsname{HardLight} +\expandafter\def\csname pgf@sys@pdf@blend@mode@map@soft light\endcsname{SoftLight} +\expandafter\def\csname pgf@sys@pdf@blend@mode@map@difference\endcsname{Difference} +\expandafter\def\csname pgf@sys@pdf@blend@mode@map@exclusion\endcsname{Exclusion} +\expandafter\def\csname pgf@sys@pdf@blend@mode@map@saturation\endcsname{Saturation} +\expandafter\def\csname pgf@sys@pdf@blend@mode@map@color\endcsname{Color} +\expandafter\def\csname pgf@sys@pdf@blend@mode@map@hue\endcsname{Hue} +\expandafter\def\csname pgf@sys@pdf@blend@mode@map@luminosity\endcsname{Luminosity} \endinput diff --git a/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-svg.def b/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-svg.def index fa1cf889bd4..f2edbedf3c9 100644 --- a/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-svg.def +++ b/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-svg.def @@ -7,7 +7,7 @@ % % See the file doc/generic/pgf/licenses/LICENSE for more details. -\ProvidesFileRCS $Header: /cvsroot/pgf/pgf/generic/pgf/systemlayer/pgfsys-common-svg.def,v 1.21 2009/03/20 10:31:30 tantau Exp $ +\ProvidesFileRCS $Header: /cvsroot/pgf/pgf/generic/pgf/systemlayer/pgfsys-common-svg.def,v 1.24 2013/08/28 11:00:54 tantau Exp $ % Driver commands for svg @@ -26,13 +26,16 @@ \def\pgf@sys@addtosvgpath#1{\pgfutil@g@addto@macro\pgf@sys@svgpath{#1\space}} \def\pgf@sys@flushsvgpath{\pgfsysprotocol@literal{\pgf@sys@svgpath}\global\let\pgf@sys@svgpath=\pgfutil@empty} \def\pgf@sys@svg@gs#1{% - {\pgfsysprotocol@literal{<g #1>\Hnewline }}\global\advance\pgf@sys@svg@scopecount by1\relax% + {\pgfsysprotocol@literal{<g #1>\pgfsys@svg@newline }}\global\advance\pgf@sys@svg@scopecount by1\relax% } \newcount\pgf@sys@svg@objectcount -\let\Hnewline=\pgfutil@empty -\catcode`\%=12 -\def\pgf@sys@svg@percentchar{%} -\catcode`\%=14 + +{\catcode`\%=12 +\gdef\pgf@sys@svg@percentchar{%} +} +{\catcode`\#=11 +\gdef\pgf@sys@svg@hash{#} +} % Path construction: \def\pgfsys@lineto#1#2{\pgf@sys@addtosvgpath{L }\pgf@sys@svgnum{#1}\pgf@sys@svgnum{#2}} @@ -58,14 +61,14 @@ \pgfsysprotocol@literal{<clipPath id="pgfcp\the\pgf@sys@svg@objectcount"> <path id="pgfpath\the\pgf@sys@svg@objectcount" d="}% \pgf@sys@flushsvgpath% - \pgfsysprotocol@literal{"/>\Hnewline </clipPath>\Hnewline } - \pgfsysprotocol@literal{<use xlink:href="\#pgfpath\the\pgf@sys@svg@objectcount" #1/>\Hnewline }% + \pgfsysprotocol@literal{"/>\pgfsys@svg@newline </clipPath>\pgfsys@svg@newline } + \pgfsysprotocol@literal{<use xlink:href="\#pgfpath\the\pgf@sys@svg@objectcount" #1/>\pgfsys@svg@newline }% \pgf@sys@svg@gs{clip-path="url(\#pgfcp\the\pgf@sys@svg@objectcount)"} \pgf@sys@svg@clipnextfalse% \else% \pgfsysprotocol@literal{<path d="}% \pgf@sys@flushsvgpath% - \pgfsysprotocol@literal{" #1/>\Hnewline } + \pgfsysprotocol@literal{" #1/>\pgfsys@svg@newline } \fi% } \def\pgfsys@stroke{\pgf@sys@svg@possiblyclippedpath{style="fill:none"}} @@ -78,7 +81,7 @@ \pgfsysprotocol@literal{<clipPath id="pgfcp\the\pgf@sys@svg@objectcount"> <path d="}% \pgf@sys@flushsvgpath% - \pgfsysprotocol@literal{"/>\Hnewline </clipPath>\Hnewline } + \pgfsysprotocol@literal{"/>\pgfsys@svg@newline </clipPath>\pgfsys@svg@newline } \pgf@sys@svg@gs{clip-path="url(\#pgfcp\the\pgf@sys@svg@objectcount)"} \pgf@sys@svg@clipnextfalse% \else% @@ -91,7 +94,15 @@ % Transparency: \def\pgfsys@stroke@opacity#1{\pgf@sys@svg@gs{stroke-opacity="#1"}} -\def\pgfsys@fill@opacity#1{\pgf@sys@svg@gs{fill-opacity="#1"}} +\def\pgfsys@fill@opacity#1{\pgf@sys@svg@gs{fill-opacity="#1"}\def\pgf@sys@svg@opacity{#1}} +\def\pgf@sys@svg@opacity{1} +\def\pgfsys@transparencygroupfrombox#1{% + \setbox#1=\hbox{% + \pgfsys@invoke{<g opacity="\pgf@sys@svg@opacity" stroke-opacity="1" fill-opacity="1">\pgfsys@svg@newline }% + \box#1% + \pgfsys@invoke{</g>\pgfsys@svg@newline }% + }% +} % Transformation: \def\pgfsys@transformcm#1#2#3#4#5#6{% @@ -104,11 +115,11 @@ \edef\pgf@sys@svg@thescopecount{\the\pgf@sys@svg@scopecount}% \begingroup% \pgf@sys@svg@scopecount=1\relax% - \pgfsysprotocol@literal{<g>\Hnewline }% + \pgfsysprotocol@literal{<g>\pgfsys@svg@newline }% } \def\pgfsys@endscope{% \loop% - \pgfsysprotocol@literal{</g>\Hnewline }% + \pgfsysprotocol@literal{</g>\pgfsys@svg@newline }% \advance\pgf@sys@svg@scopecount by-1\relax% \ifnum\pgf@sys@svg@scopecount>0\relax% \repeat% @@ -138,8 +149,6 @@ % Color management % -\def\XC@mcolor{\ifpgfpicture\pgfsetcolor{.}\fi} - \def\pgf@sys@svg@color@rgb#1,#2,#3\relax{% {% \pgf@xa=#1pt% @@ -257,7 +266,7 @@ \divide\pgf@x by \c@pgf@counta\relax% \pgf@sys@svg@addtostops{\pgf@sys@tonumber\pgf@x" stop-color="}% \pgf@sys@svg@shading@dorgb#3% - \pgf@sys@svg@addtostops{"/>\noexpand\Hnewline}% + \pgf@sys@svg@addtostops{"/>\noexpand\pgfsys@svg@newline}% } \def\pgf@sys@svg@shading@dorgb#1#2#3{% \pgf@sys@svg@color@rgb#1,#2,#3\relax% @@ -277,9 +286,9 @@ {% \pgf@parsefunc{#3}% \global\advance\pgf@sys@svg@objectcount by1\relax% - \pgf@sys@svg@addtostops{<linearGradient id="pgfsh\the\pgf@sys@svg@objectcount">\noexpand\Hnewline} + \pgf@sys@svg@addtostops{<linearGradient id="pgfsh\the\pgf@sys@svg@objectcount">\noexpand\pgfsys@svg@newline} \pgf@sys@svg@shading@stops% - \pgf@sys@svg@addtostops{</linearGradient>\noexpand\Hnewline}% + \pgf@sys@svg@addtostops{</linearGradient>\noexpand\pgfsys@svg@newline}% \pgf@process{\pgfpoint{\pgf@sys@shading@end@pos}{#2}}% \expandafter\xdef\csname @pgfshading#1!\endcsname{% \def\noexpand\pgf@sys@svg@sh@defs{\noexpand\pgfsysprotocol@literal{\pgf@sys@svg@thestops}}% @@ -287,7 +296,7 @@ width="\pgf@sys@tonumber{\pgf@x}" height="\pgf@sys@tonumber{\pgf@y}" style="fill:url(\noexpand\#pgfsh\the\pgf@sys@svg@objectcount); - stroke:none"/>\noexpand\Hnewline}}% + stroke:none"/>\noexpand\pgfsys@svg@newline}}% \def\noexpand\pgf@sys@svg@pos{\noexpand\pgfpoint{\the\pgf@x}{\the\pgf@y}}% }% }% @@ -308,9 +317,9 @@ \global\advance\pgf@sys@svg@objectcount by1\relax% \pgf@sys@svg@addtostops{<linearGradient id="pgfsh\the\pgf@sys@svg@objectcount" - gradientTransform="rotate(90)">\noexpand\Hnewline} + gradientTransform="rotate(90)">\noexpand\pgfsys@svg@newline} \pgf@sys@svg@shading@stops% - \pgf@sys@svg@addtostops{</linearGradient>\noexpand\Hnewline}% + \pgf@sys@svg@addtostops{</linearGradient>\noexpand\pgfsys@svg@newline}% \pgf@process{\pgfpoint{\pgf@sys@shading@end@pos}{#2}}% \expandafter\xdef\csname @pgfshading#1!\endcsname{% \def\noexpand\pgf@sys@svg@sh@defs{\noexpand\pgfsysprotocol@literal{\pgf@sys@svg@thestops}}% @@ -318,7 +327,7 @@ width="\pgf@sys@tonumber{\pgf@y}" height="\pgf@sys@tonumber{\pgf@x}" style="fill:url(\noexpand\#pgfsh\the\pgf@sys@svg@objectcount); - stroke:none"/>\noexpand\Hnewline}}% + stroke:none"/>\noexpand\pgfsys@svg@newline}}% \def\noexpand\pgf@sys@svg@pos{\noexpand\pgfpoint{\the\pgf@y}{\the\pgf@x}}% }% }% @@ -343,9 +352,9 @@ id="pgfsh\the\pgf@sys@svg@objectcount" fx="\pgf@sys@tonumber\pgf@x" fy="\pgf@sys@tonumber\pgf@y" - >\noexpand\Hnewline} + >\noexpand\pgfsys@svg@newline} \pgf@sys@svg@shading@stops% - \pgf@sys@svg@addtostops{</radialGradient>\noexpand\Hnewline}% + \pgf@sys@svg@addtostops{</radialGradient>\noexpand\pgfsys@svg@newline}% \pgf@xa=\pgf@sys@shading@end@pos% \pgf@xb=2\pgf@xa% \expandafter\xdef\csname @pgfshading#1!\endcsname{% @@ -355,7 +364,7 @@ cy="\pgf@sys@tonumber{\pgf@xa}" r="\pgf@sys@tonumber{\pgf@xa}" style="fill:url(\noexpand\#pgfsh\the\pgf@sys@svg@objectcount); - stroke:none"/>\noexpand\Hnewline}}% + stroke:none"/>\noexpand\pgfsys@svg@newline}}% \def\noexpand\pgf@sys@svg@pos{\noexpand\pgfpoint{\the\pgf@xb}{\the\pgf@xb}}% }% }% @@ -364,6 +373,8 @@ % Patterns +\iffalse % comment until interpage support is available + \def\pgfsys@declarepattern#1#2#3#4#5#6#7#8#9{% % Start building the pattern dictionary: \pgf@xa=#2\relax% @@ -410,6 +421,36 @@ \pgf@sys@svg@gs@color{fill="url(\#pgfpat#1)"}% } +\fi + + + + +% Fadings + +% +% Opacity masks +% +% \def\pgfsys@fadingfrombox#1#2{% +% \setbox#2=\hbox{% +% \pgfsys@invoke{<mask id="pgfmask#1">}% +% \box#2% +% \pgfsys@invoke{</mask>}% +% }% +% \wd#2=0pt% +% \ht#2=0pt% +% \dp#2=0pt% +% \unskip\box#2% +% } +% \def\pgfsys@usefading#1#2#3#4#5#6#7{% +% \pgf@sys@svg@gs@color{mask="url(\#pgfmask#1)"}% +% } + + + +% + +\def\pgfutil@color{\pgfsetcolor} \endinput diff --git a/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-dvipdfm.def b/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-dvipdfm.def index 4124784d999..0ad85414779 100644 --- a/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-dvipdfm.def +++ b/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-dvipdfm.def @@ -7,7 +7,7 @@ % % See the file doc/generic/pgf/licenses/LICENSE for more details. -\ProvidesFileRCS $Header: /cvsroot/pgf/pgf/generic/pgf/systemlayer/pgfsys-dvipdfm.def,v 1.19 2008/05/14 16:05:56 tantau Exp $ +\ProvidesFileRCS $Header: /cvsroot/pgf/pgf/generic/pgf/systemlayer/pgfsys-dvipdfm.def,v 1.21 2013/07/16 16:03:13 tantau Exp $ % Driver commands for dvipdfm @@ -23,6 +23,13 @@ \def\pgfsys@invoke#1{\special{pdf: content Q #1 q}} % ugly, but necessary... +\def\pgfsys@papersize#1#2{% +% \expandafter\gdef\expandafter\pgfsys@atbegindocument% +% \expandafter{\pgfsys@atbegindocument + \special{papersize=#1,#2}% +% } +} + % % Position tracking (needs pdftex >= 1.40.0-alpha-20051205 in dvi mode) diff --git a/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-dvipdfmx.def b/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-dvipdfmx.def index b9669434a4a..a5806aeab78 100644 --- a/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-dvipdfmx.def +++ b/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-dvipdfmx.def @@ -7,7 +7,7 @@ % % See the file doc/generic/pgf/licenses/LICENSE for more details. -\ProvidesFileRCS $Header: /cvsroot/pgf/pgf/generic/pgf/systemlayer/pgfsys-dvipdfmx.def,v 1.3 2009/05/22 07:25:48 jinhwancho Exp $ +\ProvidesFileRCS $Header: /cvsroot/pgf/pgf/generic/pgf/systemlayer/pgfsys-dvipdfmx.def,v 1.12 2013/08/28 11:00:54 tantau Exp $ % Driver commands for dvipdfmx % @@ -20,6 +20,7 @@ % \input pgfsys-common-pdf.def + % For unique object name: \newcount\pgfsys@objnum\pgfsys@objnum\@ne @@ -38,41 +39,65 @@ % To avoid this problem, we need to change the color temporarily to another. % % We assume that black is the default color when no color is specified. -\def\start@force@reset@color{% +\def\pgfsys@dvipdfmx@start@force@reset@color{% \special{pdf:bcolor [1]}% \special{pdf:bcolor [0]}% } -\def\stop@force@reset@color{% +\def\pgfsys@dvipdfmx@stop@force@reset@color{% \special{pdf:ecolor}% \special{pdf:ecolor}% } + +\def\pgfsys@dvipdfmx@suspendcontent{% + \special{pdf:code q -1 0 0 -1 0 0 cm q}% + \special{pdf: econtent}% + \special{pdf: bcontent}% + \special{pdf:code -1 0 0 -1 0 0 cm}% + \special{pdf:code q}% translate to original system + \special{pdf: econtent}% +} + +\def\pgfsys@dvipdfmx@unsuspendcontent{% + \special{pdf: bcontent}% + \special{pdf:code Q Q Q}% +} + +\def\pgfsys@hbox#1{% + \pgfsys@beginscope% + \setbox#1=\hbox{\box#1}% + \wd#1=0pt% + \ht#1=0pt% + \dp#1=0pt% + \pgfsys@dvipdfmx@suspendcontent% + \pgfsys@invoke{0 J [] 0 d}% reset line cap and dash + \pgfsys@dvipdfmx@start@force@reset@color% + \box#1% + \pgfsys@dvipdfmx@stop@force@reset@color% + \pgfsys@dvipdfmx@unsuspendcontent% + \pgfsys@endscope% +} + % We cannot use many codes in pgfsys-common-pdf-via-dvi.def. % So it is rewritten here (with some bugs fixed). \def\pgfsys@hboxsynced#1{% - {% - \pgfsys@beginscope% - \setbox\pgf@hbox=\hbox{% - \hskip\pgf@pt@x% - \raise\pgf@pt@y\hbox{% - \pgf@pt@x=0pt% - \pgf@pt@y=0pt% - % The order of `pdf:bcontent' is important here. It should be - % followed by \pgflowlevelsynccm, not reverse order. - \special{pdf:bcontent}% - \pgflowlevelsynccm% - \start@force@reset@color% - \pgfsys@hbox#1% - \stop@force@reset@color% - \special{pdf:econtent}}% - \hss% - }% - \wd\pgf@hbox=0pt% - \ht\pgf@hbox=0pt% - \dp\pgf@hbox=0pt% - \box\pgf@hbox% - \pgfsys@endscope% - }% + \pgfsys@beginscope% + \setbox#1=\hbox{\box#1}% + \wd#1=0pt% + \ht#1=0pt% + \dp#1=0pt% + \pgfsys@dvipdfmx@suspendcontent% + \pgfsys@invoke{0 J [] 0 d}% reset line cap and dash + \pgfsys@dvipdfmx@start@force@reset@color% + \pgf@sys@bp@correct\pgf@pt@x% + \pgf@sys@bp@correct\pgf@pt@y% + \special{pdf:btrans matrix \pgf@pt@aa\space \pgf@pt@ab\space \pgf@pt@ba\space \pgf@pt@bb\space + \pgf@sys@tonumber{\pgf@pt@x} \pgf@sys@tonumber{\pgf@pt@y}}% + \box#1% + \special{pdf:etrans}% + \pgfsys@dvipdfmx@stop@force@reset@color% + \pgfsys@dvipdfmx@unsuspendcontent% + \pgfsys@endscope% } % All text materials between `pdf:bcontent' and `pdf:econtent' are @@ -202,7 +227,7 @@ \def\pgfsys@markposition##1{% \pdfsavepos% \edef\pgf@temp{##1}% - \expandafter\write\expandafter\pgfutil@auxout\expandafter{% + \expandafter\pgfutil@writetoaux\expandafter{% \expandafter\noexpand\expandafter\pgfsyspdfmark\expandafter{\pgf@temp}{\the\pdflastxpos}{\the\pdflastypos}}% } \def\pgfsyspdfmark##1##2##3{% @@ -272,7 +297,7 @@ % Image Mask came from pgfsys-pdftex.def % generic/pgf/basiclayer/pgfcoreimage.code.tex must be modified! \def\pgfsys@defineimage{% width, height, page number - \ifx\includegraphics\relax + \ifx\includegraphics\undefined \ifx\pgf@imagewidth\pgfutil@empty\edef\pgf@imagewidth{1bp}\fi% width? \ifx\pgf@imageheight\pgfutil@empty\edef\pgf@imageheight{1bp}\fi% height? \ifx\pgf@imagepage\pgfutil@empty\else\edef\pgf@imagepage{ page \pgf@imagepage}\fi% @@ -316,18 +341,32 @@ \pgf@sys@bp@correct\pgf@xc% \pgf@sys@bp@correct\pgf@yc% % Now create the pattern object: - \special{pdf:stream @pgf@patternobject@#1 (#8) - << /Type /Pattern - /PatternType 1 - /PaintType \ifnum#9=0 2 \else 1 \fi - /TilingType 1 - /BBox [\pgf@sys@tonumber\pgf@xa\space\pgf@sys@tonumber\pgf@ya\space\pgf@sys@tonumber\pgf@xb\space\pgf@sys@tonumber\pgf@yb] - /XStep \pgf@sys@tonumber\pgf@xc\space - /YStep \pgf@sys@tonumber\pgf@yc\space - /Resources << >> %<< - >>}% - \pgfutil@addpdfresource@patterns{/pgfpat#1\space @pgf@patternobject@#1}% + \pgfsys@dvipdfmx@patternobj{% + \pgfsys@dvipdfmx@stream{@pgfpatternobject#1}{#8}{% + /Type /Pattern + /PatternType 1 + /PaintType \ifnum#9=0 2 \else 1 \fi + /TilingType 1 + /BBox [\pgf@sys@tonumber\pgf@xa\space\pgf@sys@tonumber\pgf@ya\space\pgf@sys@tonumber\pgf@xb\space\pgf@sys@tonumber\pgf@yb] + /XStep \pgf@sys@tonumber\pgf@xc\space + /YStep \pgf@sys@tonumber\pgf@yc\space + /Resources << >> %<< + }% + }% + \pgfutil@addpdfresource@patterns{/pgfpat#1\space @pgfpatternobject#1}% } + +% hook for xdvipdfmx: +\def\pgfsys@dvipdfmx@patternobj#1{% + #1% +}% + +% hook for xdvipdfmx: +\def\pgfsys@dvipdfmx@stream#1#2#3{% + \special{pdf:stream #1 (#2) << #3 >>}% +}% + + \def\pgfsys@setpatternuncolored#1#2#3#4{% \pgfsysprotocol@literal{/pgfprgb cs #2 #3 #4 /pgfpat#1\space scn}% } @@ -356,6 +395,12 @@ \ht#2=0pt% \dp#2=0pt% \box#2% + \special{pdf:put @resources + << + \ifpgf@sys@pdf@extgs@exists /ExtGState @pgfextgs \fi + \ifpgf@sys@pdf@patterns@exists /Pattern @pgfpatterns \fi + \ifpgf@sys@pdf@colorspaces@exists /ColorSpace @pgfcolorspaces \fi + >>}% << \special{pdf:exobj <</Group <</S/Transparency /CS/DeviceGray>> >>}}}\@tempa% \expandafter\xdef\csname pgfsmaskxform@#1\endcsname{\the\pgfsys@objnum}% }% @@ -364,7 +409,7 @@ } \def\pgfsys@usefading#1#2#3#4#5#6#7{% \expandafter\ifx\csname pgfsmaskxform@#1\endcsname\relax% - \PackageError{pgf}{Undefined fading '#1'}{}% + \pgferror{Undefined fading '#1'}% \else% {% \expandafter\ifx\csname pgfsmask@#1\endcsname\relax% @@ -405,7 +450,16 @@ \ht#1=0pt% \dp#1=0pt% \hskip\pgf@picminx bp\box#1\hskip-\pgf@picminx bp% - \special{pdf:exobj <</Group <</S/Transparency>> >>}}}\@tempa% + \special{pdf:put @resources + << + \ifpgf@sys@pdf@extgs@exists /ExtGState @pgfextgs \fi + \ifpgf@sys@pdf@patterns@exists /Pattern @pgfpatterns \fi + \ifpgf@sys@pdf@colorspaces@exists /ColorSpace @pgfcolorspaces \fi + >>}% << + \special{pdf:exobj <</Group << /S /Transparency + /I \ifpgfsys@transparency@group@isolated true \else false \fi + /K \ifpgfsys@transparency@group@knockout true \else false \fi>> >>}% + }}\@tempa% \special{pdf:uxobj @pgftransgroup\the\pgfsys@objnum}% }% \global\advance\pgfsys@objnum\@ne% @@ -421,6 +475,13 @@ \fi \fi +\def\pgfsys@papersize#1#2{% +% \expandafter\gdef\expandafter\pgfsys@atbegindocument%% +% \expandafter{\pgfsys@atbegindocument + \special{papersize=#1,#2}% +% } +} + \endinput %%% Local Variables: diff --git a/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-dvips.def b/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-dvips.def index cec3fa14fda..3847d14a6c8 100644 --- a/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-dvips.def +++ b/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-dvips.def @@ -7,7 +7,7 @@ % % See the file doc/generic/pgf/licenses/LICENSE for more details. -\ProvidesFileRCS $Header: /cvsroot/pgf/pgf/generic/pgf/systemlayer/pgfsys-dvips.def,v 1.20 2008/04/03 17:04:45 tantau Exp $ +\ProvidesFileRCS $Header: /cvsroot/pgf/pgf/generic/pgf/systemlayer/pgfsys-dvips.def,v 1.23 2013/07/16 16:03:13 tantau Exp $ % Driver commands for dvips @@ -52,7 +52,8 @@ \def\pgfsys@imagesuffixlist{.epsi:.eps:.ps:} \def\pgfsys@papersize#1#2{% - \expandafter\gdef\expandafter\pgfsys@atbegindocument\expandafter{\pgfsys@atbegindocument\special{papersize=#1,#2}}} + \special{papersize=#1,#2}% +}% \expandafter\gdef\expandafter\pgfsys@atbegindocument\expandafter{\pgfsys@atbegindocument\special{papersize=#1,#2}}} \expandafter\gdef\expandafter\pgfsys@atbegindocument\expandafter{\pgfsys@atbegindocument% \pgf@sys@postscript@header{ @@ -74,10 +75,9 @@ /pgfpd{/delta globaldict /pgfdelta get def}bind def % put delta /.setopacityalpha where {pop} {/.setopacityalpha{pop}def} ifelse % install .setopacityalpha /.pgfsetfillopacityalpha{/pgffoa exch def - /pgffill{gsave pgffoa .setopacityalpha fill 1 .setopacityalpha newpath fill grestore}bind def - /pgfeofill{gsave pgffoa .setopacityalpha eofill 1 .setopacityalpha newpath eofill grestore}bind def}bind def - /.pgfsetstrokeopacityalpha{/pgfsoa exch def - /pgfstr{gsave pgfsoa .setopacityalpha stroke grestore}bind def}bind def + /pgffill{gsave pgffoa .setopacityalpha fill 1 .setopacityalpha newpath fill grestore newpath}bind def + /pgfeofill{gsave pgffoa .setopacityalpha eofill 1 .setopacityalpha newpath eofill grestore newpath}bind def}bind def + /.pgfsetstrokeopacityalpha{/pgfsoa exch def /pgfstr{gsave pgfsoa .setopacityalpha stroke grestore newpath}bind def}bind def /pgffoa 1 def /pgfsoa 1 def end @@ -101,7 +101,7 @@ \def\pgfsys@markposition#1{% \pdfsavepos% \edef\pgf@temp{#1}% - \expandafter\write\expandafter\pgfutil@auxout\expandafter{% + \expandafter\pgfutil@writetoaux\expandafter{% \expandafter\noexpand\expandafter\pgfsyspdfmark\expandafter{\pgf@temp}{\the\pdflastxpos}{\the\pdflastypos}}% } diff --git a/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-dvisvgm.def b/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-dvisvgm.def new file mode 100644 index 00000000000..6225c5abc21 --- /dev/null +++ b/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-dvisvgm.def @@ -0,0 +1,78 @@ +% 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. + +\ProvidesFileRCS $Header: /cvsroot/pgf/pgf/generic/pgf/systemlayer/pgfsys-dvisvgm.def,v 1.3 2013/08/23 09:50:22 tantau Exp $ + + +% Driver commands for dvisvgm + +% +% Load common pdf commands: +% +\input pgfsys-common-svg.def + +\def\pgfsys@invoke#1{{\let\#\pgf@sys@svg@hash\special{dvisvgm:raw #1}}} +\def\pgfsys@beginpicture{\pgfsys@invoke{<g transform="translate({?x},{?y}) scale(1,-1)">}} +\def\pgfsys@endpicture{\pgfsys@invoke{</g>}} + +\def\pgfsys@svg@newline{{?nl}} + + +\def\pgfsys@hbox#1{% + {% + \setbox#1=\hbox{\box#1}% + \wd#1=0pt% + \ht#1=0pt% + \dp#1=0pt% + \pgfsetcolor{.}% + \pgfsys@invoke{<g stroke="none" transform="scale(-1,1) translate({?x},{?y}) scale(-1,-1)">}\box#1\pgfsys@invoke{</g>}% + }% +} + +\def\pgfsys@shadingoutsidepgfpicture#1{% + \begingroup% + #1% + \setbox\pgfpic=\hbox to0pt{% + \pgfsys@beginpicture% + \pgfsys@beginscope% + \pgf@sys@svg@sh@defs% + \pgf@sys@svg@sh% + \pgfsys@endscope% + \pgfsys@endpicture% + \hss% + }% + \pgf@process{\pgf@sys@svg@pos}% + \pgf@picminx=0pt% + \pgf@picminy=0pt% + \pgf@picmaxx=\pgf@x% + \pgf@picmaxy=\pgf@y% + \def\pgf@trimleft@final{0pt}% + \def\pgf@trimright@final{0pt}% + \def\pgf@shift@baseline{0pt}% + \pgfsys@typesetpicturebox\pgfpic% + \endgroup% +} + +\def\pgfsys@shadinginsidepgfpicture#1{% + #1% + \pgf@sys@svg@sh@defs% hmmm.... + \pgf@process{\pgf@sys@svg@pos} + \pgf@xa=-.5\pgf@x% + \pgf@ya=-.5\pgf@y% + \pgfsysprotocol@literal{<g transform="translate(\pgf@sys@tonumber{\pgf@xa},\pgf@sys@tonumber{\pgf@ya})">}% + \pgf@sys@svg@sh% + \pgfsysprotocol@literal{</g>}% +} + +\endinput + + +%%% Local Variables: +%%% mode: latex +%%% End: diff --git a/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def b/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def index 8627a611077..b9ee92c3622 100644 --- a/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def +++ b/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def @@ -7,7 +7,7 @@ % % See the file doc/generic/pgf/licenses/LICENSE for more details. -\ProvidesFileRCS $Header: /cvsroot/pgf/pgf/generic/pgf/systemlayer/pgfsys-pdftex.def,v 1.26 2009/05/22 07:25:48 jinhwancho Exp $ +\ProvidesFileRCS $Header: /cvsroot/pgf/pgf/generic/pgf/systemlayer/pgfsys-pdftex.def,v 1.33 2013/07/18 10:34:44 tantau Exp $ % Driver commands for pdf @@ -52,8 +52,7 @@ \ifx\pgf@imagepage\pgfutil@empty\else\edef\pgf@imagepage{ page \pgf@imagepage }\fi% \ifx\pdfximage\@undefined% old version of pdflatex \ifx\pgf@imagepage\pgfutil@empty\else% - \PackageWarning{pgf}{Page selection not supported. Ignoring - page selection}% + \pgfwarning{Page selection not supported. Ignoring page selection}% \fi% \setbox\pgfutil@tempboxa=\hbox{% \pdfimage \pgf@imageheight \pgf@imagewidth {\pgf@filename}}% @@ -81,7 +80,7 @@ \pgfmathparse{#2}% \setbox\pgfutil@tempboxa=\hbox to\pgf@max{\vbox to\pgfmathresult pt{\vfil\pgfsys@invoke{/Sh sh}}\hfil}% \pgf@process{\pgfpoint{\pgf@max}{#2}}% - \pdfxform resources {% + \immediate\pdfxform resources {% /Shading << /Sh << /ShadingType 2 /ColorSpace /DeviceRGB /Domain [\pgf@pdfparseddomain] @@ -97,7 +96,7 @@ \pgfmathparse{#2}% \setbox\pgfutil@tempboxa=\hbox to\pgfmathresult pt{\vbox to\pgf@max{\vfil\pgfsys@invoke{/Sh sh}}\hfil}% \pgf@process{\pgfpoint{#2}{\pgf@max}}% - \pdfxform resources {% + \immediate\pdfxform resources {% /Shading << /Sh << /ShadingType 2 /ColorSpace /DeviceRGB /Domain [\pgf@pdfparseddomain] @@ -121,7 +120,7 @@ \pgf@sys@bp@correct{\pgf@y}% \pgf@sys@bp@correct{\pgf@xa}% \pgf@sys@bp@correct{\pgf@ya}% - \pdfxform resources {% + \immediate\pdfxform resources {% /Shading << /Sh << /ShadingType 3 /ColorSpace /DeviceRGB /Domain [\pgf@pdfparseddomain] @@ -218,41 +217,14 @@ } -\def\pgfsys@papersize#1#2{% - \pdfpageheight#2% - \pdfpagewidth#1} - - - % XForm version, crashes ghostview. - %\def\pgfsys@defobject#1#2#3#4{% - % \pgf@process{#2} - % \setbox\pgfobjectbox\hbox{\raise-\pgf@y\hbox{\hskip-\pgf@x\relax#4}} - % \pgf@process{#3} - % \pgf@xa=\pgf@x - % \pgf@ya=\pgf@y - % \pgf@process{#2} - % \advance\pgf@xa by-\pgf@x - % \advance\pgf@ya by-\pgf@y - % \wd\pgfobjectbox=\pgf@xa - % \dp\pgfobjectbox=0pt - % \ht\pgfobjectbox=\pgf@ya - % \pdfxform\pgfobjectbox - % \expandafter\xdef\csname#1\endcsname{\the\pdflastxform} - % \expandafter\xdef\csname pgf@trans#1\endcsname - % {{\pgfget x}{\pgfget y}}} - %\def\pgfsys@useobject#1#2{% - % \setbox\pgfobjectbox\hbox{\pdfrefxform \csname#1\endcsname}% - % \dp\pgfobjectbox=0pt% - % \ht\pgfobjectbox=0pt% - % \wd\pgfobjectbox=0pt% - % \pgfsys@discardpath% - % \pgfsys@beginscope% - % #2% - % \edef\pgf@temp{{1}{0}{0}{1}\csname pgf@trans#1\endcsname}% - % \expandafter\pgfsys@transform\pgf@temp% - % \box\pgfobjectbox% - % \pgfsys@endscope} +\def\pgfsys@papersize#1#2{\pdfpageheight#2\relax\pdfpagewidth#1\relax} +\def\pgfsys@global@papersize#1#2{\global\pdfpageheight#2\relax\global\pdfpagewidth#1\relax} + +\ifx\paperheight\@undefined + \def\pgfsys@thepageheight{\pdfpageheight} + \def\pgfsys@thepagewidth{\pdfpagewidth} +\fi % @@ -261,7 +233,7 @@ \def\pgfsys@markposition#1{% \pdfsavepos% \edef\pgf@temp{#1}% - \expandafter\write\expandafter\pgfutil@auxout\expandafter{% + \expandafter\pgfutil@writetoaux\expandafter{% \expandafter\noexpand\expandafter\pgfsyspdfmark\expandafter{\pgf@temp}{\the\pdflastxpos}{\the\pdflastypos}}% } @@ -274,7 +246,7 @@ \pgf@marshal% } -\def\pgf@sys@pdf@mark@pos@pgfpageorigin{\pgfpointorigin} +\def\pgf@sys@pdf@mark@pos@pgfpageorigin{\pgfqpoint{\hoffset}{\voffset}} % @@ -294,7 +266,7 @@ } \def\pgfsys@usefading#1#2#3#4#5#6#7{% \expandafter\ifx\csname pgfsmaskxform@#1\endcsname\relax% - \PackageError{pgf}{Undefined fading '#1'}{}% + \pgferror{Undefined fading '#1'}% \else% {% \expandafter\ifx\csname pgfsmaks@#1\endcsname\relax% @@ -342,7 +314,9 @@ \def\pgfsys@transparencygroupfrombox#1{% \pgf@sys@pdf@check@resources% \pdfxform - attr { /Group << /S /Transparency >> } %<< + attr { /Group << /S /Transparency + /I \ifpgfsys@transparency@group@isolated true \else false \fi + /K \ifpgfsys@transparency@group@knockout true \else false \fi >> } %<< resources { \pgf@sys@pdf@possible@resources } #1% \setbox#1=\hbox{\pdfrefxform\pdflastxform}% @@ -395,6 +369,10 @@ \pgfutil@addpdfresource@colorspaces{ /pgfprgb [/Pattern /DeviceRGB] } +\def\pgfsys@color@unstacked#1{% + \pdfliteral{\csname\string\color@#1\endcsname}% +} + \endinput diff --git a/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-tex4ht.def b/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-tex4ht.def index 71f819cc2bc..cc5dadb1173 100644 --- a/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-tex4ht.def +++ b/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-tex4ht.def @@ -7,11 +7,9 @@ % % See the file doc/generic/pgf/licenses/LICENSE for more details. -\ProvidesFileRCS $Header: /cvsroot/pgf/pgf/generic/pgf/systemlayer/pgfsys-tex4ht.def,v 1.23 2010/08/18 12:14:47 ludewich Exp $ +\ProvidesFileRCS $Header: /cvsroot/pgf/pgf/generic/pgf/systemlayer/pgfsys-tex4ht.def,v 1.25 2013/08/06 17:46:08 tantau Exp $ -\RequirePackage{xcolor} - % Driver commands for tex4ht @@ -28,6 +26,11 @@ \newcount\pgf@sys@svg@picnum +\def\pgfsys@pictureboxsynced#1{% + \pgfsys@beginscope\pgflowlevelsynccm\box#1\pgfsys@endscope% +} + + %% %% initial support of Mathml and xhtml inside svg through the svg:foreignelement tag %% @@ -83,49 +86,60 @@ % class="}{\%s}{-\%s}{x-x-\%d}{}{">}{</span>} %} +\def\pgfsys@svg@newline{\Hnewline} + % we don't want tex4ht putting <p> and </p> tags automatically in our svg code and causing invalid xhtml in our svg pictures \newif\ifpgfsys@CssIncluded@\pgfsys@CssIncluded@false \def\pgfsys@beginpicture{% - \EndP\HtmlParOff - \pgfkeys{/tikz/tex4ht node/escape=false}% text only nodes are the default. Advantage : pure svg pictures are the default, nicer for text only nodes. - % Disadvantages : this rendering methods produce more invalid or degraded svg pictures than with the foreignelement tag + \EndP\HtmlParOff + \pgfkeys{/pgf/tex4ht node/escape=false}% + % text only nodes are the default. Advantage : pure svg pictures are + % the default, nicer for text only nodes. + % Disadvantages : this rendering methods produce more invalid or degraded svg pictures than with the foreignelement tag %% we use css to control the display of foreignelement rendered text nodes - \ifpgfsys@CssIncluded@ - \else - \Css{ - .foreignobject {% - line-height:100\%; - font-size:120\%; % this is the trick....a font of size 100% in a box scaled down to half size makes it a half size font. -% you'll have to double the size of things that you want to have a regular size in this half-scaled box though - font-family:STIXgeneral,Times,Symbol,cmr10,CMSY10,CMEX10;% can't wait for the stix font...the cmr10, etc font are available from the mozilla site, times and symbols should be okey - padding:0; - margin:0; -% background-color:\#12ff55; usefull for debugging positioning - text-align:center; % good for centered text nodes...will have to improve that later on...with more integration with tikz options for text nodes - } - }% - \Css{% - math {%, math[mode="inline"] { - vertical-align:baseline; - line-height:100\%; - font-size:100\%; - font-family:STIXGeneral,Times,Symbol, cmr10,cmsy10,cmex10,cmmi10; - font-style: normal; - margin:0; -% background-color:\#99ff99; - padding:0; - }% - }% - \pgfsys@CssIncluded@true - \fi + \ifpgfsys@CssIncluded@ + \else + \Css{ + .foreignobject {% + line-height:100\%; + font-size:120\%; % this is the trick....a font of size 100% in + % a box scaled down to half size makes it a + % half size font. + % you'll have to double the size of things + % that you want to have a regular size in + % this half-scaled box though + font-family:STIXgeneral,Times,Symbol,cmr10,CMSY10,CMEX10;% + % can't wait for the stix font...the cmr10, etc font are + % available from the mozilla site, times and symbols should be + % okey + padding:0; + margin:0; + % background-color:\#12ff55; usefull for debugging positioning + text-align:center; % good for centered text nodes...will have to improve that later on...with more integration with pgf options for text nodes + } + }% + \Css{% + math {%, math[mode="inline"] { + vertical-align:baseline; + line-height:100\%; + font-size:100\%; + font-family:STIXGeneral,Times,Symbol, cmr10,cmsy10,cmex10,cmmi10; + font-style: normal; + margin:0; + % background-color:\#99ff99; + padding:0; + }% + }% + \pgfsys@CssIncluded@true + \fi }% \def\pgfsys@endpicture{% - \HtmlParOn - \par% FIXME : was '\Par' but that seems to be undefined!? + \HtmlParOn + \par% FIXME : was '\Par' but that seems to be undefined!? }% -% this is okey for both rendering methods for text nodes (mtext or foreignelement)... +% this is okay for both rendering methods for text nodes (mtext or foreignelement)... \def\pgfsys@typesetpicturebox#1{% \global\advance\pgf@sys@svg@picnum by 1\relax% % Ok, compute width/height @@ -143,8 +157,7 @@ \pgf@xc=\pgf@x% \pgf@yc=\pgf@y% \pgfsysprotocol@flushcurrentprotocol% - \HCode{<object data="\jobname-\the\pgf@sys@svg@picnum.svg" - width="}% + \HCode{<object data="\jobname-\the\pgf@sys@svg@picnum.svg" width="}% % Calculate pixel coordinates (this does not really make sense, but % we have to do it anyway). Assume 96dpi. \pgf@x=1.3333333\pgf@x% @@ -159,11 +172,11 @@ \pgfsysprotocol@flushcurrentprotocol% \pgfsys@invoke{" type="image/svg+xml"><p>SVG-Viewer needed.</p></object>}% \special{t4ht>\jobname-\the\pgf@sys@svg@picnum.svg}% -%%%%%%%% This is necessary to control the svg through css - \pgfkeys{% - /tikz/tex4ht node/css/.get=\pgfsys@foreignobject@css - }% - \pgfsys@invoke{<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>\Hnewline% added that + %%%%%%%% This is necessary to control the svg through css + \pgfkeys{% + /pgf/tex4ht node/css/.get=\pgfsys@foreignobject@css + }% + \pgfsys@invoke{<?xml version="1.0" encoding="iso-8859-1" standalone="no"?>\Hnewline% added that <?xml-stylesheet href="\pgfsys@foreignobject@css.css" type="text/css"?>\Hnewline}% added that %%%%%%%%%%%%%%% maybee I should add an option to change the css, for the whole picture \pgfsys@invoke{<svg xmlns="http://www.w3.org/2000/svg" @@ -199,23 +212,24 @@ %% we'll use this hbox for the mtext rendering method (the "text only=true" option) \def\pgfsys@hbox#1{% \pgf@x=.5\wd#1% - \ifx\tikz@textcolor\relax% - \else% + \ifx\tikz@textcolor\relax\else\ifx\tikz@textcolor\@undefined\else% \ifx\tikz@textcolor\pgfutil@empty% \pgfsetfillcolor{.}% \else% \pgfsetfillcolor{\tikz@textcolor}% \fi% - \fi% tweak for TikZ + \fi\fi% tweak for TikZ \HCode{<text style="stroke:none" transform="scale(1,-1) translate(\pgf@sys@tonumber{\pgf@x},0)" text-anchor="middle" }% - \ifx\f@size\pgfutil@empty% - \else% - \HCode{ font-size="\f@size"}% - \fi% + \ifpgfutil@format@is@latex% + \ifx\f@size\pgfutil@empty% + \else% + \HCode{ font-size="\f@size"}% + \fi% + \fi% \HCode{>\Hnewline }% \wd#1=0pt% \ht#1=0pt% @@ -230,44 +244,55 @@ %% we have to use some "evil" ^^ tex4ht hackery % tex4ht hackery {% grouping necessary cause we change the catcode of ":" - \catcode`:=11\relax - %%% this is necessary to calculate the size of text nodes with inline maths - % (it is an improvement of tex4ht, got to ask eitan gurary if he could put it in the tex4ht code) - \gdef\DviMathAlt{% - \a:DviMath\leavevmode \MathClass \ht:special{t4ht@(}\hbox\bgroup{\expandafter\ifx\csname ht:everypar\endcsname\relax\expandafter\everypar\else \expandafter\ht:everypar\fi{}\leavevmode\ht:special{t4ht@)}}\DviSend - }% -% these are configures for the foreignelement rendering method of text nodes : we let tex4ht write xhtml and mathml in the svg picture -% - \gdef\pgfsys@foreignobject@configure{% - \Configure{$}{\Configure{@math}{%\a:mathml - display="inline" }\DviMathAlt}{\EndDviMath}{}%%% we REALLY need to use \DviMathAlt here instead of \DviMath see above remark - \Configure{$$}{\Configure{@math}{%\a:mathml - display="block" }\IgnorePar - \ifvmode\else \HCode{<!--tex4ht:inline-->}\fi\EndP - \DviMath}{\EndDviMath\ShowPar\pgfsys@foreignobject@par{\csname HCondtrue\endcsname\noindent} - }{\DisplayMathtrue}% - \Configure{SUB}{\Send{BACK}{<\a:mathml msub><\a:mathml mrow\Hnewline>}% - \Tg</\a:mathml mrow>\Tg<\a:mathml mrow\Hnewline>\trap:base}{\Tg</\a:mathml mrow>\TG</\a:mathml msub\Hnewline>}% - \Configure{SUP}{\Send{BACK}{<\a:mathml msup><\a:mathml mrow\Hnewline>}% - \Tg</\a:mathml mrow>\Tg<\a:mathml mrow\Hnewline>\trap:base}{\Tg</\a:mathml mrow>\TG</\a:mathml msup\Hnewline>}% - \Configure{SUBSUP}{\Send{BACK}{<\a:mathml msubsup><\a:mathml mrow\Hnewline>}% - \Tg</\a:mathml mrow>\Tg<\a:mathml mrow\Hnewline>\trap:base}{\Tg</\a:mathml mrow>\Tg<\a:mathml mrow\Hnewline>\trap:base}{\Tg</\a:mathml mrow>\TG</\a:mathml msubsup\Hnewline>}% - \Configure{htf}{0}{+}{<span\Hnewline - class="}{\%s}{-\%s}{x-x-\%d}{}{">}{</span>}% - }% - \global\let\pgfsys@foreignobject@par=\par % use this instead of \par -- \Configure is no \long macro (at least in one of the older versions). - -% these are the configures for the mtext rendering method of text nodes : we turn everything into regular character (don't want math modes or subsup) -% and we hope it works (it doesn't if the text nodes aren't simple) - \gdef\pgfsys@mtext@configure{% - % no configures for \(\) and \[\] those might be needed for context or Latex. Let me know ! - \Configure{$$}{}{}{}% no block maths - \Configure{$}{}{}{}%$ no inline maths - \Configure{SUB}{\HCode{<tspan baseline-shift="sub">}}{\HCode{</tspan>}}% - \Configure{SUP}{\HCode{<tspan baseline-shift="sub">}}{\HCode{</tspan>}}% - \Configure{SUBSUP}{}{}{}% not both sub and sup - \Configure{htf} {0}{+}{<tspan font-family="}{\%s}{" font-size="\%s}{}{}{">}{</tspan>}% - }% + \catcode`:=11\relax + %%% this is necessary to calculate the size of text nodes with + %%% inline maths + % (it is an improvement of tex4ht, got to ask eitan gurary if he + % could put it in the tex4ht code) + \gdef\DviMathAlt{% + \a:DviMath\leavevmode \MathClass + \ht:special{t4ht@(}\hbox\bgroup{\expandafter\ifx\csname + ht:everypar\endcsname\relax\expandafter\everypar\else + \expandafter\ht:everypar\fi{}\leavevmode\ht:special{t4ht@)}}\DviSend + }% + % these are configures for the foreignelement rendering method of text nodes : we let tex4ht write xhtml and mathml in the svg picture + % + \gdef\pgfsys@foreignobject@configure{% + \Configure{$}{\Configure{@math}{%\a:mathml + display="inline" }\DviMathAlt}{\EndDviMath}{}%%% we REALLY need to use \DviMathAlt here instead of \DviMath see above remark + \Configure{$$}{\Configure{@math}{%\a:mathml + display="block" }\IgnorePar + \ifvmode\else \HCode{<!--tex4ht:inline-->}\fi\EndP + \DviMath}{\EndDviMath\ShowPar\pgfsys@foreignobject@par{\csname HCondtrue\endcsname\noindent} + }{\DisplayMathtrue}% + \Configure{SUB}{\Send{BACK}{<\a:mathml msub><\a:mathml mrow\Hnewline>}% + \Tg</\a:mathml mrow>\Tg<\a:mathml mrow\Hnewline>\trap:base}{\Tg</\a:mathml mrow>\TG</\a:mathml msub\Hnewline>}% + \Configure{SUP}{\Send{BACK}{<\a:mathml msup><\a:mathml mrow\Hnewline>}% + \Tg</\a:mathml mrow>\Tg<\a:mathml mrow\Hnewline>\trap:base}{\Tg</\a:mathml mrow>\TG</\a:mathml msup\Hnewline>}% + \Configure{SUBSUP}{\Send{BACK}{<\a:mathml msubsup><\a:mathml mrow\Hnewline>}% + \Tg</\a:mathml mrow>\Tg<\a:mathml mrow\Hnewline>\trap:base}{\Tg</\a:mathml mrow>\Tg<\a:mathml mrow\Hnewline>\trap:base}{\Tg</\a:mathml mrow>\TG</\a:mathml msubsup\Hnewline>}% + \Configure{htf}{0}{+}{<span\Hnewline + class="}{\%s}{-\%s}{x-x-\%d}{}{">}{</span>}% + }% + \global\let\pgfsys@foreignobject@par=\par % use this instead of \par + % -- \Configure is no \long macro (at + % least in one of the older + % versions). + + % these are the configures for the mtext rendering method of text + % nodes : we turn everything into regular character (don't want math + % modes or subsup) + % and we hope it works (it doesn't if the text nodes aren't simple) + \gdef\pgfsys@mtext@configure{% + % no configures for \(\) and \[\] those might be needed for + % context or Latex. Let me know ! + \Configure{$$}{}{}{}% no block maths + \Configure{$}{}{}{}%$ no inline maths + \Configure{SUB}{\HCode{<tspan baseline-shift="sub">}}{\HCode{</tspan>}}% + \Configure{SUP}{\HCode{<tspan baseline-shift="sub">}}{\HCode{</tspan>}}% + \Configure{SUBSUP}{}{}{}% not both sub and sup + \Configure{htf} {0}{+}{<tspan font-family="}{\%s}{" font-size="\%s}{}{}{">}{</tspan>}% + }% }% % a counter to produce unique ids for each text node rendered with foreign element @@ -295,8 +320,8 @@ \def\pgfutil@endminipage{% % same thing here % -% \ifpgfsys@textonly\else\EndP\HtmlParOff\fi - \egroup\egroup +% \ifpgfsys@textonly\else\EndP\HtmlParOff\fi + \egroup\egroup }% @@ -306,71 +331,73 @@ \newdimen\pgf@t % this is the alternate hbox routine that renders text nodes through the foreignobject tag \def\pgfsys@foreignobject@hbox#1{% - % Compute box y translation (x translation is correct). - \pgf@y=-\ht#1\relax - \HCode{<g transform="scale(1,-1) translate(0,\pgf@sys@tonumber{\pgf@y}) % got to translate in y - scale(0.5,0.5)">\Hnewline}% scaling work around (damn dumb browsers !) - % Compute box size (scaled 2 times) - % this is necessary to make the browser scale the font down 50% (the STUPID browsers won't make font-size:50% happen, - % so we have to work around this by making svg scale the things down 50%, doubling the size of the text node frame (i.e. no changement there) - \pgf@x=2\wd#1\relax - \pgf@y=2\ht#1\relax - \advance\pgf@y by 2\dp#1\relax - % this is to adjust the y translation to compensate for the differences between the TeX and the Html models for lines - \setbox\pgfsys@foreignobject@Box=\hbox{abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ - $abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZf_1^1\overline D)_1^1\vec i\vec j$}% - \pgf@t=\ht#1\relax - \advance\pgf@t by -\ht\pgfsys@foreignobject@Box\relax - \pgf@s=\pgf@t\relax - \advance\pgf@s by \dp#1\relax - \advance\pgf@s by -\dp\pgfsys@foreignobject@Box\relax - \ifnum\pgf@s>0\relax - \pgf@s=0pt - \pgf@t=0pt - \else - \advance \pgf@y by -2\pgf@s\relax - \pgf@t=2\pgf@t\relax - \fi - % - \HCode{<foreignObject x="0" y="\pgf@sys@tonumber{\pgf@t}" - width="\pgf@sys@tonumber{\pgf@x}" height="\pgf@sys@tonumber{\pgf@y}">}% - % this is to make use of the css, class and id options through which you can control the way things display - \pgfkeys{% - /tikz/tex4ht node/css/.get=\pgfsys@foreignobject@css,% - /tikz/tex4ht node/class/.get=\pgfsys@foreignobject@class,% - /tikz/tex4ht node/id/.get=\pgfsys@foreignobject@id - }% - \HCode{<head>\Hnewline - <link rel="stylesheet" type="text/css" href="\pgfsys@foreignobject@css.css" />\Hnewline - </head>\Hnewline -% I'll have to look into this, perhaps there are better doctype.... aren't recognised and produces invalid svg pictures -% a workaround (not implemented yet) would be to make them into entities of the svg picture. - <body id="\pgfsys@foreignobject@id" class="\pgfsys@foreignobject@class" xmlns="http://www.w3.org/1999/xhtml" >\Hnewline - <div>\Hnewline - }% - \box#1% - \HCode{% - </div>\Hnewline - </body>\Hnewline - </foreignObject>\Hnewline - }% -% debug positioning not needed but it would be nice to let it there to control things later on -% \HCode{<rect x="0" y="0" width="\pgf@sys@tonumber{\pgf@x}" height="\pgf@sys@tonumber{\pgf@y}" -% style="fill:yellow;stroke:red; fill-opacity:0.5;stroke-opacity:0.5"/>} - \HCode{</g>\Hnewline}% - \global\advance\pgf@sys@svg@nodenum by 1\relax + % Compute box y translation (x translation is correct). + \pgf@y=-\ht#1\relax + \HCode{<g transform="scale(1,-1) translate(0,\pgf@sys@tonumber{\pgf@y}) % got to translate in y + scale(0.5,0.5)">\Hnewline}% scaling work around (damn dumb browsers !) + % Compute box size (scaled 2 times) + % this is necessary to make the browser scale the font down 50% (the STUPID browsers won't make font-size:50% happen, + % so we have to work around this by making svg scale the things down 50%, doubling the size of the text node frame (i.e. no changement there) + \pgf@x=2\wd#1\relax + \pgf@y=2\ht#1\relax + \advance\pgf@y by 2\dp#1\relax + % this is to adjust the y translation to compensate for the differences between the TeX and the Html models for lines + \setbox\pgfsys@foreignobject@Box=\hbox{abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ + $abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZf_1^1\overline D)_1^1\vec i\vec j$}% + \pgf@t=\ht#1\relax + \advance\pgf@t by -\ht\pgfsys@foreignobject@Box\relax + \pgf@s=\pgf@t\relax + \advance\pgf@s by \dp#1\relax + \advance\pgf@s by -\dp\pgfsys@foreignobject@Box\relax + \ifnum\pgf@s>0\relax + \pgf@s=0pt + \pgf@t=0pt + \else + \advance \pgf@y by -2\pgf@s\relax + \pgf@t=2\pgf@t\relax + \fi + % + \HCode{<foreignObject x="0" y="\pgf@sys@tonumber{\pgf@t}" + width="\pgf@sys@tonumber{\pgf@x}" height="\pgf@sys@tonumber{\pgf@y}">}% + % this is to make use of the css, class and id options through which you can control the way things display + \pgfkeys{% + /pgf/tex4ht node/css/.get=\pgfsys@foreignobject@css,% + /pgf/tex4ht node/class/.get=\pgfsys@foreignobject@class,% + /pgf/tex4ht node/id/.get=\pgfsys@foreignobject@id + }% + \HCode{<head>\Hnewline + <link rel="stylesheet" type="text/css" href="\pgfsys@foreignobject@css.css" />\Hnewline + </head>\Hnewline + % I'll have to look into this, perhaps there are better + % doctype.... aren't recognised and produces invalid svg + % pictures a workaround (not implemented yet) would be to make + % them into entities of the svg picture. + <body id="\pgfsys@foreignobject@id" class="\pgfsys@foreignobject@class" xmlns="http://www.w3.org/1999/xhtml" >\Hnewline + <div>\Hnewline + }% + \box#1% + \HCode{% + </div>\Hnewline + </body>\Hnewline + </foreignObject>\Hnewline + }% + % debug positioning not needed but it would be nice to let it there to control things later on + % \HCode{<rect x="0" y="0" width="\pgf@sys@tonumber{\pgf@x}" height="\pgf@sys@tonumber{\pgf@y}" + % style="fill:yellow;stroke:red; fill-opacity:0.5;stroke-opacity:0.5"/>} + \HCode{</g>\Hnewline}% + \global\advance\pgf@sys@svg@nodenum by 1\relax }% % the options and the code that controls it all (switches between \pgfsys@mtext@hbox and \pgfsys@foreignelement@hbox) \pgfkeys{% - /tikz/.cd, - tex4ht node/escape/.is choice, - tex4ht node/escape/false/.code={\let\pgfsys@hbox\pgfsys@mtext@hbox\pgfsys@mtext@configure\pgfsys@textonlytrue}, - tex4ht node/escape/true/.code={\let\pgfsys@hbox\pgfsys@foreignobject@hbox\pgfsys@foreignobject@configure\pgfsys@textonlyfalse}, - tex4ht node/css/.initial=\jobname, - tex4ht node/class/.initial=foreignobject, - tex4ht node/id/.initial=\jobname\the\pgf@sys@svg@picnum-\the\pgf@sys@svg@nodenum + /pgf/.cd, + tex4ht node/escape/.is choice, + tex4ht node/escape/false/.code={\let\pgfsys@hbox\pgfsys@mtext@hbox\pgfsys@mtext@configure\pgfsys@textonlytrue}, + tex4ht node/escape/true/.code={\let\pgfsys@hbox\pgfsys@foreignobject@hbox\pgfsys@foreignobject@configure\pgfsys@textonlyfalse}, + tex4ht node/css/.initial=\jobname, + tex4ht node/class/.initial=foreignobject, + tex4ht node/id/.initial=\jobname\the\pgf@sys@svg@picnum-\the\pgf@sys@svg@nodenum }% @@ -426,19 +453,26 @@ \pgfsysprotocol@literal{</g>\Hnewline}% } -% Protect against color.4ht evil meddling with xcolor: -\let\pgf@xcolor@declaredcolor=\@declaredcolor -\let\pgf@xcolor@undeclaredcolor=\@undeclaredcolor + +\ifpgfutil@format@is@latex + % Protect against color.4ht evil meddling with xcolor: + \RequirePackage{xcolor} + \let\pgf@xcolor@declaredcolor=\@declaredcolor + \let\pgf@xcolor@undeclaredcolor=\@undeclaredcolor +\fi \AtBeginDocument{ \let\pgfsys@invoke=\pgfsys@body@invoke \let\pgfsys@shadingoutsidepgfpicture=\pgfsys@body@shadingoutsidepgfpicture \let\pgfsys@shadinginsidepgfpicture=\pgfsys@body@shadinginsidepgfpicture - \let\pgf@texht@declaredcolor=\@declaredcolor - \let\pgf@texht@undeclaredcolor=\@undeclaredcolor - \def\@declaredcolor{\ifpgfpicture\expandafter\pgf@xcolor@declaredcolor\else\expandafter\pgf@texht@declaredcolor\fi} - \def\@undeclaredcolor{\ifpgfpicture\expandafter\pgf@xcolor@undeclaredcolor\else\expandafter\pgf@texht@undeclaredcolor\fi} - %\ConfigureEnv{pgfpicture}{}{}{}{} there is no environment in plain TeX and this produces errors + \ifpgfutil@format@is@latex + \let\pgf@texht@declaredcolor=\@declaredcolor + \let\pgf@texht@undeclaredcolor=\@undeclaredcolor + \def\@declaredcolor{\ifpgfpicture\expandafter\pgf@xcolor@declaredcolor\else\expandafter\pgf@texht@declaredcolor\fi} + \def\@undeclaredcolor{\ifpgfpicture\expandafter\pgf@xcolor@undeclaredcolor\else\expandafter\pgf@texht@undeclaredcolor\fi} + \fi + \def\pgfutil@color{\pgfsetcolor} + % \ConfigureEnv{pgfpicture}{}{}{}{} there is no environment in plain TeX and this produces errors % this might be needed for context or latex though....let me know ! }% diff --git a/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-textures.def b/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-textures.def index 5e3aa27258c..0645fb8c51f 100644 --- a/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-textures.def +++ b/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-textures.def @@ -7,7 +7,7 @@ % % See the file doc/generic/pgf/licenses/LICENSE for more details. -\ProvidesFileRCS $Header: /cvsroot/pgf/pgf/generic/pgf/systemlayer/pgfsys-textures.def,v 1.5 2007/12/12 16:57:17 tantau Exp $ +\ProvidesFileRCS $Header: /cvsroot/pgf/pgf/generic/pgf/systemlayer/pgfsys-textures.def,v 1.6 2011/05/13 10:16:37 tantau Exp $ % Driver commands for textures driver @@ -71,10 +71,12 @@ pgffoa .setopacityalpha}bind def% save /.setopacityalpha where {pop} {/.setopacityalpha{pop}def} ifelse % install .setopacityalpha /.pgfsetfillopacityalpha{/pgffoa exch def - /pgffill{gsave pgffoa .setopacityalpha fill 1 .setopacityalpha newpath fill grestore}bind def - /pgfeofill{gsave pgffoa .setopacityalpha eofill1 .setopacityalpha newpath eofill grestore}bind def}bind def + /pgffill{gsave pgffoa .setopacityalpha fill 1 .setopacityalpha + newpath fill grestore newpath}bind def + /pgfeofill{gsave pgffoa .setopacityalpha eofill1 + .setopacityalpha newpath eofill grestore newpath}bind def}bind def /.pgfsetstrokeopacityalpha{/pgfsoa exch def - /pgfstr{gsave pgfsoa .setopacityalpha stroke grestore}bind def}bind def + /pgfstr{gsave pgfsoa .setopacityalpha stroke grestore newpath}bind def}bind def /pgffoa 1 def /pgfsoa 1 def } diff --git a/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-vtex.def b/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-vtex.def index 742b4a6fef3..5014f48beba 100644 --- a/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-vtex.def +++ b/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-vtex.def @@ -7,7 +7,7 @@ % % See the file doc/generic/pgf/licenses/LICENSE for more details. -\ProvidesFileRCS $Header: /cvsroot/pgf/pgf/generic/pgf/systemlayer/pgfsys-vtex.def,v 1.8 2007/12/12 16:57:17 tantau Exp $ +\ProvidesFileRCS $Header: /cvsroot/pgf/pgf/generic/pgf/systemlayer/pgfsys-vtex.def,v 1.10 2013/07/15 12:05:34 tantau Exp $ % Driver commands for vtex @@ -47,7 +47,7 @@ \def\pgf@sys@vtex@@setcolor#1#2#3#4#5{% \pgfsysps@color@resetnow% \expandafter\ifx\csname pgfsys@color@#4\endcsname\relax% - \PackageError{pgfbase}{Unsupported color model `#4'. Sorry}{}% + \pgferror{Unsupported color model `#4'. Sorry}% \else% \edef\pgf@colmarshal{\expandafter\noexpand\csname pgfsys@color@#4\endcsname}% \pgf@uncomma#5,,% @@ -92,6 +92,13 @@ } } +% vtex commands for changing the paper size +\def\pgfsys@papersize#1#2{\mediawidth#1\mediaheight#2} + + + + + \endinput %%% Local Variables: diff --git a/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-xetex.def b/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-xetex.def index feaa7f77bae..9d13ae1ae70 100644 --- a/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-xetex.def +++ b/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-xetex.def @@ -7,44 +7,68 @@ % % See the file doc/generic/pgf/licenses/LICENSE for more details. -\ProvidesFileRCS $Header: /cvsroot/pgf/pgf/generic/pgf/systemlayer/pgfsys-xetex.def,v 1.3 2010/02/16 10:56:09 tantau Exp $ +\ProvidesFileRCS $Header: /cvsroot/pgf/pgf/generic/pgf/systemlayer/pgfsys-xetex.def,v 1.9 2013/07/16 16:03:13 tantau Exp $ -% Driver commands for dvipdfm +\input pgfsys-dvipdfmx.def -% -% Load common pdf and pdf in dvi commands: -% -\input pgfsys-common-pdf.def -\input pgfsys-common-pdf-via-dvi.def +\def\pgfsys@dvipdfmx@patternobj#1{% + % I have NO idea why this is necessary for xdvipdfmx - but without + % it, it crashes. + \pgfutil@insertatbegincurrentpagefrombox{#1}% +}% -% -% dvipdfmx-specific stuff: -% +% XeTeX supports pdftex commands for paper size +\def\pgfsys@papersize#1#2{% + \pdfpageheight#2% + \pdfpagewidth#1} + +\def\pgfsys@global@papersize#1#2{% + \global\pdfpageheight#2% + \global\pdfpagewidth#1} + -\def\pgfsys@invoke#1{\special{pdf:literal direct #1 }} +% Xetex does not support interpolate and not mask +\def\pgfsys@defineimage{% width, height, page number + \ifx\includegraphics\undefined + \ifx\pgf@imagewidth\pgfutil@empty\edef\pgf@imagewidth{1bp}\fi% width? + \ifx\pgf@imageheight\pgfutil@empty\edef\pgf@imageheight{1bp}\fi% height? + \ifx\pgf@imagepage\pgfutil@empty\else\edef\pgf@imagepage{ page \pgf@imagepage}\fi% + \ifx\pgf@imageinterpolate\pgfutil@empty\else\edef\pgf@imageinterpolate{ /Interpolate\space\pgf@imageinterpolate}\fi% + \ifx\pgf@imagemask\pgfutil@empty\else\xdef\pgf@imagemask{ /SMask @\pgf@imagemask}\fi% + \edef\pgf@image{\noexpand\hbox to \pgf@imagewidth{\vbox to \pgf@imageheight{\vfil\special{pdf:image width \pgf@imagewidth\space height \pgf@imageheight\space\pgf@imagepage\space(\pgf@filename) <<\pgf@imageinterpolate\pgf@imagemask\space>>}}\hfil}}% + \else + \ifx\pgf@imagewidth\pgfutil@empty\else\edef\pgf@imagewidth{width=\pgf@imagewidth,}\fi% + \ifx\pgf@imageheight\pgfutil@empty\else\edef\pgf@imageheight{height=\pgf@imageheight,}\fi% + \ifx\pgf@imagepage\pgfutil@empty\else\edef\pgf@imagepage{page=\pgf@imagepage,}\fi% + \edef\pgf@image{\noexpand\includegraphics[\pgf@imageheight\pgf@imagewidth\pgf@imagepage]{\pgf@filename}}% + \fi% +} + +% XeTeX supports position tracking, now +\def\pgfsys@markposition#1{% + \pdfsavepos% + \edef\pgf@temp{#1}% + \expandafter\pgfutil@writetoaux\expandafter{% + \expandafter\noexpand\expandafter\pgfsyspdfmark\expandafter{\pgf@temp}{\the\pdflastxpos}{\the\pdflastypos}}% +} +\def\pgfsyspdfmark#1#2#3{% + \expandafter\gdef\csname pgf@sys@pdf@mark@pos@#1\endcsname{\pgfqpoint{#2sp}{#3sp}}% +} -\ifx\XeTeXversion\@undefined - \PackageError{pgfsys}{XeTeX is not running, but it should. Somehow - the wrong driver got selected}{} -\fi +\def\pgfsys@getposition#1#2{% + \edef\pgf@marshal{\let\noexpand#2=\expandafter\noexpand\csname pgf@sys@pdf@mark@pos@#1\endcsname}% + \pgf@marshal% +} +\def\pgf@sys@pdf@mark@pos@pgfpageorigin{\pgfqpoint{2\hoffset}{0pt}} -% -% Position tracking always on -% -\pgf@sys@pdf@dvi@tracker +\ifx\paperheight\@undefined +\else + \pdfpagewidth\paperwidth + \pdfpageheight\paperheight % this is to work around a positioning problem in xetex. +\fi -% -% Page size stuff -% -\def\pgfsys@papersize#1#2{% - \pdfpageheight#2% - \pdfpagewidth#1} \endinput - -%%% Local Variables: -%%% mode: latex -%%% End: diff --git a/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex b/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex index 3cd39c48645..63a1aac41a5 100644 --- a/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex +++ b/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex @@ -7,7 +7,7 @@ % % See the file doc/generic/pgf/licenses/LICENSE for more details. -\ProvidesPackageRCS[v\pgfversion] $Header: /cvsroot/pgf/pgf/generic/pgf/systemlayer/pgfsys.code.tex,v 1.37 2010/06/30 13:06:37 ludewich Exp $ +\ProvidesPackageRCS[v\pgfversion] $Header: /cvsroot/pgf/pgf/generic/pgf/systemlayer/pgfsys.code.tex,v 1.47 2013/11/30 11:35:10 ludewich Exp $ % Load key mechanism @@ -17,6 +17,10 @@ \pgfkeys{/pgf/.is family} \def\pgfset{\pgfqkeys{/pgf}} +% This is if is needed *very* early +\newif\ifpgfpicture + + % % The following conversion functions are used to convert from TeX % dimensions to postscript/pdf points. @@ -66,6 +70,28 @@ \newcount\c@pgf@countc \newcount\c@pgf@countd +\newtoks\t@pgf@toka +\newtoks\t@pgf@tokb +\newtoks\t@pgf@tokc + +% Ensure that math registers are the same (math is broken in case it +% is loaded first) +\let\pgfmath@x\pgf@x +\let\pgfmath@xa\pgf@xa +\let\pgfmath@xb\pgf@xb +\let\pgfmath@xc\pgf@xc + +\let\pgfmath@y\pgf@y +\let\pgfmath@ya\pgf@ya +\let\pgfmath@yb\pgf@yb +\let\pgfmath@yc\pgf@yc + +\let\c@pgfmath@counta\c@pgf@counta +\let\c@pgfmath@countb\c@pgf@countb +\let\c@pgfmath@countc\c@pgf@countc +\let\c@pgfmath@countd\c@pgf@countd + + % The following \if decides, whether even-odd filling and clipping is % to be used or normal the non-zero winding number rule. See the @@ -96,8 +122,7 @@ \expandafter\ifx\csname pgf@sys@fail@#1\endcsname\pgfutil@empty% \else% \expandafter\global\expandafter\let\csname pgf@sys@fail@#1\endcsname=\pgfutil@empty% - \PackageWarning{pgf}{% - Your graphic driver \pgfsysdriver\space does not support #1. This warning is given only once}% + \pgfwarning{Your graphic driver \pgfsysdriver\space does not support #1. This warning is given only once}% \fi% } @@ -131,33 +156,31 @@ % \def\pgfsys@moveto#1#2{\pgf@sys@fail{path constructions}} -% This command is used to start a path at a specific point (#1bp,#2bp) -% or to move the current point of the current path to (#1bp,#2bp) +% This command is used to start a path at a specific point (#1,#2) +% or to move the current point of the current path to (#1,#2) % without drawing anything upon stroking (the current path is % `interrupted'). % -% Here (and in the following) the coordinates are in TeX's big points -% (bp), unless the coordinate system has been scaled. A big point is -% 1/72 inches. Note that TeX's point pt is 1/72.27 inches. +% The arguments must be dimensions (like |10pt|). % % Example: % -% \pgfsys@moveto{10}{10} -% \pgfsys@lineto{0}{0} +% \pgfsys@moveto{10pt}{10pt} +% \pgfsys@lineto{0pt}{0pt} % \pgfsys@stroke % -% This will draw a line from (10bp,10bp) to the origin of the picture. +% This will draw a line from (10pt,10pt) to the origin of the picture. \def\pgfsys@lineto#1#2{\pgf@sys@fail{path constructions}} -% Continue the current path to (#1bp,#2bp) with a line. +% Continue the current path to (#1,#2) with a line. \def\pgfsys@curveto#1#2#3#4#5#6{\pgf@sys@fail{path constructions}} -% Continue the current path with a bezier curver to (#5bp,#6bp). The -% control points of the curve are at (#1bp,#2bp) and (#3bp,#4bp). +% Continue the current path with a bezier curver to (#5,#6). The +% control points of the curve are at (#1,#2) and (#3,#4). \def\pgfsys@rect#1#2#3#4{\pgf@sys@fail{path constructions}} % Append a rectangle to the current path whose lower left corner is at -% (#1bp,#2bp) and whose width/height is given by (#3bp,#4bp). +% (#1,#2) and whose width/height is given by (#3,#4). % % This command can be `mapped back' to moveto and lineto commands, but % it is included since pdf has a special, quick version of this command. @@ -306,7 +329,7 @@ % % \def\pgfsys@setlinewidth#1{\pgf@sys@fail{setting the line width}} -% Sets the width of lines, when stroked, to #1bp. +% Sets the width of lines, when stroked, to #1. \def\pgfsys@buttcap{\pgf@sys@fail{setting the line cap}} % Sets the cap to a butt cap. See \pgfsys@stroke. @@ -331,22 +354,21 @@ % Sets the join to a bevel join. See \pgfsys@stroke. \def\pgfsys@setdash#1#2{\pgf@sys@fail{setting the dashing pattern}} -% Sets the dashing patter. #1 should be a list of lengths given in big -% points (bp) separated by spaces. #2 should be a single value given -% in bp. +% Sets the dashing patter. #1 should be a list of lengths separated by +% spaces. #2 should be a single dimension. % % The list of values in #1 is used to determine the lengths of the % `on' phases of the dashing and of the `off' phases. For example, if -% #1 is `3 4', then the dashing pattern is `3bp on followed by 4bp -% off, followed by 3bp on, followed by 4bp off, and so on'. A pattern -% of `.5 4 3 1.5' means `.5bp on, 4bp off, 3bp on, 1.5bp off, .5bp on, +% #1 is `3pt 4pt', then the dashing pattern is `3pt on followed by 4pt +% off, followed by 3pt on, followed by 4pt off, and so on'. A pattern +% of `.5pt 4pt 3pt 1.5pt' means `.5pt on, 4pt off, 3pt on, 1.5pt off, .5pt on, % ...'. If the number of entries is odd, the last one is used twice, -% so `3' means `3bp on, 3bp off, 3bp on, 3bp off,...'. An empty list +% so `3pt' means `3pt on, 3pt off, 3pt on, 3pt off,...'. An empty list % means `always on'. % % The second argument determines the `phase' of the pattern. For -% example, for a pattern of `3 4' and a phase of `1', the pattern -% would start: `2bp on, 4bp off, 3bp on, 4bp off, 3bp on, 4bp off...'. +% example, for a pattern of `3pt 4pt' and a phase of `1pt', the pattern +% would start: `2pt on, 4pt off, 3pt on, 4pt off, 3pt on, 4pt off...'. @@ -509,6 +531,17 @@ % overlap will be darker than the rest. By comparison, if the circles % are part of a transparency group, the overlap will get the same % color as the rest. +% +% The following settings modify the bevahiour of a transparency group: + +\newif\ifpgfsys@transparency@group@isolated +\newif\ifpgfsys@transparency@group@knockout + + +\def\pgfsys@blend@mode#1{\pgf@sys@fail{blend mode}} +% Sets the current blend mode. See the PDF specification for details +% on blend modes. + \def\pgfsys@definemask{\pgf@sys@fail{image masks}} % This command declares a mask for usage with images. It works similar @@ -631,12 +664,36 @@ % Page size stuff % % + \def\pgfsys@papersize#1#2{\pgf@sys@fail{papersize}} -% This command sets the paper size in a portable way. +% This command sets the paper size in a portable way. It tries to do +% so "locally" for the current page, but what really happens depends +% strongly on the driver. For instance, dvips will use whatever is +% used with the first call to this command that is part of the +% shipped-out document and will ignore all other uses. In contrast, +% pdftex will use the current value of the papersize for each page +% and, additionally, setting the papersize is local to the current TeX +% group. +% #1 = width +% #2 = height + +\def\pgfsys@global@papersize#1#2{\pgfsys@papersize{#1}{#2}} +% This command does the same as the papersize command, only for +% drivers that support this, \global is used to set the papersize. % #1 = width % #2 = height +\ifx\paperheight\@undefined + \def\pgfsys@thepageheight{\the\vsize} % this is wrong, but I do not + % know how to compute the page height + % in plain tex. + \def\pgfsys@thepagewidth{\the\hsize} +\else + \def\pgfsys@thepageheight{\paperheight} + \def\pgfsys@thepagewidth{\paperwidth} +\fi + % % @@ -705,7 +762,7 @@ \def\pgfsys@transformshift#1#2{\pgfsys@transformcm{1}{0}{0}{1}{#1}{#2}} % This command will change the origin of the low-level coordinate -% system to (#1bp,#2bp). +% system to (#1,#2). \def\pgfsys@transformxyscale#1#2{\pgfsys@transformcm{#1}{0}{0}{#2}{0bp}{0bp}} % This command will scale the low-level coordinate system (and @@ -739,6 +796,20 @@ % transformation cm. This will ensure that hyperlinks ``survive'' at % least translations. +\def\pgfsys@pictureboxsynced#1{% + {% + \setbox0=\hbox{\pgfsys@beginpicture\box#1\pgfsys@endpicture}% + \pgfsys@hboxsynced0% + }% +} +% Basically, this should do the same as doing a (scoped) low level sync +% followed by inserting the box #1 directly into the output +% stream. However, the default implementation uses \pgfsys@hboxsynced +% in conjunction with \pgfsys@beginpicture to ensure that, if +% possible, hyperlinks survive in pdfs. Drivers that are sensitive to +% picture-in-picture scopes shuold replace this implementation by +% \pgfsys@beginscope\pgflowlevelsynccm\box#1\pgfsys@endscope + \def\pgfsys@beginpicture{} % Called at the beginning of a pgfpicture. Used to setup things. @@ -835,7 +906,9 @@ {% \pgfsysprotocol@setcurrentprotocol\pgfutil@empty% \pgfsysprotocol@bufferedtrue% + \pgfsys@beginscope% #4% + \pgfsys@endscope% \pgfsysprotocol@getcurrentprotocol\pgfsys@@temp% \expandafter\global\expandafter\let\csname #1\endcsname=\pgfsys@@temp% }% @@ -897,9 +970,9 @@ \input pgf.cfg -\PackageInfo{pgfsys}{Driver file for pgf: \pgfsysdriver} +\immediate\write-1{Driver file for pgf: \pgfsysdriver} \pgfutil@InputIfFileExists{\pgfsysdriver}{}{% - \PackageError{pgfsys}{Driver file ``\pgfsysdriver'' not found.}{}} + \pgferror{Driver file ``\pgfsysdriver'' not found.}} diff --git a/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex b/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex index 96fe6db490a..0b6310873ab 100644 --- a/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex +++ b/Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex @@ -7,7 +7,7 @@ % % See the file doc/generic/pgf/licenses/LICENSE for more details. -\ProvidesFileRCS $Header: /cvsroot/pgf/pgf/generic/pgf/systemlayer/pgfsyssoftpath.code.tex,v 1.7 2008/07/18 19:06:58 ludewich Exp $ +\ProvidesFileRCS $Header: /cvsroot/pgf/pgf/generic/pgf/systemlayer/pgfsyssoftpath.code.tex,v 1.9 2013/09/09 10:05:41 tantau Exp $ % This package provides the pgf system path abstraction layer. This @@ -52,7 +52,7 @@ % buffers are flushed. % % Because of this buffering, it is imperative that the main path is -% accessed only vie appropriate interface macros. +% accessed only via appropriate interface macros. @@ -141,33 +141,31 @@ % Add a moveto element to the current path \def\pgfsyssoftpath@moveto#1#2{% - \edef\pgfsyssoftpath@temp{{% - \noexpand\pgfsyssoftpath@movetotoken{#1}{#2}% - }}% - \expandafter\pgfsyssoftpath@addtocurrentpath\pgfsyssoftpath@temp% + \edef\pgfsyssoftpath@coord{{#1}{#2}}% + \expandafter\pgfsyssoftpath@addtocurrentpath\expandafter{\expandafter\pgfsyssoftpath@movetotoken\pgfsyssoftpath@coord}% \ifpgfsyssoftpathmovetorelevant% - \xdef\pgfsyssoftpath@lastmoveto{{#1}{#2}}% + \global\let\pgfsyssoftpath@lastmoveto\pgfsyssoftpath@coord% \fi% } % Add a lineto element to the current path \def\pgfsyssoftpath@lineto#1#2{% - \edef\pgfsyssoftpath@temp{{% - \noexpand\pgfsyssoftpath@linetotoken{#1}{#2}% - }}% - \expandafter\pgfsyssoftpath@addtocurrentpath\pgfsyssoftpath@temp% + \edef\pgfsyssoftpath@coord{{#1}{#2}}% + \expandafter\pgfsyssoftpath@addtocurrentpath\expandafter{\expandafter\pgfsyssoftpath@linetotoken\pgfsyssoftpath@coord}% } + % Add curveto elements to the current path \def\pgfsyssoftpath@curveto#1#2#3#4#5#6{% \edef\pgfsyssoftpath@temp{{% - \noexpand\pgfsyssoftpath@curvetosupportatoken{#1}{#2}% - \noexpand\pgfsyssoftpath@curvetosupportbtoken{#3}{#4}% - \noexpand\pgfsyssoftpath@curvetotoken{#5}{#6}% - }}% + \noexpand\pgfsyssoftpath@curvetosupportatoken{#1}{#2}% + \noexpand\pgfsyssoftpath@curvetosupportbtoken{#3}{#4}% + \noexpand\pgfsyssoftpath@curvetotoken{#5}{#6}% + }}% \expandafter\pgfsyssoftpath@addtocurrentpath\pgfsyssoftpath@temp% } + % Add rectanlge elements to the current path \def\pgfsyssoftpath@rect#1#2#3#4{% \edef\pgfsyssoftpath@temp{{% @@ -179,18 +177,13 @@ % Add closepath element to the current path \def\pgfsyssoftpath@closepath{% - \edef\pgfsyssoftpath@temp{{% - \noexpand\pgfsyssoftpath@closepathtoken\pgfsyssoftpath@lastmoveto% - }}% - \expandafter\pgfsyssoftpath@addtocurrentpath\pgfsyssoftpath@temp% + \expandafter\pgfsyssoftpath@addtocurrentpath\expandafter{\expandafter\pgfsyssoftpath@closepathtoken\pgfsyssoftpath@lastmoveto}% } % Add special element to the current path \def\pgfsyssoftpath@specialround#1#2{% - \edef\pgfsyssoftpath@temp{{% - \noexpand\pgfsyssoftpath@specialroundtoken{#1}{#2}% - }}% - \expandafter\pgfsyssoftpath@addtocurrentpath\pgfsyssoftpath@temp% + \edef\pgfsyssoftpath@temp{{#1}{#2}}% + \expandafter\pgfsyssoftpath@addtocurrentpath\expandafter{\expandafter\pgfsyssoftpath@specialroundtoken\pgfsyssoftpath@temp}% } % Marshallers @@ -200,6 +193,8 @@ \def\pgfsyssoftpath@curvetosupportatoken#1#2#3#4#5#6#7#8{\pgfsys@curveto{#1}{#2}{#4}{#5}{#7}{#8}} \def\pgfsyssoftpath@closepathtoken#1#2{\pgfsys@closepath} \let\pgfsyssoftpath@specialroundtoken=\pgfutil@gobbletwo +\def\pgfsyssoftpath@curvetosupportbtoken#1#2{curvetotokenb} % make sure this this \ifx-equal only to itself +\def\pgfsyssoftpath@curvetotoken#1#2{curvetotoken}% make sure this this \ifx-equal only to itself \endinput |