diff options
Diffstat (limited to 'Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-xetex.def')
-rw-r--r-- | Master/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-xetex.def | 82 |
1 files changed, 53 insertions, 29 deletions
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: |