diff options
author | Taco Hoekwater <taco@elvenkind.com> | 2009-08-23 11:11:32 +0000 |
---|---|---|
committer | Taco Hoekwater <taco@elvenkind.com> | 2009-08-23 11:11:32 +0000 |
commit | 8fc3039c82d48605b5ca8b2eda3f4fdd755681e1 (patch) | |
tree | 3cd9bbdd599bc4d1ac0409e167fee2136e4c0ec9 /Master/texmf-dist/tex/context/base/spec-dpx.tex | |
parent | 850fc99b7cd3ae7a20065531fe866ff7bae642ec (diff) |
this is context 2009.08.19 17:10
git-svn-id: svn://tug.org/texlive/trunk@14827 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/context/base/spec-dpx.tex')
-rw-r--r-- | Master/texmf-dist/tex/context/base/spec-dpx.tex | 818 |
1 files changed, 0 insertions, 818 deletions
diff --git a/Master/texmf-dist/tex/context/base/spec-dpx.tex b/Master/texmf-dist/tex/context/base/spec-dpx.tex deleted file mode 100644 index 3dc82d49e46..00000000000 --- a/Master/texmf-dist/tex/context/base/spec-dpx.tex +++ /dev/null @@ -1,818 +0,0 @@ -%D \module -%D [ file=spec-dpx, -%D version=2005.08.12, -%D title=\CONTEXT\ Special Macros, -%D subtitle=DVIPDFMx support, -%D author=Jin-Hwan Cho, -%D date=\currentdate, -%D copyright={Jin-Hwan Cho \& Hans Hagen}] -%C -%C DVIPDFMx is an eXtended version of the DVIPDFM, a DVI to PDF -%C translator, still under construction by Jin-Hwan Cho and -%C Shunsaku Hirata. -%C -%C It supports multi-byte character encodings and large character -%C sets for East Asian languages by CID-keyed font technology, -%C and many features including PDF encryption, PDF bookmarks and -%C annotations with Chinese, Japanese, Korean characters, etc. -%C -%C DVIPDFMx (and information) can be downloaded from: -%C -%C http://project.ktug.or.kr/dvipdfmx/ - -\unprotect - -%D This driver is built on top of the general \PDF\ macros, -%D as defined in \type{spec-fdf}, so we inherit that one. - -\startspecials[dpx][reset,fdf] - -%D 1. Modified codes from \type{spec-dpm} - -%D \macros -%D {jobsuffix} -%D -%D Because no intermediate output format is used, we set the -%D jobsuffix to \PDF. - -\setjobsuffix{pdf} - -%D Map files (experimental) - -\definespecial\doloadmapfile#1#2% - {\flushatshipout{\special{pdf:mapfile +#2}}} - -%D DVIPDFMx supports the special command \type{pdf: literal ...} -%D since the version \type{dvipdfmx-20021028}. -%D -%D 1. \type{pdf: literal #1} puts the given PDF commands \#1 -%D after changing the text matrix with \type{"1 0 0 1 x y cm"} -%D to set the current DVI position $(x,y)$ to the origin. -%D -%D 2. \type{pdf: literal reverse #1} puts the given PDF commands \#1 -%D after changing the text matrix with \type{"1 0 0 1 -x -y cm"}. -%D -%D 3. \type{pdf: literal direct #1} puts directly the given PDF -%D commands \#1 without changing the text matrix. -%D -%D Since the version \type{dvipdfmx-20050812}, the role of the special -%D command \type{pdf:literal} is changed so that -%D -%D 1. \type{pdf:literal #1} puts the given PDF commands \#1 -%D after changing the text matrix with \type{"1 0 0 1 x y cm"} -%D to set the current DVI position $(x,y)$ to the origin. After that -%D it restores the previous setting by changing the text matrix with -%D \type{"1 0 0 1 -x -y cm"}. -%D -%D 2. \type{pdf:literal direct #1} puts directly the given PDF commands -%D \type {#1} without changing the text matrix. -%D -%D Literal \PDF\ inclusion is implemented as: - -\def\PDFcode #1{\special{pdf:literal #1}} -\def\PDFcontentcode#1{\special{pdf:content #1}} -\def\PDFdirectcode #1{\special{pdf:literal direct #1}} - -%D \type{\dosetuppaper} in \type{spec-dpm} did not work properly -%D because DVIPDFM did not permit changing the page size. -%D -%D However, DVIPDFMx permits different page size in each page -%D since the version \type{dvipdfmx-20021028}. -%D -%D \macros -%D {dosetuppaper} -%D -%D A simple one. - -\definespecial\dosetuppaper#1#2#3% - {\bgroup - \scratchdimen#2\edef\width {\the\scratchdimen\space}% - \scratchdimen#3\edef\height{\the\scratchdimen\space}% - \special{pdf:pagesize width \width height \height}% - \egroup} - -%D \macros -%D {doinsertfile} -%D -%D Only \METAPOST, \BMP\ \JPG\ \PNG\ and \PDF\ inclusion are supported. - -\definespecial\doinsertfile - {\dofileinsertion{dpx}\@@DriverImageType} - -%D Even though DVIPDFM supports \METAPOST directly, the funtionality -%D is not good. It conflicts much with \CONTEXT. -%D -%D So, \METAPOST will be treated as the same way as PDFTeX using -%D MPtoPDF in DVIPDFMx since the version \type{dvipdfmx-20021028}. - -%D DVIPDFM (and DVIPDFMx too) supports the image files with -%D the extension, \PDF, \JPG, \PNG, \BMP, and \EPS. - -% \def\handleepsimage -% {\PointsToWholeBigPoints\@@DriverImageWidth \width -% \PointsToWholeBigPoints\@@DriverImageHeight\height -% \special -% {PSfile="\@@DriverImageFile"\space -% llx=\EPSllx\space lly=\EPSlly\space -% urx=\EPSurx\space ury=\EPSury\space -% rwi=\width0\space rhi=\height0}} - -% \definefileinsertion{dpx}{mps}{\handleepsimage} - -\definefileinsertion{dpx}{mps} - {\hbox - {\convertMPtoPDF\@@DriverImageFile{1}{1}% - \global\let\PDFimagereference\empty}} - -\def\handlebmpimage - {\special{pdf: image - width \@@DriverImageWidth \space - height \@@DriverImageHeight\space - (\@@DriverImageFile)}} - -\definefileinsertion{dpx}{pdf}{\handlebmpimage} -\definefileinsertion{dpx}{jpg}{\handlebmpimage} -\definefileinsertion{dpx}{png}{\handlebmpimage} -\definefileinsertion{dpx}{bmp}{\handlebmpimage} - -\definefileinsertion{dpx}{mov}{\doPDFinsertmov} -\definefileinsertion{dpx}{avi}{\doPDFinsertmov} - -%D \macros -%D {doinsertsoundtrack} -%D -%D Sounds are supported too. - -\definespecial\doinsertsoundtrack{\doPDFinsertsoundtrack} - -%D \macros -%D {doovalbox} - -\definespecial\doovalbox{\doPDFovalbox} - -%D \macros -%D {dostartgraymode,dostopgraymode, -%D dostartrgbcolormode,dostartcmykcolormode,dostartgraycolormode, -%D dostopcolormode, -%D dostartrotation,dostoprotation, -%D dostartscaling,dostopscaling, -%D dostartmirroring,dostopmirroring, -%D dostartnegative,dostopnegative} -%D -%D Unfortunately the direct \PDF\ inclusion is not suited -%D for the next macros, which means that we cannot use the -%D \type {\doPDF..} alternatives. Since \CONTEXT\ maintains -%D its own colorstack, we use the \DVIPS\ alternatives. - -\definespecial\dostartgraymode {\doPDFstartgraymode} -\definespecial\dostopgraymode {\doPDFstopgraymode} -\definespecial\dostartrgbcolormode {\doPDFstartrgbcolormode} -\definespecial\dostartcmykcolormode{\doPDFstartcmykcolormode} -\definespecial\dostartgraycolormode{\doPDFstartgraycolormode} -\definespecial\dostartspotcolormode{\doPDFstartspotcolormode} -\definespecial\dostopcolormode {\doPDFstopcolormode} - -\definespecial\doregistercmykspotcolor{\doPDFregistercmykspotcolor} -\definespecial\doregisterrgbspotcolor {\doPDFregisterrgbspotcolor} -\definespecial\doregistergrayspotcolor{\doPDFregistergrayspotcolor} - -\definespecial\doregistercmykindexcolor{\doPDFregistercmykindexcolor} -\definespecial\doregisterrgbindexcolor {\doPDFregisterrgbindexcolor} -\definespecial\doregistergrayindexcolor{\doPDFregistergrayindexcolor} - -\definespecial\doregisterfigurecolor{\doPDFregisterfigurecolor} - -\definespecial\dostartnonecolormode{\doPDFstartnonecolormode} -\definespecial\doregisternonecolor {\doPDFregisternonecolor} - -\definespecial\dostartrotation #1{\special{pdf:btrans rotate #1}} -\definespecial\dostoprotation {\special{pdf:etrans}} -\definespecial\dostartscaling#1#2{\special{pdf:btrans xscale #1 yscale #2}} -\definespecial\dostopscaling {\special{pdf:etrans}} -\definespecial\dostartmirroring {\special{pdf:btrans xscale -1}} -\definespecial\dostopmirroring {\special{pdf:etrans}} - -%D Negation is not (yet) supported: -\definespecial\dostartnegative {\doPDFstartnegative} -\definespecial\dostopnegative {\doPDFstopnegative} -\definespecial\dostartoverprint {\doPDFstartoverprint} -\definespecial\dostopoverprint {\doPDFstopoverprint} - -\definespecial\dostarttransparency{\doPDFstarttransparency} -\definespecial\dostoptransparency {\doPDFstoptransparency} - -\PDFtransparencysupportedtrue - -\def\@@PDT{@PDT@} - -\ifx\PDFcurrenttransparency\undefined - \newcount\PDFcurrenttransparency \PDFcurrenttransparency=0 % -1 -\fi - -\def\assignPDFtransparency#1#2% - {\def\PDFtransparencyidentifier{/Tr#1}% - \def\PDFtransparencyreference{@TR:#2}} % todo: \PDFobjref{TR:#2} - -\def\presetPDFtransparency#1#2% - {\initializePDFtransparency - \executeifdefined{\@@PDT#1:#2}{\dopresetPDFtransparency{#1}{#2}}} - -\def\dopresetPDFtransparency#1#2% - {\global\advance\PDFcurrenttransparency \plusone - \doPDFreserveDPXobject{TR:\the\PDFcurrenttransparency}{<< >>}% hack - \special{pdf:\doPDFcheckedDPXobject{TR:\the\PDFcurrenttransparency}\PDFtransparancydictionary{#1}{#2}{}}% - \edef\PDFtransparencyidentifier{/Tr\the\PDFcurrenttransparency}% - \edef\PDFtransparencyreference {@TR:\the\PDFcurrenttransparency}% - \setxvalue{\@@PDT#1:#2}% - {\noexpand\assignPDFtransparency{\the\PDFcurrenttransparency}{\the\PDFcurrenttransparency}}% - \appendtoPDFdocumentextgstates - {\PDFtransparencyidentifier\space - \PDFtransparencyreference\space}} - -\def\initializePDFtransparency - {\doPDFreserveDPXobject{TR:0}{<< >>}% hack - \special{pdf:\doPDFcheckedDPXobject{TR:0}\PDFtransparancydictionary{1}{1}{/AIS false}}% - \xdef\PDFtransparencyresetidentifier{/Tr0}% - \xdef\PDFtransparencyresetreference{@TR:0}% - \setxvalue{\@@PDT0:0}% - {\noexpand\assignPDFtransparency{0}{0}}% - \appendtoPDFdocumentextgstates - {\PDFtransparencyresetidentifier\space - \PDFtransparencyresetreference\space}% - \global\let\initializePDFtransparency\relax} - -%D \macros -%D {dosetupinteraction, -%D dosetupopenaction,dosetupcloseaction} - -\definespecial\dosetupinteraction - {\showmessage\m!interactions{21}{DVIPDFMx}} - -\definespecial\dosetupopenaction {\doPDFsetupopenaction} -\definespecial\dosetupcloseaction{\doPDFsetupcloseaction} - -%D \macros -%D {doresetgotowhereever, -%D dostartthisisrealpage,dostartthisislocation, -%D dostartgotorealpage,dostartgotolocation,dostartgotoJS} - -\definespecial\doresetgotowhereever {\doPDFresetgotowhereever} -\definespecial\dostartthisislocation{\doPDFstartthisislocation} - -\definespecial\dostartgotolocation{\doPDFstartgotolocation} -\definespecial\dostartgotorealpage{\doPDFstartgotorealpage} -\definespecial\dostartgotoJS {\doPDFstartgotoJS} - -%D \macros -%D {doflushJSpreamble} - -\definespecial\doflushJSpreamble#1% - {\bgroup - \let\compositeJScode\empty - \def\docommand##1% - {\edef\sanitizedJScode{\getJSpreamble{##1}}% - \@EA\doPSsanitizeJScode\sanitizedJScode\to\sanitizedJScode - \special{pdf:object @JS:##1 <</S /JavaScript /JS (\sanitizedJScode)>>}% - \edef\compositeJScode{\compositeJScode\space (##1) @JS:##1}}% - \processcommalist[#1]\docommand - \special{pdf:names /JavaScript [\compositeJScode]}% - \egroup} - -%D \macros -%D {dostarthide,dostophide} - -\definespecial\dostarthide{} -\definespecial\dostophide {} - -%D \macros -%D {dosetupscreen} - -\definespecial\dosetupscreen {\doPDFsetupscreen \printpaperheight} - -\definespecial\dosetupartbox {\doPDFsetupartbox \printpaperheight} -\definespecial\dosetupcropbox {\doPDFsetupcropbox \printpaperheight} -\definespecial\dosetupbleedbox{\doPDFsetupbleedbox\printpaperheight} -\definespecial\dosetuptrimbox {\doPDFsetuptrimbox \printpaperheight} - -%D \macros -%D {dostartexecutecommand} - -\definespecial\dostartexecutecommand{\doPDFstartexecutecommand} - -%D \macros -%D {dosetupidentity} - -\definespecial\dosetupidentity{\doPDFsetupidentity} - -%D \macros -%D {dostartrunprogam} - -\definespecial\dostartrunprogram{\doPDFstartrunprogram} - -%D \macros -%D {dostartgotoprofile, dostopgotoprofile, -%D dobeginofprofile, doendofprofile} - -\definespecial\dostartgotoprofile{\doPDFstartgotoprofile} - -\definespecial\dobeginofprofile#1#2#3#4% - {\bgroup - \setPDFdestination{#1}% - \scratchdimen#2\edef\width {\the\scratchdimen\space}% - \scratchdimen#3\edef\height{\the\scratchdimen\space}% - \doifsomething{\PDFdestination} - {\special - {pdf:thread @ART::\PDFdestination\space - width \width height \height - <</Title (\PDFdestination)>>}}% - \egroup} - -\definespecial\doendofprofile - {} - -%D \macros -%D {doinsertbookmark} - -\definespecial\doinsertbookmark{\doPDFinsertbookmark} - -%D \macros -%D {dostartobject,dostopobject,doinsertobject} -%D -%D Modified to support the color shading feature since version -%D \type{dvipdfmx-20021128}. - -% wd nextbox > #3 ivm offset - -% \definespecial\dostartobject#1#2#3#4#5% -% {\bgroup -% \dowithnextbox -% {\dosetobjectreference{#1}{#2}{@#1::#2}% -% \scratchdimen#3\edef\width {\the\scratchdimen\space}% -% \scratchdimen#4\edef\height{\the\scratchdimen\space}% -% \setbox\nextbox\vbox -% {\special{pdf:bxobj @#1::#2 width \width height \height}% -% % we need to compensate for the box offset (ugly, sigh) -% \scratchdimen\nextboxht -% \advance\scratchdimen\nextboxdp -% \advance\scratchdimen-#4\relax -% \nextboxdp\zeropoint -% \nextboxht\zeropoint -% \hbox to #3{\hss\lower.5\scratchdimen\box\nextbox\hss}% -% \ifx\currentPDFresources\empty -% \else -% \special{pdf:put @resources <<\currentPDFresources>>}% -% \global\let\currentPDFresources\empty -% \fi -% \special{pdf:exobj}}% -% \smashbox\nextbox -% \flushatshipout{\box\nextbox}% -% \egroup}% -% \hbox\bgroup} - -% \definespecial\dostopobject -% {\egroup} - -\def\doDVIPDFMXstartobject#1#2#3#4#5#6% - {\bgroup - \dowithnextbox - {\ifcase#1\or\dosetobjectreference{#2}{#3}{@#2::#3}\fi - \scratchdimen#4\edef\width {\the\scratchdimen\space}% - \scratchdimen#5\edef\height{\the\scratchdimen\space}% - \setbox\nextbox\vbox - {\special{pdf:bxobj @#2::#3 width \width height \height}% - % we need to compensate for the box offset (ugly, sigh) - \scratchdimen\nextboxht - \advance\scratchdimen\nextboxdp - \advance\scratchdimen-#5\relax - \nextboxdp\zeropoint - \nextboxht\zeropoint - \hbox to #4{\hss\lower.5\scratchdimen\box\nextbox\hss}% - \ifx\currentPDFresources\empty - \else - \special{pdf:put @resources <<\currentPDFresources>>}% - \global\let\currentPDFresources\empty - \fi - \special{pdf:exobj}}% - \finalizeobjectbox\nextbox - \smashbox\nextbox - \flushatshipout{\box\nextbox}% - \egroup}% - \hbox\bgroup} - -\def\doDVIPDFMXstopobject - {\egroup} - -\definespecial\dostartobject#1#2#3#4#5% - {\doDVIPDFMXstartobject\plusone{#1}{#2}{#3}{#4}{#5}} - -\definespecial\dostopobject - {\doDVIPDFMXstopobject} - -\definespecial\doinsertobject#1#2% - {\hbox - {\doPDFgetobjectreference{#1}{#2}\PDFobjectreference - \ifx\PDFobjectreference\empty \else - \special{pdf:uxobj @#1::#2}% - \fi}} - -%D \macros -%D {dosetpagetransition} - -\definespecial\dosetpagetransition{\doPDFsetpagetransition} - -%D \macros -%D {doinsertcomment, doflushcomments} - -\definespecial\doinsertcomment{\doPDFinsertcomment} -\definespecial\doflushcomments{\doPDFflushcomments} - -%D \macros -%D {dopresetlinefield,dopresettextfield, -%D dopresetchoicefield,dopresetpopupfield,dopresetcombofield, -%D dopresetpushfield,dopresetcheckfield, -%D dopresetradiofield,dopresetradiorecord} - -\definespecial\dopresetlinefield {\doFDFpresetlinefield} -\definespecial\dopresettextfield {\doFDFpresettextfield} -\definespecial\dopresetchoicefield{\doFDFpresetchoicefield} -\definespecial\dopresetpopupfield {\doFDFpresetpopupfield} -\definespecial\dopresetcombofield {\doFDFpresetcombofield} -\definespecial\dopresetpushfield {\doFDFpresetpushfield} -\definespecial\dopresetcheckfield {\doFDFpresetcheckfield} -\definespecial\dopresetradiofield {\doFDFpresetradiofield} -\definespecial\dopresetradiorecord{\doFDFpresetradiorecord} - -%D \macros -%D {dodefinefieldset,dogetfieldset,doiffieldset} - -\definespecial\dodefinefieldset{\doFDFdefinefieldset} -\definespecial\dogetfieldset {\doFDFgetfieldset} -\definespecial\doiffieldset {\doFDFiffieldset} - -%D \macros -%D {doregistercalculationset} - -\definespecial\doregistercalculationset{\doFDFregistercalculationset} - -%D \type{\doPDFdestination} in \type{spec-dpm} had a bug. -%D -%D \macros -%D {doPDFdestination} - -\def\doPDFdestination#1% - {\special{pdf:names /Dests (#1) [@thispage \PDFpageviewwrd]}} - -%D \macros -%D {doPDFaction,doPDFannotation,ifsharePDFactions} -%D -%D Sharing is not yet supported. - -\newif\ifsharePDFactions \sharePDFactionsfalse - -\def\dodoPDFaction#1#2#3#4% - {\ifcollectreferenceactions - \xdef\lastPDFaction{#4}% - \else - \bgroup - % this is yet untested - %\ifsharePDFactions - % \ifcase\similarreference\relax - % \xdef\lastPDFaction{<<#4>>}% - % \or - % \global\advance\nofPDFsimilar by 1 - % \special{pdf: object @PDF::sim:\the\nofPDFsimilar\space<<#4>>}% - % \xdef\lastPDFaction{@PDF::sim:\the\nofPDFsimilar}% - % \else - % % leave \lastPDFaction untouched - % \fi - %\else - \xdef\lastPDFaction{<<#4>>}% - %\fi - \scratchdimen#2\edef\width {\the\scratchdimen\space}% - \scratchdimen#3\edef\height{\the\scratchdimen\space}% - \special{pdf:ann #1 width \width height \height - <</Subtype /Link /Border [0 0 0] - \ifhighlighthyperlinks \else /H /N \fi - /A \lastPDFaction\space>>}% - \egroup - \fi} - -\def\doPDFaction#1#2#3% - {\dodoPDFaction\empty{#1}{#2}{#3}} - -%D \type{\doPDFannotation} in \type{spec-dpm} had a bug. -%D -%D \type{\doPDFannotation} conflicts with \type{\doPDFinsertmov}, -%D since width and height also defined in \type{\doPDFinsertmov}. - -\def\doPDFannotation#1#2#3% - {\bgroup - \edef\data{#3}% - \scratchdimen#1\edef\width {\the\scratchdimen\space}% - \scratchdimen#2\edef\height{\the\scratchdimen\space}% - \special{pdf:ann width \width height \height <<\data>>}% - \egroup} - -%D \macros -%D {doPDFannotationobject,doPDFactionobject} - -\def\doPDFannotationobject#1#2#3#4#5% - {\bgroup - \scratchdimen#3\edef\width {\the\scratchdimen\space}% - \scratchdimen#4\edef\height{\the\scratchdimen\space}% - \special{pdf:ann @#1::#2 width \width height \height <<#5>>}% - \dosetobjectreference{#1}{#2}{@#1::#2}% - \egroup} - -\def\doPDFactionobject#1#2#3#4#5% - {\dodoPDFaction{@#1::#2}{#3}{#4}{#5}% - \dosetobjectreference{#1}{#2}{@#1::#2}} - -%D \macros -%D {doPDFaddtocatalog,doPDFaddtoinfo, -%D doPDFpageattribute,doPDFpagesattribute} - -% we could move much more to spec-fdf - -% \ifx\pdfcatalog \undefined \newtoks\pdfcatalog \fi -% \ifx\pdfinfo \undefined \newtoks\pdfinfo \fi -% \ifx\pdfpageattr \undefined \newtoks\pdfpageattr \fi -% \ifx\pdfpageresources\undefined \newtoks\pdfpageresources \fi -% \ifx\pdfpagesattr \undefined \newtoks\pdfpagesattr \fi - -% \def\doPDFaddtocatalog #1{\expanded{\global\pdfcatalog {#1\the\pdfcatalog }}} -% \def\doPDFaddtoinfo #1{\expanded{\global\pdfinfo {#1\the\pdfinfo }}} -% \def\doPDFpageattribute #1{\expanded{\global\pdfpageattr {#1\the\pdfpageattr }}} -% \def\doPDFpageresource #1{\expanded{\global\pdfpageresources{#1\the\pdfpageresources}}} -% \def\doPDFpagesattribute#1{\expanded{\global\pdfpagesattr {#1\the\pdfpagesattr }}} - -% \def\doPDFresetpageattributes{\global\pdfpageattr\emptytoks} -% \def\doPDFresetpageresources {\global\pdfpageresources\emptytoks} - -% \appendtoks -% \special{pdf: put @catalog <<#1>>}% -% \special{pdf: docinfo <<#1>>}% -% \special{pdf: put @pages <<#1>>}% -% \to \everylastshipout - -% \appendtoks -% \special{pdf: put @thispage <<#1>>}% -% \to\everyshipout - -\def\doPDFaddtocatalog#1% - {\special{pdf:put @catalog <<#1>>}} - -\def\doPDFaddtoinfo#1% - {\special{pdf:put @docinfo <<#1>>}} - -\def\doPDFpageattribute#1% - {\special{pdf:put @thispage <<#1>>}} - -\def\doPDFpagesattribute#1% - {\special{pdf:put @pages <<#1>>}} - -\def\doPDFpageresource#1% - {\special{pdf:put @resources <<#1>>}} - -\let\doPDFresetpageresources \relax -\let\doPDFresetpageattributes\relax - -%D \type{\doPDFbookmark} in \type{spec-dpm} had a bug. -%D The openbookmark option \#5 is not supported yet. -%D -%D \macros -%D {doPDFbookmark} - -\def\doPDFbookmark#1#2#3#4#5% - {\ifcase#1\else - %\scratchcounter#4\advance\scratchcounter\minusone - \special{pdf:outline #1 %\ifcase#5 opened\fi - % <</Title (#3) /A <</S /GoTo /D (page:\the\scratchcounter)>>>>}% - <</Title (#3) /A <</S /GoTo /D [@page\number#4\space\PDFpageviewwrd]>> >>}% - \fi} - -%D \macros -%D {doPDFdictionaryobject,doPDFarrayobject} - -% Dvipdfmx can't handle -% -% \special{pdf:put @foo << /Bar @bar >>} -% \special{pdf:put @bar << /Foo @foo >>} -% -% Objects must be defined before they are used. -% -% \special{pdf:obj @foo << >>} -% \special{pdf:obj @bar << >>} -% \special{pdf:put @foo << /Bar @bar >>} -% \special{pdf:put @bar << /Foo @foo >>} -% -% However, this only works for dictionary and array. - -\def\doPDFreserveDPXobject#1#2% - {\ifundefined{r:pdx:d:#1}% - % we need a \flushatshipoutprep (prepended, normally appended) - \flushatshipout{\special{pdf:object @#1 #2}}% - \global\letvalue{r:pdx:d:#1}\empty - \fi} - -\def\doPDFreserveDPXobjectfirst#1#2% - {\ifundefined{r:pdx:d:#1}% - \doglobal\prependtoks\special{pdf:object @#1 #2}\to\everyfirstshipout - \global\letvalue{r:pdx:d:#1}\empty - \fi} - -\def\doPDFcheckedDPXobject#1{\ifundefined{r:pdx:d:#1}object\else put\fi\space @#1\space} - -% new, experimental, can save a run, bugged, too many xforms now -% -% \def\doreservePDFobject#1#2% -% {\dosetobjectreference{#1}{#2}{@#1::#2}} -% -% \def\doPDFreserveddictionaryobject#1#2#3% -% {\flushatshipout{\special{pdf:object @#1::#2 << #3 >>}}} -% -% \def\doPDFreservedarrayobject#1#2#3% -% {\flushatshipout{\special{pdf:object @#1::#2 [ #3 ]}}} -% -% \doreservePDFobject{FDF}{docuextgstates} -% \doreservePDFobject{FDF}{colorspaces} -% \doreservePDFobject{FDF}{docushades} - -% so this is to be checked - -\def\doPDFdictionaryobject#1#2#3% - {\flushatshipout - {\special{pdf:\doPDFcheckedDPXobject{#1::#2}<<#3>>}% - \dosetobjectreference{#1}{#2}{@#1::#2}}} - -\def\doPDFarrayobject#1#2#3% - {\flushatshipout - {\special{pdf:\doPDFcheckedDPXobject{#1::#2}[#3]}% - \dosetobjectreference{#1}{#2}{@#1::#2}}} - -%D \macros -%D {defaultobjectreference,doPDFgetobjectreference} - -\def\defaultobjectreference#1#2{@#1::#2} - -%D \type{\doPDFgetobjectreference} in \type{spec-dpm} had a bug. - -\def\doPDFgetobjectreference#1#2#3% - {\dogetobjectreference{#1}{#2}#3% - \ifx#3\empty\else\edef#3{#3}\fi} - -% \def\doPDFgetobjectpage #1#2#3{..} -% \def\doPDFgetobjectpagereference#1#2#3{..} - -\def\doPDFgetpagereference#1#2% - {\edef#2{@page#1}} - -%D Done. - -% %D 2. Modified codes from \type{spec-fdf} -% -% \definespecial\dostartgraphicgroup{\special{pdf: literal direct q}} -% \definespecial\dostopgraphicgroup {\special{pdf: literal direct Q}} - -%D 3. Copied codes from \type{spec-tpd} - -%D \macros -%D {dostartclipping,dostopclipping} -%D -%D Clipping in \PDFTEX\ is rather trivial. We can even hook -%D in \METAPOST\ without problems. - -\definespecial\dostartclipping#1#2#3% - {\PointsToBigPoints{#2}\width - \PointsToBigPoints{#3}\height - \grabMPclippath{#1}{1}\width\height - {0 0 m \width\space 0 l \width \height l 0 \height l}% - \PDFcode - {q 0 w \MPclippath\space W n}} - -\definespecial\dostopclipping - {\PDFcode{Q n}} - -%D 4. Modified codes from \type{supp-mpe} - -\def\stopMPshading - {\global\advance\currentPDFshade \plusone - \setxvalue{obj:Sh:\currentMPspecial}% - {/Sh\the\currentPDFshade\space @obj:Sh:\currentMPspecial\space}% - \setxvalue{mps:Sh:\currentMPspecial}% - {\the\currentPDFshade}} - -\defineMPspecial{30} - {\startMPshading{14}% type 2 - \setMPshadingcolors{4}{5}{6}{9}{10}{11}% - \special{pdf:object @ftn:Sh:\currentMPspecial\space - <</FunctionType 2 - /Domain [\gMPs1 \gMPs2] - /C0 [\MPshadeA] - /C1 [\MPshadeB] - /N \gMPs3>>}% - \special{pdf:object @obj:Sh:\currentMPspecial\space - <</ShadingType 2 - /ColorSpace /\MPshadeC\space - /Function @ftn:Sh:\currentMPspecial\space - /Coords [\gMPs7 \gMPs8 \gMPs{12} \gMPs{13}] - /Extend [true true]>>}% - \stopMPshading} - -\defineMPspecial{31} - {\startMPshading{16}% type 3 - \setMPshadingcolors{4}{5}{6}{10}{11}{12}% - \special{pdf:object @ftn:Sh:\currentMPspecial\space - <</FunctionType 2 - /Domain [\gMPs1 \gMPs2] - /C0 [\MPshadeA] - /C1 [\MPshadeB] - /N \gMPs3>>}% - \special{pdf:object @obj:Sh:\currentMPspecial\space - <</ShadingType 3 - /ColorSpace /\MPshadeC\space - /Function @ftn:Sh:\currentMPspecial\space - /Coords [\gMPs7 \gMPs8 \gMPs9 \gMPs{13} \gMPs{14} \gMPs{15}] - /Extend [true true]>>}% - \stopMPshading} - -\def\handleMPfigurespecial#1#2#3#4#5#6#7% toto : combine with ext fig - {\doiffileelse{#7} - {\vbox to \zeropoint - {\vss - \hbox to \zeropoint - {\special{pdf:btrans matrix #1 #2 #3 #4 #5 #6}% - \rlap{\special{pdf:image width 1bp height 1bp (#7)}} - \special{pdf:etrans}\hss}}} - {\message{[unknown figure #7]}}} - -%D 5. Modified codes from \type{supp-pdf} - -\let\handleMPfshow\dohandleMPfshow - -\newcounter\MPPDFcounter - -\newcounter\MPPDFobjectcounter - -\def\setMPPDFobject#1#2% resources boxnumber - {\doglobal\increment\MPPDFobjectcounter - \xdef\getMPPDFobject - {\vbox to \the\ht#2% - {\vss - \hbox to \the\wd#2% - {\scratchdimen\wd#2\scratchdimen.5\scratchdimen\hskip-\the\scratchdimen - \special{pdf:uxobj @MPPDF::\MPPDFobjectcounter}}}}% - \expanded{\doDVIPDFMXstartobject\zerocount{MPPDF}\MPPDFobjectcounter{\the\wd#2}{\the\ht#2}{\the\dp#2}}% - \finalizeobjectbox#2% - \box#2% - \doDVIPDFMXstopobject} - -\let\getMPPDFobject\gobbletwoarguments - -\definespecial\doinsertMPfile#1% - {\doiffileelse{./#1}{\includeMPasPDF{./#1}}{\message{[MP #1]}}} - -%D Experimental (untested): - -\definespecial\dostartfonteffect#1#2#3% - {\ifdim#2>\zeropoint - \PointsToBigPoints{#2}\ascii - \PDFdirectcode{\ascii\space w}% - \fi - \ifdim#3\points=\onepoint\else - \scratchdimen#3\points - \PDFdirectcode{\withoutpt{\the\scratchdimen}\space Tc}% - \fi - \PDFdirectcode{\purenumber#1 Tr}} - -\definespecial\dostopfonteffect - {\PDFdirectcode{1 w 0 Tc 0 Tr}} - -%D 6. Modified codes from \type{core-obj} -%D -%D In the viewpoint of TeX, the special command \type{pdf:uxobj @obj} -%D generates a box with zero point width and zero point height so that -%D it must be careful to place the box at the reference point. - -\def\dogetobject#1#2#3#4#5#6#7% don't change this, should work for dvi & pdf - {\initializepaper - \forgetall - \dontshowcomposition - \setbox\scratchbox\vbox - {\doinsertobject{#1}{#2}}% - \setbox\scratchbox#3% - {\vbox to #5\scaledpoint - {\ifdim\ht\scratchbox>#5\scaledpoint - \vss\hbox to #4\scaledpoint{\hss\box\scratchbox\hss}\vss - \else\ifdim\wd\scratchbox>#4\scaledpoint - \vss\hbox to #4\scaledpoint{\hss\box\scratchbox\hss}\vss - \else - %\vss\box\scratchbox - \vss\hbox to #4\scaledpoint{\box\scratchbox\hss}% - \fi\fi}}% - \box\scratchbox - \elabelgroup} - -\stopspecials - -\protect \endinput |