diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/graphics-def/xetex.def')
-rw-r--r-- | Master/texmf-dist/tex/latex/graphics-def/xetex.def | 802 |
1 files changed, 248 insertions, 554 deletions
diff --git a/Master/texmf-dist/tex/latex/graphics-def/xetex.def b/Master/texmf-dist/tex/latex/graphics-def/xetex.def index a432f12802f..e3f72cd0f8b 100644 --- a/Master/texmf-dist/tex/latex/graphics-def/xetex.def +++ b/Master/texmf-dist/tex/latex/graphics-def/xetex.def @@ -1,16 +1,13 @@ -%% This is file `xetex.def' for XeTeX, -%% based upon other drivers for LaTeX color and graphics support. +%% xetex.def Copyright (C) 2005-2017 LaTeX3 Project, Jin-Hwan Cho, Shunsaku Hirata +%% (with contributions from many others) %% -%% Copyright 2004-2007, 2009, 2013-2016 -%% Ross Moore <ross@maths.mq.edu.au> -%% modified by Jonathan Kew et al. -%% -%% Copyright 2016 LaTeX3 project and above named authors. -%% -%% This file is not part of the Standard LaTeX `Graphics Bundle'. -%% It may be distributed under the terms of the LaTeX Project Public -%% License, as described in lppl.txt in the base LaTeX distribution. -%% Either version 1.0 or, at your option, any later version. +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3c +%% 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.3c or later is part of all distributions of LaTeX +%% version 2005/12/01 or later. %% %% This work has the LPPL maintenance status `maintained'. %% @@ -18,154 +15,8 @@ %% %% https://github.com/latex3/graphics-def/issues %% -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% Version History -%% -%% 2016/07/11 [DPC] [v4.10] \mag test added to all the files -%% Remove spurious dependency on external packages. -%% Avoid \@ehd help text (not defined by miniltx) -%% -%% 2016/07/02 [DPC] [v4.09] support new (no)setpagesize options of -%% color and graphics packages. -%% revert pagecolor code to match dvips -%% -%% 2016/04/06 [AK] [v4.08] Support new suffix .mps (or .MPS) for eps files -%% created by MetaPost. In TeX Live 2016, the option --mvorigin -%% for [x]dvipdfmx is necessary to include MetaPost-created eps -%% files by the usual \Ginclude@eps. This may a bit be inconvenient. -%% Thus we introduce a new command \Ginclude@mps for the suffix -%% .mps (or .MPS). In \Ginclude@mps, llx, lly, urx, and ury are -%% natural compared with those in \Ginclude@eps. Thus the origin -%% should not be translated, that is the option --mvorigin should -%% not be given. -%% -%% 2015/09/11 [AK, NA, TY] [v4.06] Support pagebox=artbox, etc. in xelatex, -%% like in pdflatex. It requires new xetex and xdvipdfmx, which -%% will be available in TeX Live 2016. Interested users may build -%% new binaries by using new sources in the TeX Live repository. -%% -%% 2015/03/26 [SH] [v4.04] JPEG 2000 (.jp2, .jpf) support, written for -%% dvipdfmx. -%% -%% 2014/04/28 [KB] [v4.03] \newif outside \def. Skipped 4.02. -%% -%% 2014/04/28 [HO] [v4.01] .CAPS extensions. -%% [KB] ordering: find .jpeg just after .jpg, -%% more like dvipdfmx.def. Also remove .sga/.sgi, -%% which were mismatched and never noticed. -%% Change version number to match dvipdfmx.def. -%% -%% 2014/04/07 [AK] [v0.99] remove spurious spaces. -%% -%% 2014/03/24 [AK] [v0.98] non-origin viewport, avoid double bp conversion. -%% -%% 2014/03/21 [KB] doc tweaks for project home at puszcza.gnu.org.ua. -%% -%% 2013/05/27 [KB] Version v0.97 non-commutative operations. -%% (code provided by Bruno Voisin) -%% -%% 2013/04/29 [KB] Version v0.96 handle non-origin ll corner. -%% (code provided by Bruno Voisin) -%% -%% 2013/02/04 [RRM] Version v0.95 added clipping support. -%% (code provided by Joseph Wright and Martin Scharrer) -%% -%% 2009/11/21 [KB] Version v0.94 merge the two 0.93's. -%% -%% 2009/10/28 [RRM] Version v0.93 fix big-point incompatibility; -%% -%% 2007/10/25 [JK] Version v0.93 added EPS support from dvipdfmx.def -%% (for use with xdvipdfmx, default driver in xetex 0.997) -%% -%% 2006/08/10 [JK] Version v0.92 correct type-check in \G@measure@QTm; -%% remove \G@PDF@ext, apply \lowercase instead; -%% make \XeTeXquote have catcode 12 rather than 11; -%% explicit space after "filename.ext" (reqd by xetex 0.995) -%% -%% 2006/07/19 [JK] Version v0.91 use \special{color ...} rather than -%% \special{x:textcolor ...} etc, for compatibility with -%% both xdv2pdf and xdvipdfmx drivers; -%% added .bmp to list of recognized graphics extensions -%% -%% 2006/01/09 [JK] Version v0.9 removed support for XeTeX versions -%% prior to 0.6 (when the \XeTeXpicfile parameters were -%% modified), to avoid problem when \XeTeXrevision inc. letters -%% -%% 2005/10/12 Version v0.8 removed spurious space in \convertHEX@ -%% -- found by Morten Hogholm -%% -%% 2004/05/09 Version v0.7 changed support for \pagecolor, adapted -%% from pdftex.def, to put a \special in the \shipout ; -%% this driver should now work with miniltx.tex ; -%% changed some control-sequence names; -%% implemented HSB to RGB color conversion -%% identified the redundant (v0.5) coding more clearly. -%% -%% 2004/05/08 Version v0.6 properly implements scaling and rotations -%% following the coding used with pdftex.def ; -%% implemented `viewport' and prepared for `clip'; -%% don't rely on " to have correct catcode; -%% altered the suffix order for graphics, to be: -%% .pdf .png .jpg .pict .tif .... -%% -%% 2004/04/29 Version v0.5 adapts to the changed names for the -%% graphics inclusion primitives, and version strings. -%% -%% 2004/04/23 Version v0.41 works with graphics.sty as well as -%% graphicx.sty ; \G@pdf@ext is '.pdf'; -%% similarly define and use \G@PDF@ext for '.PDF'; -%% removed some log-messages. -%% -%% 2004/04/22 Version v0.4 designed to work with XeTeX v0.4 -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% emacs-page \ProvidesFile{xetex.def} - [2016/07/11 v4.10 LaTeX color/graphics driver for XeTeX (L3/RRM/JK)] -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% make sure we can use " with correct catcode -{\catcode`\"=12 - \gdef\XeTeXquote{"}% -} - -% miniltx.tex does not define \PackageWarning -\@ifundefined{PackageWarning}{% - \def\PackageWarning#1#2{% - \begingroup - \def\@spaces{\space\space\space\space}% - \ifx\on@line\@undefined\def\on@line{}\fi - \newlinechar=10 % - \def\MessageBreak{% - ^^J(#1)\@spaces\@spaces\@spaces\@spaces - }% - \immediate\write16{^^JPackage #1 Warning: #2\on@line.^^J}% - \endgroup - }% -}{} - -\def\GPT@warn{\PackageWarning{xetex.def}}% - -\@ifundefined{on@line}{% - \def\on@line{ on input line \the\inputlineno}% -}{} -\@ifundefined{@spaces}{% - \def\@spaces{\space\space\space\space}% -}{} -\def\GXT@warn{\PackageWarning{xetex.def}}% -\ifx\Gin@log\@undefined - \def\Gin@log{\message} -\fi - -% Colour Support. The following models may be used. -% * rgb \ -% * cmyk \ -% * gray /-- all passed directly to the driver -% * hsb / -% * RGB ---- converted to rgb here -% * named -% + [2017/06/01 v5.0a Graphics/color driver for xetex] \def\c@lor@arg#1{% \dimen@#1\p@ \ifdim\dimen@<\z@\dimen@\maxdimen\fi @@ -174,7 +25,7 @@ \fi} \def\color@gray#1#2{% \c@lor@arg{#2}% - \edef#1{gray #2}% + \edef#1{[#2]}% } \def\color@cmyk#1#2{\c@lor@@cmyk#2\@@#1} \def\c@lor@@cmyk#1,#2,#3,#4\@@#5{% @@ -182,14 +33,14 @@ \c@lor@arg{#1}% \c@lor@arg{#2}% \c@lor@arg{#3}% - \edef#5{cmyk #1 #2 #3 #4}% + \edef#5{[#1 #2 #3 #4]}% } \def\color@rgb#1#2{\c@lor@@rgb#2\@@#1} \def\c@lor@@rgb#1,#2,#3\@@#4{% \c@lor@arg{#1}% \c@lor@arg{#2}% \c@lor@arg{#3}% - \edef#4{rgb #1 #2 #3}% + \edef#4{[#1 #2 #3]}% } \def\color@RGB#1#2{\c@lor@@RGB#2\@@#1} \def\c@lor@@RGB#1,#2,#3\@@#4{% @@ -202,404 +53,188 @@ \dimen@#1\p@ \divide\dimen@\@cclv \edef#2{\strip@pt\dimen@}} -\def\color@hsb#1#2{\c@lor@@hsb#2\@@#1} -\def\c@lor@@hsb#1,#2,#3\@@#4{% - \c@lor@arg{#1}% - \c@lor@arg{#2}% - \c@lor@arg{#3}% - \edef#4{hsb #1 #2 #3}% - } \def\color@named#1#2{\c@lor@@named#2,,\@@#1} \def\c@lor@@named#1,#2,#3\@@#4{% \@ifundefined{col@#1}% {\PackageError{color}{Undefined color `#1'}{}}% {\edef#4{ #1}}% } - -\def\current@color{gray 0} - -% -% v0.02t: support for \pagecolor -% not used by default but may be re-activated -% with \oldxetexpagecolorcode -% see http://tug.org/pipermail/xetex/2016-June/026696.html -% -\def\oldxetexpagecolorcode{% -\def\set@page@color{% - \global\let\current@page@color\current@color - \@ifundefined{GXTorg@shipout}{% - \global\let\GXTorg@shipout\shipout - \gdef\shipout{% - \afterassignment\GXT@shipout - \global\setbox\@cclv=% - }% - \gdef\GXT@shipout{% - \ifvoid\@cclv\relax - \aftergroup\GXT@@shipout - \GXT@setpagecolor - \else - \GXTorg@shipout\vbox{% - \GXT@setpagecolor - \box\@cclv - }% - \fi - }% - \gdef\GXT@@shipout{% - \GXTorg@shipout\box\@cclv\relax - }% - \gdef\GXT@setpagecolor{% - \special{background \current@page@color}% - }% - }{}% -}% -} -\def\set@page@color{\special{background \current@color}} - -\def\set@color@stack{% - \special{color push \current@color}% - \aftergroup\reset@color -} -\def\set@color@nostack{% - \special{color \current@color}% - \aftergroup\reset@color -} -\def\reset@color@nostack{% - \special{color \current@color}% - \expandafter\checkfor@moreresets +\def\c@lor@to@ps#1 #2\@@{\csname c@lor@ps@#1\endcsname#2 \@@} +\def\c@lor@ps@#1 #2\@@{TeXDict begin #1 end} +\def\c@lor@ps@rgb#1\@@{#1 setrgbcolor} +\def\c@lor@ps@hsb#1\@@{#1 sethsbcolor} +\def\c@lor@ps@cmyk#1\@@{#1 setcmykcolor} +\def\c@lor@ps@gray#1\@@{#1 setgray} +\def\current@color{[0]} +\def\set@color{% + \special{pdf:bcolor \current@color + }\aftergroup\reset@color} +\def\reset@color{\special{% + pdf:ecolor}} +\def\set@page@color{\special{% + pdf:bgcolor \current@color}} +\def\define@color@named#1#2{% + \expandafter\let\csname col@#1\endcsname\@nnil} +\@ifundefined{Gin@page} + {\let\Gin@page\@empty} + {} +\@ifundefined{Gin@pagebox} + {\def\Gin@pagebox{cropbox}} + {} +\@ifundefined{Gin@interpolate} + {\csname newif\endcsname\ifGin@interpolate} + {} +\def\Gread@pdf#1{% + \Gin@interpolatefalse + \Gread@@xetex\XeTeXpdffile } -\def\reset@color@stack{% - \special{color pop}% - \expandafter\checkfor@moreresets +\def\Gread@bmp#1{% + \let\Gin@page\@empty + \let\Gin@pagebox\@empty + \Gread@@xetex\XeTeXpicfile } -\def\checkfor@moreresets{\futurelet\tmp\checkfor@moreresets@} -\def\checkfor@moreresets@{% - \ifx\tmp\reset@color\expandafter\gobble@color\fi} -\def\gobble@color#1{\checkfor@moreresets} - -\def\define@color@named#1#2{% - \expandafter\edef\csname col@#1\endcsname{#2}} -% -\def\check@for@XeTeX@colorstack{% - \expandafter\ifx\csname use@XeTeX@colorstack\endcsname\relax - \let\set@color\set@color@stack - \let\reset@color\reset@color@stack - \let\checkfor@moreresets\relax - \else - \let\set@color\set@color@nostack - \let\reset@color\reset@color@nostack - \fi +\def\Gread@@xetex#1{% + \IfFileExists{\Gin@base.bb}% + {\Gread@eps{\Gin@base.bb}}% + {\Gread@@xetex@aux#1}% } -% -% use \noXeTeXcolorstack to turn off the color-stack -% mechanism; use it within the preamble only. -% This may be useful with some packages -% e.g. TeXpower which makes partial page-builds. -% -\def\noXeTeXcolorstack{\def\use@XeTeX@colorstack{}} -\AtBeginDocument{\check@for@XeTeX@colorstack} -% -% < end of color support for XeTeX > - -% < graphics inclusion for XeTeX > -% -% PDF is a special case which has extra features -\def\G@pdf@ext{.pdf} -% -% import from pdftex.def to support pagebox=artbox etc. in XeLaTeX -% -% \Gin@XeTeX@page: page number of pdf image or \@empty otherwise. -% This code adapted from pdftex.def -\let\Gin@XeTeX@page\@empty -\let\GPT@pagebox\@empty -\begingroup - \toks@{\define@key{Gin}{page}{\def\Gin@XeTeX@page{#1}} -\define@key{Gin}{pagebox}{% - \expandafter\let\expandafter\GPT@pagebox% - \csname GPT@pagebox@#1\endcsname - \ifx\GPT@pagebox\relax - \let\GPT@pagebox\@empty - \GPT@warn{% - Unknown value `#1' for `pagebox'.\MessageBreak - Supported values:\MessageBreak - mediabox, cropbox, bleedbox, trimbox, artbox% - }% - \fi% -}% -}% - \@ifundefined{define@key}{% - \edef\x{\endgroup\noexpand\AtBeginDocument{% - \noexpand\@ifundefined{define@key}{}{\the\toks@}}% - }\x - }{\expandafter\endgroup\the\toks@} - -\def\GPT@pagebox@cropbox{crop}% -\def\GPT@pagebox@mediabox{media}% -\def\GPT@pagebox@artbox{art}% -\def\GPT@pagebox@trimbox{trim}% -\def\GPT@pagebox@bleedbox{bleed}% -% -% rotating graphics is supported, but -% rotation of arbitrary material is not supported yet -% -\def\GXT@erotate#1#2{\Grot@setangle{#1}\hbox{#2}}% -\def\set@GXT@erotate{\let\Gin@erotate\GXT@erotate} -%\AtBeginDocument{\set@GXT@erotate} - -\expandafter\ifx\csname XeTeXpicfile\endcsname\relax - \let\picfile@cmd\picfile - \let\pdffile@cmd\pdffile -\else - \let\picfile@cmd\XeTeXpicfile - \let\pdffile@cmd\XeTeXpdffile -\fi - -% all graphics are handled by Apple's QuickTime -% -\def\XeTeX@include@QTm#1{% - \def\picpage{}% - \def\picpagebox{}% - \edef\type@ext{% - \noexpand\lowercase{% - \noexpand\def\noexpand\type@ext{\Gin@ext}% - }% - }\type@ext - \ifx\type@ext\G@pdf@ext - \ifx\GPT@pagebox\@empty\else - \edef\picpagebox{ \GPT@pagebox}\fi - \ifx\Gin@XeTeX@page\@empty\else - \edef\picpage{ page\Gin@XeTeX@page}\fi - \def\picfilecommand{\pdffile@cmd}% - \else - \def\picfilecommand{\picfile@cmd}% - \fi - \edef\picfileargs{ \XeTeXquote#1\XeTeXquote\space\picpage\picpagebox}% - \Gin@log{% - <use \picfileargs>% +\def\Gread@@xetex@aux#1{% + \edef\Gin@attr@hash{% + \ifx\Gin@pagebox\@empty + \else + :\Gin@pagebox + \fi + \ifx\Gin@page\@empty + \else + :P\Gin@page + \fi }% - \ifx\Gscale@start\relax - \setbox\z@=\hbox{\expandafter\picfilecommand\picfileargs}% - \edef\next{\box\z@\egroup - \def\noexpand\width{\the\wd\z@}\relax - \def\noexpand\height{\the\ht\z@}\bgroup}% - \expandafter\next - \else - \XeTeX@scaleinclude{#1}% - \fi + \edef\Gin@@name{\Gin@base\Gin@ext}% + \@ifundefined{\Gin@@name\space height\Gin@attr@hash}% + {% + \setbox\@tempboxa=\hbox{% + #1"\Gin@@name"\space + \ifx\Gin@page\@empty\else page \Gin@page\fi + \ifx\Gin@pagebox\@empty\else\expandafter\Gread@@xetex@box\Gin@pagebox\fi + }% + \def\Gin@llx{0}\let\Gin@lly\Gin@llx + \Gin@defaultbp\Gin@urx{\wd\@tempboxa}% + \Gin@defaultbp\Gin@ury{\ht\@tempboxa}% + \expandafter\xdef\csname \Gin@@name\space height\Gin@attr@hash\endcsname + {\the\ht\@tempboxa}% + \expandafter\xdef\csname \Gin@@name\space width\Gin@attr@hash\endcsname + {\the\wd\@tempboxa}% + }{% + \def\Gin@llx{0}\let\Gin@lly\Gin@llx + \Gin@defaultbp\Gin@urx + {\csname \Gin@@name\space width\Gin@attr@hash\endcsname}% + \Gin@defaultbp\Gin@ury + {\csname \Gin@@name\space height\Gin@attr@hash\endcsname}% + }% } -\def\XeTeX@scaleinclude#1{% +\def\Gread@@xetex@box#1box{#1} +\def\GPT@setup@scale{% \def\@tempa{!}% \ifx\Gin@scaley\@tempa - \let\Gin@scaley\Gin@scalex + \let\Gin@scaley\Gin@scalex \else - \ifx\Gin@scalex\@tempa\let\Gin@scalex\Gin@scaley\fi + \ifx\Gin@scalex\@tempa\let\Gin@scalex\Gin@scaley\fi \fi +} +\def\Ginclude@pdf#1{% + \GPT@setup@scale + \Gin@log{% + <use #1% + \ifx\Gin@page\@empty\else, page \Gin@page\fi + >% + }% \hbox{% \Gscale@box{\Gin@scalex}[\Gin@scaley]{% \@ifundefined{Gin@vllx}{% - \GXT@viewportfalse + \GPT@viewportfalse % without viewport/trim clipping does not make sense - % for XeTeX + % for pdfTeX \Gin@clipfalse }{}% - \ifGin@clip - \if!\Gin@vllx\Gin@vlly\Gin@vurx\Gin@vury!% - \else - \let\GXT@clipend\GXT@DoClipEnd - \setbox\@tempboxa\hbox\bgroup + \ifGin@clip + \if!\Gin@vllx\Gin@vlly\Gin@vurx\Gin@vury!% + \else + \let\GPT@clipend\GPT@DoClipEnd + \setbox\@tempboxa\hbox\bgroup + \fi \fi - \fi - \ifGXT@viewport - \ifdim\Gin@vlly\p@=\z@ - \else - \lower\Gin@vlly bp\hbox\bgroup + \ifGPT@viewport + \ifdim\Gin@vlly\p@=\z@ + \else + \lower\Gin@vlly bp\hbox\bgroup + \fi + \ifdim\Gin@vllx\p@=\z@ + \else + \hskip-\Gin@vllx bp\relax + \fi \fi - \ifdim\Gin@vllx\p@=\z@ - \else - \hskip-\Gin@vllx bp\relax + \XeTeXpdffile"#1" % + \ifx\Gin@page\@empty\else page \Gin@page\fi + \ifx\Gin@pagebox\@empty\else\expandafter\Gread@@xetex@box\Gin@pagebox\fi + \ifGPT@viewport + \ifdim\Gin@vlly\p@=\z@ + \else + \egroup + \fi + \GPT@clipend \fi - \fi -% - \expandafter\picfilecommand\picfileargs -% - \ifGXT@viewport - \ifdim\Gin@vlly\p@=\z@ - \else - \egroup - \fi - \GXT@clipend - \fi }% }% } -\newif\ifGXT@viewport -\GXT@viewporttrue -\let\GXT@clipend\relax -\def\GXT@DoClipEnd{% +\newif\ifGPT@viewport +\GPT@viewporttrue +\let\GPT@clipend\relax +\def\GPT@DoClipEnd{% \egroup \dp\@tempboxa\z@ % \Gin@urx and \Gin@ury already contain the correct values, % so both cases viewport and trim can be handled together: \dimen@\Gin@urx\p@ - \advance\dimen@ -\Gin@vllx\p@ + \advance\dimen@ -\Gin@llx\p@ \wd\@tempboxa\strip@pt\dimen@ bp\relax -% \wd\@tempboxa\dimen@ \relax \dimen@\Gin@ury\p@ - \advance\dimen@ -\Gin@vlly\p@ + \advance\dimen@ -\Gin@lly\p@ \ht\@tempboxa\strip@pt\dimen@ bp\relax -% \ht\@tempboxa\dimen@ \relax - % Clip box to its official size - \GXT@clipbox\@tempboxa + \GPT@clipbox\@tempboxa \box\@tempboxa } -% Clipping support added by Martin Scharrer and Joseph Wright, Nov 2011 -% under the LPPL v1.0 or later. -\def\GXT@clipbox#1{% - \setbox#1=\hbox{% - \Gin@defaultbp\WIDTH{\wd#1}% - \Gin@defaultbp\DEPTH{\dp#1}% - \@tempdima\ht#1% - \advance\@tempdima\dp#1% - \Gin@defaultbp\TOTALHEIGHT{\@tempdima}% - \special{pdf:content q }% - \special{% - pdf:literal direct - 0 -\DEPTH\space \WIDTH\space \TOTALHEIGHT\space re - }% - \special{pdf:literal direct W }% - \special{pdf:literal direct n }% - \special{pdf:literal direct -1 0 0 -1 0 0 cm }% - \special{pdf:content q }% - \special{pdf:literal direct -1 0 0 -1 0 0 cm }% - \box#1% - \special{pdf:literal direct Q }% - \special{pdf:literal direct Q }% - }% -} -% End of clipping code - -% -\def\Gread@QTm#1{\IfFileExists{\Gin@base.bb}% - {\Gread@eps{\Gin@base.bb}}% - {\G@measure@QTm{\Gin@base}{\Gin@ext}}% +\def\GPT@clipbox#1{% + \setbox#1=\hbox{% + \Gin@defaultbp\WIDTH{\wd#1}% + \Gin@defaultbp\DEPTH{\dp#1}% + \@tempdima\ht#1% + \advance\@tempdima\dp#1% + \Gin@defaultbp\TOTALHEIGHT{\@tempdima}% + \special{x:gsave}% + \special{% + pdf:literal + 0 -\DEPTH\space \WIDTH\space \TOTALHEIGHT\space re W n + }% + \rlap{\box#1}% + \special{x:grestore}% + \hskip\wd#1% + }% } -\def\G@measure@QTm#1#2{% - % \@warning{measuring size of QuickTime graphic #1#2}% +\def\Ginclude@bmp#1{% + \Gin@log{<#1>}% \bgroup - \edef\type@ext{% - \noexpand\lowercase{% - \noexpand\def\noexpand\type@ext{#2}% - }% - }\type@ext - \ifx\type@ext\G@pdf@ext - \ifx\Gin@XeTeX@page\@empty \def\picpage{}% - \else \edef\picpage{ page\Gin@XeTeX@page}\fi - \ifx\GPT@pagebox\@empty \def\picpagebox{}% - \else \edef\picpagebox{ \GPT@pagebox}\fi - \fi - \setbox0=\hbox{% - \ifx\type@ext\G@pdf@ext - \edef\piccommand{\noexpand\pdffile@cmd - \XeTeXquote#1#2\XeTeXquote\space\picpage\picpagebox}% - \else - \edef\piccommand{\noexpand\picfile@cmd - \XeTeXquote#1#2\XeTeXquote\space}% - \fi - \piccommand - }\dimen0=\wd0 \dimen2=\ht0 - \edef\next{\egroup - \edef\noexpand\Gin@urx{\the\dimen0}% - \edef\noexpand\Gin@ury{\the\dimen2}% - }% - \next - \Gin@defaultbp\Gin@llx{0}% - \Gin@defaultbp\Gin@lly{0}% - \expandafter\Gin@defaultbp\expandafter\Gin@urx\expandafter{\Gin@urx}% - \expandafter\Gin@defaultbp\expandafter\Gin@ury\expandafter{\Gin@ury}% -% \typeout{XeTeX: HiRes BoundingBox = (0,0)\space x (\Gin@urx,\Gin@ury) }% - \Gin@nat@width=\Gin@urx\p@ - \Gin@nat@height=\Gin@ury\p@ - % these emulate \@begin@tempboxa - \edef\width{\the\Gin@nat@width}% - \edef\height{\the\Gin@nat@height}% - \def\depth{0pt}% - \let\totalheight\@ovri - \totalheight\height -} - -\let\Ginclude@QTm\XeTeX@include@QTm - -% For a new graphics type, you can include a line here ... -\@namedef{Gin@rule@.pdf}#1{{QTm}{QTm}{#1}} -\@namedef{Gin@rule@.PDF}#1{{QTm}{QTm}{#1}} -% -\@namedef{Gin@rule@.eps}#1{{eps}{.eps}{#1}} -\@namedef{Gin@rule@.EPS}#1{{eps}{.EPS}{#1}} -% -\@namedef{Gin@rule@.mps}#1{{mps}{.mps}{#1}} -\@namedef{Gin@rule@.MPS}#1{{mps}{.MPS}{#1}} -% -\@namedef{Gin@rule@.ps}#1{{eps}{.ps}{#1}} -\@namedef{Gin@rule@.PS}#1{{eps}{.PS}{#1}} -% -\@namedef{Gin@rule@.png}#1{{QTm}{QTm}{#1}} -\@namedef{Gin@rule@.PNG}#1{{QTm}{QTm}{#1}} -% -\@namedef{Gin@rule@.jpg}#1{{QTm}{QTm}{#1}} -\@namedef{Gin@rule@.JPG}#1{{QTm}{QTm}{#1}} -\@namedef{Gin@rule@.jpeg}#1{{QTm}{QTm}{#1}} -\@namedef{Gin@rule@.JPEG}#1{{QTm}{QTm}{#1}} -% -\@namedef{Gin@rule@.jp2}#1{{QTm}{QTm}{#1}} -\@namedef{Gin@rule@.JP2}#1{{QTm}{QTm}{#1}} -% -\@namedef{Gin@rule@.jpf}#1{{QTm}{QTm}{#1}} -\@namedef{Gin@rule@.JPF}#1{{QTm}{QTm}{#1}} -% -\@namedef{Gin@rule@.bmp}#1{{QTm}{QTm}{#1}} -\@namedef{Gin@rule@.BMP}#1{{QTm}{QTm}{#1}} -% -\@namedef{Gin@rule@.pict}#1{{QTm}{QTm}{#1}} -\@namedef{Gin@rule@.PICT}#1{{QTm}{QTm}{#1}} -% -\@namedef{Gin@rule@.psd}#1{{QTm}{QTm}{#1}} -\@namedef{Gin@rule@.PSD}#1{{QTm}{QTm}{#1}} -% -\@namedef{Gin@rule@.mac}#1{{QTm}{QTm}{#1}} -\@namedef{Gin@rule@.MAC}#1{{QTm}{QTm}{#1}} -\@namedef{Gin@rule@.tga}#1{{QTm}{QTm}{#1}} -\@namedef{Gin@rule@.TGA}#1{{QTm}{QTm}{#1}} -% -\@namedef{Gin@rule@.gif}#1{{QTm}{QTm}{#1}} -\@namedef{Gin@rule@.GIF}#1{{QTm}{QTm}{#1}} -% -\@namedef{Gin@rule@.tif}#1{{QTm}{QTm}{#1}} -\@namedef{Gin@rule@.TIF}#1{{QTm}{QTm}{#1}} -\@namedef{Gin@rule@.tiff}#1{{QTm}{QTm}{#1}} -\@namedef{Gin@rule@.TIFF}#1{{QTm}{QTm}{#1}} - -% movies not supported yet: -%\@namedef{Gin@rule@.qt}#1{{QTm}{QTm}{#1}} -%\@namedef{Gin@rule@.mpg}#1{{QTm}{QTm}{#1}} -%\@namedef{Gin@rule@.mov}#1{{QTm}{QTm}{#1}} -%\@namedef{Gin@rule@.moov}#1{{QTm}{QTm}{#1}} - - -% ... though this default rule will try QuickTime anyway ... -\@namedef{Gin@rule@*}#1{{QTm}{QTm}{#1}} - -% ... and add its extension here -\def\Gin@extensions{% order here is like dvipdfmx.def, except for PS - .pdf,.PDF,.eps,.EPS,.mps,.MPS,.ps,.PS,% - .png,.PNG,.jpg,.JPG,.jpeg,.JPEG,.jp2,.JP2,.jpf,.JPF,.bmp,.BMP,% - .pict,.PICT,.psd,.PSD,.mac,.MAC,.TGA,.tga,% - .gif,.GIF,.tif,.TIF,.tiff,.TIFF,% -} - -% xdvipdfmx is now the default driver, and can support EPS images, -% so we borrow code for this from dvipdfmx.def (and add the extensions above) + \def\@tempa{!}% + \special{pdf:image\space + bbox\space\Gin@llx\space\Gin@lly\space\Gin@urx\space\Gin@ury\space + clip\space\ifGin@clip 1\else 0\fi\space + \ifx\Gin@scalex\@tempa\else width\space\the\Gin@req@width\space\fi + \ifx\Gin@scaley\@tempa\else height\space\the\Gin@req@height\space\fi + (#1)\space + \ifGin@interpolate<</Interpolate\space true>>\fi}% + \egroup} \newif\if@trim@vport \def\Ginclude@eps#1{% - \message{<#1>}% + \Gin@log{<#1>}% \bgroup \ifx\Undefined\Gin@vllx\else\@trim@vporttrue\fi \def\@tempa{!}% @@ -639,14 +274,14 @@ % the origin accordingly if we use \Ginclude@eps for eps files created by % MetaPost. In TeX Live 2015, the translation of the origin was the default. % After TeX Live 2016, however, the translation of the origin is enabled only -% if the --mvorigin option is given for dvipdfmx or xdvipdfmx. -% This may be a bit inconvenient, especially in the case of XeTeX where +% if the --mvorigin option is given for xdvipdfmx +% This may be a bit inconvenient, especially as % xdvipdfmx is usually called as a pipe. Therefore we introduce a new suffix % .mps(or .MPS) to support inclusion of eps files created by MetaPost without % the option --mvorigin. % \def\Ginclude@mps#1{% - \message{<#1>}% + \Gin@log{<#1>}% \bgroup \def\@tempa{!}% \dimen@\Gin@req@width @@ -664,23 +299,92 @@ \ifGin@clip clip\fi}% \egroup} % -% Rotation & Scaling -% supported from xetex v0.6 onwards -% - -\def\Grot@start{\wd\z@\z@ - \special{x:gsave}\special{x:rotate \Grot@angle}} -\def\Grot@end{\special{x:grestore}} +\def\Grot@start{% +\special{pdf:btrans rotate \Grot@angle}} +\def\Grot@end{\special{pdf:etrans}} +% 4.13 add support for ptex vertical writing mode +% inspired by pxtatescale package (Hironobu Yamashita) +\ifx\kanjiskip\@undefined \def\Gscale@start{% - \special{x:gsave}% - \special{pdf:literal \Gscale@x\space 0 0 \Gscale@y\space 0 0 cm}} -\let\Gscale@end\Grot@end + \special{pdf:btrans}% + \special{x:scale \Gscale@x\space\Gscale@y}% +} +\else +\edef\Gscale@start{% + \special{pdf:btrans}% + \special{x:scale + \expandafter\noexpand\csname iftdir\endcsname + \noexpand\Gscale@y\noexpand\space\noexpand\Gscale@x + \expandafter\noexpand\csname else\endcsname + \noexpand\Gscale@x\noexpand\space\noexpand\Gscale@y + \expandafter\noexpand\csname fi\endcsname}} +\fi % - +\def\Gscale@end{\special{pdf:etrans}} +\def\Gin@PS@raw#1{\special{ps: #1}} +\def\Gin@PS@restored#1{\special{" #1}} +\def\Gin@PS@literal@header#1{\AtBeginDvi{\special{! #1}}} +\def\Gin@PS@file@header#1{\AtBeginDvi{\special{header=#1}}} +\def\Gin@extensions{% order here is like pdftex.def, except for PS + .pdf,.PDF,.ai,.AI,% + .png,.PNG,.jpg,.JPG,.jpeg,.JPEG,.jp2,.JP2,.jpf,.JPF,.bmp,.BMP,% + .ps,.PS,.eps,.EPS,.mps,.MPS,% + .pz,.eps.Z,.ps.Z,.ps.gz,.eps.gz} +% +\@namedef{Gin@rule@.pdf}#1{{pdf}{.xbb}{#1}} +\@namedef{Gin@rule@.PDF}#1{{pdf}{.xbb}{#1}} +% +\@namedef{Gin@rule@.ai}#1{{pdf}{.xbb}{#1}} +\@namedef{Gin@rule@.AI}#1{{pdf}{.xbb}{#1}} % -% (no)setpagesize option +\@namedef{Gin@rule@.jp2}#1{{bmp}{.xbb}{#1}} +\@namedef{Gin@rule@.JP2}#1{{bmp}{.xbb}{#1}} % +\@namedef{Gin@rule@.jpf}#1{{bmp}{.xbb}{#1}} +\@namedef{Gin@rule@.JPF}#1{{bmp}{.xbb}{#1}} +% +\@namedef{Gin@rule@.png}#1{{bmp}{.xbb}{#1}} +\@namedef{Gin@rule@.PNG}#1{{bmp}{.xbb}{#1}} +% +\@namedef{Gin@rule@.jpg}#1{{bmp}{.xbb}{#1}} +\@namedef{Gin@rule@.JPG}#1{{bmp}{.xbb}{#1}} +% +\@namedef{Gin@rule@.jpeg}#1{{bmp}{.xbb}{#1}} +\@namedef{Gin@rule@.JPEG}#1{{bmp}{.xbb}{#1}} +% +\@namedef{Gin@rule@.jp2}#1{{bmp}{.xbb}{#1}} +\@namedef{Gin@rule@.JP2}#1{{bmp}{.xbb}{#1}} +% +\@namedef{Gin@rule@.jpf}#1{{bmp}{.xbb}{#1}} +\@namedef{Gin@rule@.JPF}#1{{bmp}{.xbb}{#1}} +% +\@namedef{Gin@rule@.bmp}#1{{bmp}{.xbb}{#1}} +\@namedef{Gin@rule@.BMP}#1{{bmp}{.xbb}{#1}} +% +\@namedef{Gin@rule@.ps}#1{{eps}{.ps}{#1}} +\@namedef{Gin@rule@.PS}#1{{eps}{.ps}{#1}} +% +\@namedef{Gin@rule@.eps}#1{{eps}{.eps}{#1}} +\@namedef{Gin@rule@.EPS}#1{{eps}{.eps}{#1}} +% +\@namedef{Gin@rule@.mps}#1{{mps}{.mps}{#1}} +\@namedef{Gin@rule@.MPS}#1{{mps}{.mps}{#1}} +% (don't bother with uppercase versions for these Unixish extensions) +\@namedef{Gin@rule@.pz}#1{{eps}{.xbb}{`gunzip -c #1}} +\@namedef{Gin@rule@.eps.Z}#1{{eps}{.eps.xbb}{`gunzip -c #1}} +\@namedef{Gin@rule@.ps.Z}#1{{eps}{.ps.xbb}{`gunzip -c #1}} +\@namedef{Gin@rule@.ps.gz}#1{{eps}{.ps.xbb}{`gunzip -c #1}} +\@namedef{Gin@rule@.eps.gz}#1{{eps}{.eps.xbb}{`gunzip -c #1}} +% +\@namedef{Gin@rule@*}#1{{eps}{\Gin@ext}{#1}} + + +% v4.10 +% Support new (no)setpagesize option of graphics and color. +% v4.11 +% Use \special{pdf:pagesize ...} instead of \special{papersize=...} +% to support \mag (xetex only) \@ifundefined{ifGin@setpagesize} {\expandafter\let\csname ifGin@setpagesize\expandafter\endcsname \csname iftrue\endcsname} @@ -691,29 +395,19 @@ % If a package has changed \mag, assume it knows what it is doing % and leave page size alone \ifnum\mag=\@m -\@ifundefined{stockwidth}{% -\@ifundefined{paperwidth}{% -}{% -\ifdim\paperwidth>0pt\relax -\ifdim\paperheight>0pt\relax -\pdfpagewidth=\paperwidth -\pdfpageheight=\paperheight -\fi +\AtBeginDvi{% +\begingroup +\ifx\stockwidth\@undefined\else +\paperwidth\stockwidth +\paperheight\stockheight \fi -}% -}{% -\ifdim\stockwidth>0pt\relax -\ifdim\stockheight>0pt\relax -\pdfpagewidth=\stockwidth -\pdfpageheight=\stockheight +\ifdim\paperwidth>\z@ +\ifdim\paperheight>\z@ +\special{pdf:pagesize width \the\paperwidth\space height \the\paperheight}% \fi \fi -}% +\endgroup}% \fi } \fi -\fi - -\endinput -%% -%% End of file `xetex.def'. +\fi |