summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/newpax/newpax.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/newpax/newpax.sty')
-rw-r--r--Master/texmf-dist/tex/latex/newpax/newpax.sty677
1 files changed, 677 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/newpax/newpax.sty b/Master/texmf-dist/tex/latex/newpax/newpax.sty
new file mode 100644
index 00000000000..e25397bb435
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/newpax/newpax.sty
@@ -0,0 +1,677 @@
+%%
+%% This is file `newpax.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% newpax.dtx (with options: `package')
+%%
+%% Copyright (C) 2021 Ulrike Fischer
+%%
+%% It may be distributed and/or modified under the conditions of
+%% the LaTeX Project Public License (LPPL), either version 1.3c of
+%% this license or (at your option) any later version. The latest
+%% version of this license is in the file:
+%%
+%% https://www.latex-project.org/lppl.txt
+%%
+%% This file is part of the "newpax bundle" (The Work in LPPL)
+%% and all files in that bundle must be distributed together.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{newpax}%
+ [2021-03-07 v0.51 Annotation support for PDF graphics based on pax.sty adapted by (UF)]%
+\ExplSyntaxOn
+\bool_if:nF
+ {
+ \cs_if_exist_p:N \pdfmanagement_if_active_p:
+ }
+ { %error for now, perhaps warning later.
+ \PackageError{newpax}
+ {
+ PDF~resource~management~code~not~found!\MessageBreak
+ newpage~will~no~work.
+ }
+ {
+ Load~it~with \MessageBreak
+ \string\RequirePackage{pdfmanagement-testphase}\MessageBreak
+ before~loading~the~class
+ }
+ }
+
+\ExplSyntaxOff
+\RequirePackage{graphicx}
+\RequirePackage{ltxcmds}[2011/04/18]
+\RequirePackage{kvsetkeys}[2011/04/07]
+\RequirePackage{kvoptions}[2010/12/23]
+\RequirePackage{auxhook}[2011/03/04]
+\RequirePackage{etoolbox}
+\RequirePackage{xfp}
+
+\ExplSyntaxOn
+\cs_set_eq:NN \newpax@str@if@eq@@nnT\str_if_eq:nnT
+
+\bool_new:N \l__newpax_use_attributes_bool
+\bool_new:N \l__newpax_addannots_bool
+
+\tl_new:N \l__newpax_destsuffix_tl
+\tl_new:N \NEWPAX@fileextension
+
+\cs_generate_variant:Nn \pdfannot_dict_put:nnn {nnx,xnx,xnn}
+\NewDocumentCommand\newpaxsetup { m }
+ {
+ \keys_set:nn {newpax}{ #1}
+ }
+
+\keys_define:nn {newpax}
+ {
+ usefileattributes .bool_set:N = \l__newpax_use_attributes_bool,
+ destsuffix .tl_set:N = \l__newpax_destsuffix_tl,
+ addannots .bool_set:N = \l__newpax_addannots_bool,
+ addannots .default:n = true,
+ addannots .initial:n = true,
+ paxextension .choices:nn =
+ {pax,newpax}
+ {\tl_set:Nn \NEWPAX@fileextension {#1}},
+ paxextension .initial:n = newpax
+ }
+
+\cs_new_protected:Npn \@NEWPAX@setattributes@n #1 %link type
+ {
+ \bool_if:NT \l__newpax_use_attributes_bool
+ {
+ \tl_if_empty:NTF \NEWPAX@key@C
+ {
+ \pdfannot_dict_remove:nn {link/#1} { C }
+ }
+ {
+ \pdfannot_dict_put:nnx
+ {link/#1}
+ { C }
+ { \NEWPAX@key@C }
+ }
+ \tl_if_empty:NTF \NEWPAX@key@Border
+ {
+ \pdfannot_dict_remove:nn {link/#1} { Border }
+ }
+ {
+ \pdfannot_dict_put:nnx
+ {link/#1}
+ { Border }
+ { \NEWPAX@key@Border }
+ }
+ \tl_if_empty:NTF \NEWPAX@key@BS
+ {
+ \pdfannot_dict_remove:nn {link/#1} { BS }
+ }
+ {
+ \pdfannot_dict_put:nnx
+ {link/#1}
+ { BS }
+ { \NEWPAX@key@BS }
+ }
+ \tl_if_empty:NTF \NEWPAX@key@H
+ {
+ \pdfannot_dict_remove:nn {link/#1} { H }
+ }
+ {
+ \pdfannot_dict_put:nnx
+ {link/#1}
+ { H }
+ { \NEWPAX@key@H }
+ }
+ }
+ }
+
+\cs_new_protected:Npn \@NEWPAX@linkgoto@xnn #1 #2 #3 %#1 dest #2 width #3 height
+ {
+ \group_begin:
+ \exp_args:Nx\@NEWPAX@setattributes@n {GoTo}
+ \leavevmode
+ \exp_args:Nx\pdfannot_link_goto_begin:nw
+ { #1 }
+ \@NEWPAX@ensurelinkbox@n{\hbox_to_wd:nn {#2}{ { \rule{0pt}{#3} }\hfill}}
+ \pdfannot_link_goto_end:
+ \group_end:
+ }
+
+\cs_new_protected:Npn \@NEWPAX@link@setaction@nn #1 #2
+ {
+ \pdfannot_dict_put:nnn{link/#1}{Subtype}{/Link}
+ \pdfannot_dict_put:nnx{link/#1}{A}
+ {<</Type/Action/S/#1 #2>>}
+ }
+
+\cs_new_protected:Npn \@NEWPAX@annotboxlink@nnn #1 #2 #3 %#1 type, #2 width #3 height
+ {
+ \group_begin:
+ \exp_args:Nx\@NEWPAX@setattributes@n {#1}
+ \leavevmode
+ \pdfannot_box:nnnx {#2}{#3}{0pt}
+ {\pdfannot_dict_use:n{link/#1}}
+ \group_end:
+ }
+
+\cs_new_protected:Npn \@NEWPAX@destination@xx #1 #2
+ {
+ \exp_args:Nxx \pdf_destination:nn {#1}{#2}
+ }
+
+\sys_if_engine_xetex:TF
+ {
+ \cs_set_eq:NN \@NEWPAX@ensurelinkbox@n \XeTeXLinkBox
+ }
+ {
+ \cs_set_eq:NN \@NEWPAX@ensurelinkbox@n \use:n
+ }
+\ExplSyntaxOff
+\let\NEWPAX@ORG@includegraphics\includegraphics
+\def\includegraphics{%
+ \@ifstar{%
+ \@ifnextchar[{%
+ \begingroup
+ \def\x{\endgroup
+ \NEWPAX@includegraphics[clip,%
+ }%
+ \expandafter\x\@gobble
+ }{%
+ \NEWPAX@includegraphics[clip]%
+ }%
+ }{%
+ \@ifnextchar[{%
+ \NEWPAX@includegraphics
+ }{%
+ \NEWPAX@includegraphics[]%
+ }%
+ }%
+}
+
+\ExplSyntaxOn
+\def\NEWPAX@includegraphics[#1]#2{%
+ \begingroup
+ \sbox0{\NEWPAX@ORG@includegraphics[{#1}]{#2}}%
+ \edef\NEWPAX@inc@width{\the\wd0}%
+ \edef\NEWPAX@inc@height{\the\dimexpr\dp0+\ht0}%
+ \leavevmode
+ \hbox to \wd0{%
+ \rlap{\copy0}%
+ \bool_if:nT
+ { \l__newpax_addannots_bool
+ &&
+ (
+ \int_compare_p:nNn
+ {
+ \cs_if_exist:NTF\pdfpages@includegraphics@status
+ {
+ \pdfpages@includegraphics@status
+ }{0}
+ }
+ <
+ {2}
+ )
+ }
+ {
+ \raise-\dp0\hbox
+ {
+ \NEWPAX@AddAnnots{#1}{#2}%
+ }
+ }
+ \hfill
+ }
+ \endgroup
+}
+\ExplSyntaxOff
+\SetupKeyvalOptions{family=NEWPAX@Gin,prefix=NEWPAX@Gin@}
+\DeclareStringOption[1]{page}
+\DeclareStringOption[0]{angle}
+\DeclareBoolOption{clip}
+\define@key{NEWPAX@Gin}{viewport}{%
+ \ltx@LocalAppendToMacro\NEWPAX@Gin@box@opts{%
+ \NEWPAX@viewport#1\\%
+ }%
+}
+\define@key{NEWPAX@Gin}{trim}{%
+ \ltx@LocalAppendToMacro\NEWPAX@Gin@box@opts{%
+ \NEWPAX@trim#1\\%
+ }%
+}
+\let\NEWPAX@Gin@box@opts\@empty
+
+\def\NEWPAX@viewport#1 #2 #3 #4\\{%
+ \NEWPAX@defaultbp\NEWPAX@vllx{#1}%
+ \NEWPAX@defaultbp\NEWPAX@vlly{#2}%
+ \NEWPAX@defaultbp\NEWPAX@vurx{#3}%
+ \NEWPAX@defaultbp\NEWPAX@vury{#4}%
+ \edef\NEWPAX@page@llx{\dimexpr\NEWPAX@page@llx+\NEWPAX@vllx\relax}%
+ \edef\NEWPAX@page@lly{\dimexpr\NEWPAX@page@lly+\NEWPAX@vlly\relax}%
+ \edef\NEWPAX@page@urx{\dimexpr\NEWPAX@page@llx+\NEWPAX@vlly\relax}%
+ \edef\NEWPAX@page@ury{\dimexpr\NEWPAX@page@lly+\NEWPAX@vury\relax}%
+}
+\def\NEWPAX@trim#1 #2 #3 #4\\{%
+ \NEWPAX@defaultbp\NEWPAX@tllx{#1}%
+ \NEWPAX@defaultbp\NEWPAX@tlly{#2}%
+ \NEWPAX@defaultbp\NEWPAX@turx{#3}%
+ \NEWPAX@defaultbp\NEWPAX@tury{#4}%
+ \edef\NEWPAX@page@llx{\dimexpr\NEWPAX@page@llx+\NEWPAX@tllx\relax}%
+ \edef\NEWPAX@page@lly{\dimexpr\NEWPAX@page@lly+\NEWPAX@tlly\relax}%
+ \edef\NEWPAX@page@urx{\dimexpr\NEWPAX@page@urx-\NEWPAX@turx\relax}%
+ \edef\NEWPAX@page@ury{\dimexpr\NEWPAX@page@ury-\NEWPAX@tury\relax}%
+}
+
+\def\NEWPAX@defaultbp#1#2{%
+ \afterassignment\NEWPAX@def@bp\dimen@#2bp\relax{#1}{#2}%
+}
+\def\NEWPAX@def@bp#1\relax#2#3{%
+ \if!#1!%
+ \edef#2{#3bp}%
+ \else
+ \edef#2{#3}%
+ \fi
+}
+
+\kv@set@family@handler{NEWPAX@Gin}{}
+
+\def\NEWPAX@AddAnnots#1#2{%
+ \kvsetkeys{NEWPAX@Gin}{#1}%
+ \Grot@setangle{\NEWPAX@Gin@angle}%
+ % a little careful, is type of angle int or real?
+ \loop
+ \ifdim\NEWPAX@Gin@angle\p@<360\p@
+ \else
+ \edef\NEWPAX@Gin@angle{\the\numexpr-360+\number\NEWPAX@Gin@angle}%
+ \repeat
+ \loop
+ \ifdim\NEWPAX@Gin@angle\p@<\z@
+ \edef\NEWPAX@Gin@angle{\strip@pt\dimexpr\NEWPAX@Gin@angle\p@+360\p@}%
+ \repeat
+ \ifcase0\ifnum\NEWPAX@Gin@angle=0 1\fi
+ \ifnum\NEWPAX@Gin@angle=90 1\fi
+ \ifnum\NEWPAX@Gin@angle=180 1\fi
+ \ifnum\NEWPAX@Gin@angle=270 1\fi
+ \PackageWarning{newpax}{Unsupported value for option angle}%
+ \fi
+ \filename@parse{#2}%
+ \def\NEWPAX@file{%\filename@area
+ \filename@base.\NEWPAX@fileextension }%
+ \let\[\NEWPAX@parser
+ \def\<{<}%
+ \def\>{>}%
+ \endlinechar=-1 %
+ \begingroup
+ \catcode`\#=12 \catcode`\%=12
+ \InputIfFileExists\NEWPAX@file{}{\typeout{* Missing: \NEWPAX@file}}\endgroup
+}
+\def\NEWPAX@parser#1{\NEWPAX@call{cmd}{#1}{}}%
+\def\NEWPAX@call#1#2#3{%
+ \@ifundefined{NEWPAX@#1@#2}\NEWPAX@skip{#3\csname NEWPAX@#1@#2\endcsname}%
+}
+\def\NEWPAX@skip#1\\{}
+\def\NEWPAX@stop#1\\{}
+
+\def\NEWPAX@cmd@page#1#2{%
+ \NEWPAX@filter@page{#1}{%
+ \NEWPAX@getrect{page}#2\@nil
+ \NEWPAX@Gin@box@opts
+ \ifcase0\ifnum\NEWPAX@Gin@angle=90 1\fi
+ \ifnum\NEWPAX@Gin@angle=270 1\fi
+ \else
+ \let\NEWPAX@temp\NEWPAX@inc@width
+ \let\NEWPAX@inc@width\NEWPAX@inc@height
+ \let\NEWPAX@inc@height\NEWPAX@temp
+ \fi
+ \Gscale@div\NEWPAX@scale@x\NEWPAX@inc@width{%
+ \dimexpr\NEWPAX@page@urx-\NEWPAX@page@llx\relax
+ }%
+ \Gscale@div\NEWPAX@scale@y\NEWPAX@inc@height{%
+ \dimexpr\NEWPAX@page@ury-\NEWPAX@page@lly\relax
+ }%
+ \NEWPAX@skip
+ }%
+}
+\def\NEWPAX@filter@page#1{%
+ \ifnum\NEWPAX@Gin@page=#1 %
+ \expandafter\@firstofone
+ \else
+ \ifnum\NEWPAX@Gin@page<#1 %
+ \csname fi\endcsname
+ \csname fi\endcsname
+ \expandafter\NEWPAX@stop\@gobblefour
+ \fi
+ \expandafter\NEWPAX@skip
+ \fi
+}
+\def\NEWPAX@getrect#1#2 #3 #4 #5\@nil{%
+ \@namedef{NEWPAX@#1@llx}{#2bp}%
+ \@namedef{NEWPAX@#1@lly}{#3bp}%
+ \@namedef{NEWPAX@#1@urx}{#4bp}%
+ \@namedef{NEWPAX@#1@ury}{#5bp}%
+}
+
+\def\NEWPAX@cmd@annot#1#2{%
+ \NEWPAX@filter@page{#1}{%
+ \NEWPAX@call{annot}{#2}{}%
+ }%
+}
+\def\NEWPAX@annot@Link#1#2#3{%
+ \def\NEWPAX@link@type{#2}%
+ \NEWPAX@call{link}{#2}{%
+ \begingroup
+ \NEWPAX@getrect{annot}#1\@nil
+ \kvsetkeys{NEWPAX}{#3}%
+ }%
+ \NEWPAX@skip
+}
+\newif\ifNEWPAX@ok
+\NEWPAX@oktrue
+
+\newif\ifNEWPAX@GoTo
+
+\def\NEWPAX@pdf@annot#1{%
+ \ifNEWPAX@Gin@clip
+ \ifdim\NEWPAX@annot@llx<\NEWPAX@page@llx
+ \let\NEWPAX@annot@llx\NEWPAX@page@llx
+ \fi
+ \ifdim\NEWPAX@annot@lly<\NEWPAX@page@lly
+ \let\NEWPAX@annot@lly\NEWPAX@page@lly
+ \fi
+ \ifdim\NEWPAX@annot@urx>\NEWPAX@page@urx
+ \let\NEWPAX@annot@urx\NEWPAX@page@urx
+ \fi
+ \ifdim\NEWPAX@annot@ury>\NEWPAX@page@ury
+ \let\NEWPAX@annot@ury\NEWPAX@page@ury
+ \fi
+ \NEWPAX@okfalse
+ \ifdim\NEWPAX@annot@llx<\NEWPAX@annot@urx\relax
+ \ifdim\NEWPAX@annot@lly<\NEWPAX@annot@ury\relax
+ \NEWPAX@oktrue
+ \fi
+ \fi
+ \else
+ \NEWPAX@oktrue
+ \fi
+ \ifNEWPAX@ok
+ \ifcase 0\ifnum\NEWPAX@Gin@angle=90 1\fi
+ \ifnum\NEWPAX@Gin@angle=180 2\fi
+ \ifnum\NEWPAX@Gin@angle=270 3\fi\space
+ % angle = 0
+ \def\NEWPAX@raise{%
+ \NEWPAX@scale@y\dimexpr\NEWPAX@annot@lly-\NEWPAX@page@lly\relax
+ }%
+ \def\NEWPAX@right{%
+ \NEWPAX@scale@x\dimexpr\NEWPAX@annot@llx-\NEWPAX@page@llx\relax
+ }%
+ \or % angle = 90
+ \def\NEWPAX@raise{%
+ \NEWPAX@scale@x\dimexpr\NEWPAX@annot@llx-\NEWPAX@page@llx\relax
+ }%
+ \def\NEWPAX@right{%
+ \NEWPAX@scale@y\dimexpr\NEWPAX@page@ury-\NEWPAX@annot@ury\relax
+ }%
+ \or % angle = 180
+ \def\NEWPAX@raise{%
+ \NEWPAX@scale@y\dimexpr\NEWPAX@page@ury-\NEWPAX@annot@ury\relax
+ }%
+ \def\NEWPAX@right{%
+ \NEWPAX@scale@x\dimexpr\NEWPAX@page@urx-\NEWPAX@annot@urx\relax
+ }%
+ \or % angle = 270
+ \def\NEWPAX@raise{%
+ \NEWPAX@scale@x\dimexpr\NEWPAX@page@urx-\NEWPAX@annot@urx\relax
+ }%
+ \def\NEWPAX@right{%
+ \NEWPAX@scale@y\dimexpr\NEWPAX@annot@lly-\NEWPAX@page@lly\relax
+ }%
+ \fi
+ \@namedef{%
+ NEWPAX@%
+ \ifcase0\ifnum\NEWPAX@Gin@angle=90 1\fi
+ \ifnum\NEWPAX@Gin@angle=270 1\fi\space
+ width%
+ \else
+ height%
+ \fi
+ }{%
+ \NEWPAX@scale@x\dimexpr\NEWPAX@annot@urx-\NEWPAX@annot@llx\relax
+ }%
+ \@namedef{%
+ NEWPAX@%
+ \ifcase0\ifnum\NEWPAX@Gin@angle=90 1\fi
+ \ifnum\NEWPAX@Gin@angle=270 1\fi\space
+ height%
+ \else
+ width%
+ \fi
+ }{%
+ \NEWPAX@scale@y\dimexpr\NEWPAX@annot@ury-\NEWPAX@annot@lly\relax
+ }%
+ \raise\NEWPAX@raise\hb@xt@\z@{%
+ \kern\NEWPAX@right
+ \ifNEWPAX@GoTo
+ %additional box for lualatex ...
+ \hbox{%
+ \@NEWPAX@linkgoto@xnn
+ {NEWPAX@\NEWPAX@file @\NEWPAX@key@DestLabel @\csname l__newpax_destsuffix_tl\endcsname}%
+ {\NEWPAX@width}%
+ {\NEWPAX@height}%
+ }%
+ \else
+ \hbox{%
+ \expandafter\@NEWPAX@link@setaction@nn\expandafter{\NEWPAX@link@type}{#1}%
+ \expandafter
+ \@NEWPAX@annotboxlink@nnn
+ \expandafter {\NEWPAX@link@type}{\NEWPAX@width}{\NEWPAX@height}{}}%
+ \fi
+ \hss
+ }%
+ \fi
+ \endgroup
+}
+
+\def\NEWPAX@htype@GoToR{file}
+\def\NEWPAX@htype@GoTo{link}
+\def\NEWPAX@htype@Named{link}
+\def\NEWPAX@htype@URI{url}
+
+\def\NEWPAX@link@URI{%
+ \NEWPAX@pdf@annot{%
+ /URI\NEWPAX@key@URI
+ }%
+}
+\ExplSyntaxOn
+\def\NEWPAX@link@Named{%
+ \NEWPAX@pdf@annot{%
+ /N \pdf_name_from_unicode_e:n{\NEWPAX@key@Name} %the value is from a pdf so we can assume it is correctly escaped??
+ }%
+}
+\ExplSyntaxOff
+\def\NEWPAX@link@GoToR{%
+ \NEWPAX@pdf@annot{%
+ /F\NEWPAX@key@File
+ /D%
+ \ifx\NEWPAX@key@DestName\@empty
+ [\NEWPAX@key@DestPage\space\NEWPAX@key@DestView]%
+ \else
+ \NEWPAX@key@DestName
+ \fi
+ }%
+}
+
+
+\AddLineBeginAux{%
+ \string\providecommand{\string\NEWPAX@DestReq}[2]{}%
+}
+\AddLineBeginAux{%
+ \string\providecommand{\string\NEWPAX@DestProv}[2]{}%
+}
+\AtBeginDocument{%
+ \let\NEWPAX@DestReq\@gobbletwo
+ \let\NEWPAX@DestProv\@gobbletwo
+}
+\def\NEWPAX@DestReq#1#2{%
+ \expandafter\gdef\csname NEWPAX@REQ@#1@#2\endcsname{}%
+}
+\def\NEWPAX@DestProv#1#2{%
+ \expandafter\gdef\csname NEWPAX@PROV@#1@#2\endcsname{}%
+}
+
+\def\NEWPAX@link@GoTo{%
+ \ifnum0<0\NEWPAX@key@DestLabel\relax
+ \expandafter\@firstofone
+ \else
+ \endgroup
+ \expandafter\@gobble
+ \fi
+ {%
+ \if@filesw
+ \protected@write\@auxout{}{%
+ \string\NEWPAX@DestReq{\NEWPAX@file}{\NEWPAX@key@DestLabel}%
+ }%
+ \fi
+ % Generate link, if destination exists
+ \@ifundefined{NEWPAX@PROV@\NEWPAX@file @\NEWPAX@key@DestLabel}{%
+ \endgroup
+ }{%
+ \NEWPAX@GoTotrue
+ \NEWPAX@pdf@annot{}%
+ }%
+ }%
+}
+
+\def\NEWPAX@cmd@dest#1#2#3#4{%
+ \NEWPAX@filter@page{#1}{%
+ \if@filesw
+ \protected@write\@auxout{}{%
+ \string\NEWPAX@DestProv{\NEWPAX@file}{#2}%
+ }%
+ \fi
+ \@ifundefined{NEWPAX@REQ@\NEWPAX@file @#2}{%
+ }{%
+ \begingroup
+ \let\NEWPAX@key@DestY\NEWPAX@page@ury
+ \let\NEWPAX@key@DestX\NEWPAX@page@llx
+ \kvsetkeys{NEWPAX}{#4}%
+ \let\NEWPAX@dest@llx\NEWPAX@key@DestX
+ \let\NEWPAX@dest@urx\NEWPAX@key@DestX
+ \let\NEWPAX@dest@lly\NEWPAX@key@DestY
+ \let\NEWPAX@dest@ury\NEWPAX@key@DestY
+ \ifx\NEWPAX@key@DestRect\@empty
+ \else
+ \def\NEWPAX@temp{dest}%
+ \expandafter\NEWPAX@getrect\expandafter\NEWPAX@temp
+ \NEWPAX@key@DestRect\@nil
+ \fi
+ \ifNEWPAX@Gin@clip
+ \ifx\NEWPAX@dest@llx<\NEWPAX@page@llx
+ \let\NEWPAX@dest@llx\NEWPAX@page@llx
+ \fi
+ \ifx\NEWPAX@dest@lly<\NEWPAX@page@lly
+ \let\NEWPAX@dest@lly\NEWPAX@page@lly
+ \fi
+ \ifx\NEWPAX@dest@urx>\NEWPAX@page@urx
+ \let\NEWPAX@dest@urx\NEWPAX@page@urx
+ \fi
+ \ifx\NEWPAX@dest@ury>\NEWPAX@page@ury
+ \let\NEWPAX@dest@ury\NEWPAX@page@ury
+ \fi
+ % at least prevent destinations outside the window
+ \ifx\NEWPAX@dest@llx>\NEWPAX@page@urx
+ \NEWPAX@dest@llx\NEWPAX@page@urx
+ \fi
+ \ifx\NEWPAX@dest@lly>\NEWPAX@page@ury
+ \NEWPAX@dest@lly\NEWPAX@page@ury
+ \fi
+ \ifx\NEWPAX@dest@urx<\NEWPAX@page@llx
+ \NEWPAX@dest@urx\NEWPAX@page@llx
+ \fi
+ \ifx\NEWPAX@dest@ury<\NEWPAX@page@lly
+ \NEWPAX@dest@ury\NEWPAX@page@lly
+ \fi
+ \fi
+ % I don't know, what is the best idea for rotated stuff,
+ % perhaps using the corner llx/ury
+ \ifcase 0\ifnum\NEWPAX@Gin@angle=90 1\fi
+ \ifnum\NEWPAX@Gin@angle=180 2\fi
+ \ifnum\NEWPAX@Gin@angle=270 3\fi\space
+ % angle = 0
+ \def\NEWPAX@raise{%
+ \NEWPAX@scale@y\dimexpr\NEWPAX@dest@lly-\NEWPAX@page@lly\relax
+ }%
+ \def\NEWPAX@right{%
+ \NEWPAX@scale@x\dimexpr\NEWPAX@dest@llx-\NEWPAX@page@llx\relax
+ }%
+ \or % angle = 90
+ \def\NEWPAX@raise{%
+ \NEWPAX@scale@x\dimexpr\NEWPAX@dest@llx-\NEWPAX@page@llx\relax
+ }%
+ \def\NEWPAX@right{%
+ \NEWPAX@scale@y\dimexpr\NEWPAX@page@ury-\NEWPAX@dest@ury\relax
+ }%
+ \or % angle = 180
+ \def\NEWPAX@raise{%
+ \NEWPAX@scale@y\dimexpr\NEWPAX@page@ury-\NEWPAX@dest@ury\relax
+ }%
+ \def\NEWPAX@right{%
+ \NEWPAX@scale@x\dimexpr\NEWPAX@page@urx-\NEWPAX@dest@urx\relax
+ }%
+ \or % angle = 270
+ \def\NEWPAX@raise{%
+ \NEWPAX@scale@x\dimexpr\NEWPAX@page@urx-\NEWPAX@dest@urx\relax
+ }%
+ \def\NEWPAX@right{%
+ \NEWPAX@scale@y\dimexpr\NEWPAX@dest@lly-\NEWPAX@page@lly\relax
+ }%
+ \fi
+ \edef\NEWPAX@name{NEWPAX@\NEWPAX@file @#2@\csname l__newpax_destsuffix_tl\endcsname}%
+ \let\NEWPAX@type\@empty
+ \newpax@str@if@eq@@nnT{#3}{FITR}{\def\NEWPAX@type{xyz}}%too lazy for now for better fitr
+ \newpax@str@if@eq@@nnT{#3}{XYZ}
+ {%
+ \def\NEWPAX@type{xyz}%
+ \ifx\NEWPAX@key@DestZoom\@empty
+ \else
+ \edef\NEWPAX@type{\fpeval{\NEWPAX@key@DestZoom *100}}%
+ \fi
+ }
+ \newpax@str@if@eq@@nnT{#3}{FIT}{\def\NEWPAX@type{fit}}
+ \newpax@str@if@eq@@nnT{#3}{FITB}{\def\NEWPAX@type{fitb}}
+ \newpax@str@if@eq@@nnT{#3}{FITH}{\def\NEWPAX@type{fith}}
+ \newpax@str@if@eq@@nnT{#3}{FITBH}{\def\NEWPAX@type{fitbh}}
+ \newpax@str@if@eq@@nnT{#3}{FITV}{\def\NEWPAX@type{fitv}}
+ \newpax@str@if@eq@@nnT{#3}{FITBV}{\def\NEWPAX@type{fitbv}}
+ \ifx\NEWPAX@type\@empty
+ \def\NEWPAX@type{xyz}%
+ \fi
+ \raise\NEWPAX@raise\hb@xt@\z@{%
+ \kern\NEWPAX@right
+ \hbox{\@NEWPAX@destination@xx {\NEWPAX@name}{\NEWPAX@type}}%
+ \hss
+ }%
+ \endgroup
+ }%
+ \NEWPAX@skip
+ }%
+}
+
+\SetupKeyvalOptions{family=NEWPAX,prefix=NEWPAX@key@}
+\DeclareStringOption{URI}
+\DeclareStringOption{Name}
+\DeclareStringOption{DestName}
+\DeclareStringOption{DestPage}
+\DeclareStringOption{DestView}
+\DeclareStringOption{File}
+\DeclareStringOption{C}
+\DeclareStringOption{Border}
+\DeclareStringOption{BS}
+\DeclareStringOption{H}
+\DeclareStringOption{DestLabel}
+\DeclareStringOption{DestRect}
+\DeclareStringOption{DestZoom}
+\define@key{NEWPAX}{DestX}{%
+ \NEWPAX@defaultbp\NEWPAX@key@DestX{#1}%
+}
+\define@key{NEWPAX}{DestY}{%
+ \NEWPAX@defaultbp\NEWPAX@key@DestY{#1}%
+}
+%%
+%%
+%% End of file `newpax.sty'.