summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/graphics-def/xetex.def
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/graphics-def/xetex.def')
-rw-r--r--Master/texmf-dist/tex/latex/graphics-def/xetex.def802
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