summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/context/base/spec-dvi.tex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2006-01-12 23:45:13 +0000
committerKarl Berry <karl@freefriends.org>2006-01-12 23:45:13 +0000
commit92a15e15b276458e10aa05016bf472e8c6dd3eb0 (patch)
treeaf0343097e5f497167cefa16ed45c03475b98c37 /Master/texmf-dist/tex/context/base/spec-dvi.tex
parentdf014cf02a62504f6b3e7a4398fb1e093b84f114 (diff)
context
git-svn-id: svn://tug.org/texlive/trunk@608 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/context/base/spec-dvi.tex')
-rw-r--r--Master/texmf-dist/tex/context/base/spec-dvi.tex125
1 files changed, 125 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/context/base/spec-dvi.tex b/Master/texmf-dist/tex/context/base/spec-dvi.tex
new file mode 100644
index 00000000000..5da86743c74
--- /dev/null
+++ b/Master/texmf-dist/tex/context/base/spec-dvi.tex
@@ -0,0 +1,125 @@
+%D \module
+%D [ file=spec-dvi,
+%D version=1996.01.25,
+%D title=\CONTEXT\ Special Macros,
+%D subtitle=Generic \TEX\ Solutions,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA / Hans Hagen \& Ton Otten}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+\unprotect
+
+%D \macros
+%D {dostartobject,
+%D dostopobject,
+%D doinsertobject}
+%D
+%D Reuse of object is not supported by the \DVI\ format. We
+%D therefore just duplicate them using boxes.
+
+\startspecials[tex]
+
+\newbox\DVIobjects \newcounter\DVIobjectcounter
+
+\definespecial\dostartobject#1#2#3#4#5%
+ {\setbox\nextbox\vbox\bgroup
+ \def\dodostopobject
+ {\egroup
+ \doglobal\increment\DVIobjectcounter
+ \global\setbox\DVIobjects\vbox
+ {\offinterlineskip
+ \forgetall
+ \unvbox\DVIobjects
+ \setbox\nextbox\hbox{\box\nextbox}%
+ \wd\nextbox\zeropoint
+ \dp\nextbox\zeropoint
+ \ht\nextbox\onepoint
+ \allowbreak
+ \box\nextbox}%
+ \dosetobjectreference{#1}{#2}{\DVIobjectcounter}}}
+
+\definespecial\dostopobject
+ {\dodostopobject}
+
+\definespecial\doinsertobject#1#2%
+ {\bgroup
+ \dogetobjectreference{#1}{#2}\DVIobjectreference
+ \splittopskip\zeropoint
+ \setbox0=\copy\DVIobjects
+ \dimen0=\DVIobjectreference\onepoint
+ \advance\dimen0 -\onepoint
+ \setbox2\vsplit0 to \dimen0
+ \ifdim\ht0>\onepoint
+ \setbox0\vsplit0 to \onepoint
+ \fi
+ \unvbox0
+ \setbox0\lastbox
+ \hbox{\unhbox0}% the \hbox is really needed!
+ \egroup}
+
+%D \macros
+%D {dosetposition,
+%D dosetpositionwhd,
+%D dosetpositionplus}
+%D
+%D The next specials only identify a position. It is up to
+%D a \DVI\ postprocessing utility to merge the right commands
+%D into the utility file. Since in \CONTEXT, we only deal
+%D with relative positions, the reference point is not so
+%D important.
+%D
+%D The postprocessor should translate the specials into
+%D commands and append these to \type {jobname.tuo} using the
+%D format:
+%D
+%D \starttyping
+%D \pospxy {identifier}{page}{x}{y}
+%D \pospxywhd {identifier}{page}{x}{y}{w}{h}{d}
+%D \pospxyplus{identifier}{page}{x}{y}{w}{h}{d}{list}
+%D \stoptyping
+%D
+%D The postprocessor should, of course, provide the \type
+%D {page}, \type {x}, and \type {y} values.
+
+\definespecial\dosetposition#1%
+ {\special{pos:pxy "#1"}}
+
+\definespecial\dosetpositionwhd#1#2#3#4%
+ {\special{pos:pxywhd "#1" #2 #3 #4}}
+
+\definespecial\dosetpositionplus#1#2#3#4#5%
+ {\special{pos:pxyplus "#1" #2 #3 #4 #5}}
+
+%D The next special tells the position postprocessor what
+%D page dimensions were used.
+
+\let\flushDVIpositionpapersize\relax
+
+% \definespecial\dosetpositionpapersize#1#2%
+% {\xdef\flushDVIpositionpapersize%
+% {\special{pos:papersize #1 #2}%
+% \global\noexpand\let\noexpand\flushDVIpositionpapersize\relax}}
+%
+% \appendtoksonce
+% \ifspecialbasedsettings
+% \ifpositioning\installprogram{dvipos \jobname}\fi
+% \fi
+% \to \everystoptext
+%
+% less tokens:
+
+\definespecial\dosetpositionpapersize#1#2%
+ {\xdef\flushDVIpositionpapersize%
+ {\special{pos:papersize #1 #2}%
+ \noexpand\installprogram{dvipos \jobname}%
+ \global\noexpand\let\noexpand\flushDVIpositionpapersize\relax}}
+
+\prependtoksonce \flushDVIpositionpapersize \to \everyshipout
+
+\stopspecials
+
+\protect \endinput