summaryrefslogtreecommitdiff
path: root/tex/context/base/mkii/spec-mis.mkii
diff options
context:
space:
mode:
Diffstat (limited to 'tex/context/base/mkii/spec-mis.mkii')
-rw-r--r--tex/context/base/mkii/spec-mis.mkii288
1 files changed, 288 insertions, 0 deletions
diff --git a/tex/context/base/mkii/spec-mis.mkii b/tex/context/base/mkii/spec-mis.mkii
new file mode 100644
index 000000000..de0debd3c
--- /dev/null
+++ b/tex/context/base/mkii/spec-mis.mkii
@@ -0,0 +1,288 @@
+%D \module
+%D [ file=spec-mis,
+%D version=1997.04.01,
+%D title=\CONTEXT\ Special Macros,
+%D subtitle=Miscellaneous Macros,
+%D author=Hans Hagen,
+%D date=\currentdate,
+%D copyright={PRAGMA ADE \& \CONTEXT\ Development Team}]
+%C
+%C This module is part of the \CONTEXT\ macro||package and is
+%C therefore copyrighted by \PRAGMA. See mreadme.pdf for
+%C details.
+
+%D Quite some modules in this group are dedicated to supporting
+%D \PDF\ directly by means of \PDFTEX or indirectly by using
+%D Acrobat Distiller. This module implements some common
+%D features.
+
+\writestatus{loading}{ConTeXt Special Macros / Miscellaneous Macros}
+
+\unprotect
+
+%D \macros
+%D {URLhash}
+%D
+%D A rather trivial macro:
+
+\expandafter\def\expandafter\URLhash\expandafter{\string#}
+
+%D \macros
+%D {ifusepagedestinations}
+%D
+%D In \PDF\ version 1.0 only page references were supported,
+%D while in \DVIWINDO\ 1.N only named references were accepted.
+%D Therefore \CONTEXT\ supports both methods of referencing. In
+%D \PDF\ version 1.1 named destinations arrived. Lack of
+%D continuous support of version 1.1 viewers for \MSDOS\
+%D therefore sometimes forces us to prefer page references. As
+%D a bonus, they are faster too and have no limitations. How
+%D fortunate we were having both mechanisms available when the
+%D version 3.0 (\PDF\ version 1.2) viewers proved to be too
+%D bugged to support named destinations.
+
+\newif\ifusepagedestinations
+
+%D \macros
+%D {ifhighlighthyperlinks}
+%D
+%D The next switch can be used to make user hyperlinks are
+%D not highlighted when clicked on.
+
+\newif\ifhighlighthyperlinks
+
+%D \macros
+%D {ifgotonewwindow}
+%D
+%D To make the {\em goto previous jump} feature more
+%D convenient when using more than one file, it makes sense
+%D to force the viewer to open a new window for each file
+%D opened.
+
+\newif\ifgotonewwindow
+
+%D \macros
+%D {ifPDFstrokecolor}
+%D
+%D We can reduce the filesize a bit by setting the next switch
+%D to false. The amount of reduction depends on the use of
+%D color, but don't expect more than a few percent. Zip
+%D compression is already rather efficient in itself.
+
+\newif\ifPDFstrokecolor \PDFstrokecolortrue
+
+%D \macros
+%D {dofileinsertion,definefileinsertion,doiffileinsertionsupported}
+%D
+%D File insertion depend on the driver or \TEX\ variant used.
+%D All driver modules use the same scheme for file insertion,
+%D and therefore have the next macro in common (stupified
+%D per august 2006):
+
+\let\supportedfileinsertions\empty
+\let\supportedfilecheckers \empty
+
+\def\definefileinsertion#1#2#3%
+ {\addtocommalist{#2}\supportedfileinsertions
+ \setvalue{do#1insert#2}{#3}}
+
+\def\definefilechecker#1#2#3%
+ {\addtocommalist{#2}\supportedfilecheckers
+ \setvalue{do#1check#2}{#3}}
+
+\def\dofileinsertion#1#2{\executeifdefined{do#1insert#2}\donothing}
+\def\dofilechecker #1#2{\executeifdefined{do#1check#2} \donothing}
+
+\appendtoks \let\supportedfileinsertions\empty \to \everyresetspecials
+\appendtoks \let\supportedfilecheckers \empty \to \everyresetspecials
+
+% \def\doiffileinsertionsupportedelse#1%
+% {\expanded{\doifinstringelse{#1}{\c!tex,\c!tmp,\supportedfileinsertions}}}
+
+\def\doiffileinsertionsupportedelse#1% lowercasing happens at tex end
+ {\expanded{\doifinstringelse{\truegraphictype{#1}}{\c!tex,\c!tmp,\supportedfileinsertions}}}
+
+%D This macro is called with 10 arguments, where the first
+%D one specifies the driver, like \type{yy} or \type{tr}. The
+%D second argument is a \type{{type,method}} pair and the
+%D third the filename.
+
+%D Just in case this one is undefined (which can happen if
+%D this module is used outside \CONTEXT):
+
+\ifx\setreferencefilename\undefined
+
+ \def\setreferencefilename#1\to#2{\edef#2{#1}}
+
+\fi
+
+%D When submitting forms, we need to communicate the format.
+
+\chardef\submitoutputformat=0 % 0=unknown 1=HTML 2=FDF 3=XML
+
+\def\setsubmitoutputformat#1%
+ {\doifinsetelse{#1}{FDF,fdf}
+ {\chardef\submitoutputformat2}
+ {\doifinsetelse{#1}{XML,xml}
+ {\chardef\submitoutputformat3}
+ {\chardef\submitoutputformat1}}%
+ \relax}
+
+%D \macros
+%D {escapePSstring}
+%D
+%D \starttyping
+%D \escapePSstring(t\e\1st)))))\to\crap \crap
+%D \stoptyping
+
+% testcase: webschrift met lege regels en unbalanced ()
+
+\bgroup
+
+\catcode`\*=\@@escape
+\catcode`\\=\@@letter
+
+*long*gdef*escapedPSstring#1%
+ {*aftergroup*string
+ *ifnum`#1=12
+ *aftergroup*n%
+ *else*ifnum`#1=13
+ *aftergroup*n%
+ *else*if#1(%
+ *aftergroup*(%
+ *else*if#1)%
+ *aftergroup*)%
+ *else*if#1\%
+ *aftergroup*\%
+ *else
+ *aftergroup#1%
+ *fi*fi*fi*fi*fi}
+
+*egroup
+
+\long\def\escapePSstring#1\to#2%
+ {\defconvertedargument#2{#1}%
+ \bgroup
+ \ifx#2\empty \else
+ \setverbosecscharacters
+ \aftergroup\edef
+ \aftergroup#2%
+ \aftergroup{%
+ \expandafter\handletokens#2\with\escapedPSstring
+ \aftergroup}%
+ \fi
+ \egroup}
+
+% \long\def\preservePSpar#1\to#2%
+% {\bgroup
+% \def\par{\rawcharacter{12}}%
+% \expanded{\egroup\noexpand\def\noexpand#2{#1}}}
+
+\long\def\preservePSpar#1\to#2%
+ {\bgroup
+ \def\par{\rawcharacter{12}\rawcharacter{12}}% hm, should be one 13 but 12 ff is platform safe
+ \expanded{\egroup\noexpand\def\noexpand#2{#1}}}
+
+%D \macros
+%D {ifPDFunicode}
+%D
+%D We can use this switch to signal that content streams has
+%D to be unicoded.
+
+\newif\ifPDFunicode
+
+%D \macros
+%D {makeMPintoPDFobject, handleMPfshow, setMPPDFobject, getMPPDFobject}
+%D
+%D \METAPOST\ support.
+
+\ifx\makeMPintoPDFobject\undefined \newcount\makeMPintoPDFobject \fi
+
+\appendtoks
+ \makeMPintoPDFobject\zerocount
+ \def\setMPPDFobject#1#2{\def\getMPPDFobject{\box#2}}%
+\to \everyresetspecials
+
+\appendtoks
+ \let\handleMPfshow\dohandleMPfshow
+\to \everyresetspecials
+
+%D
+
+%D \macros
+%D {dosetposition, dosetpositionwdh, dosetpositionplus}
+%D
+%D Opposite to its \DVI\ counterpart, the \PDFTEX\ backend
+%D can provide positional information directly. Since
+%D \CONTEXT\ only uses relative positions, the origin is of
+%D less importance. Nowadays \XETEX\ also supports this
+%D feature.
+
+\ifx\pdfsavepos\undefined
+
+ % only for ancient pdftex, less old xetex and current aleph
+
+ \def\dosetposition #1{\special{pos:pxy "#1"}}
+ \def\dosetpositionwhd #1#2#3#4{\special{pos:pxywhd "#1" #2 #3 #4}}
+ \def\dosetpositionplus#1#2#3#4#5{\special{pos:pxyplus "#1" #2 #3 #4 #5}}
+
+ \let\flushDVIpositionpapersize\relax
+
+ \def\dosetpositionpapersize#1#2%
+ {\xdef\flushDVIpositionpapersize
+ {\special{pos:papersize \number#1 \number#2}%
+ \noexpand\installprogram{dvipos -o \jobname.tuo \jobname.dvi }%
+ \global\noexpand\let\noexpand\flushDVIpositionpapersize\relax}}
+
+ % kind of obsolete since nowadays xetex supports \pdfsavepos as well
+
+ \ifnum\texengine=\xetexengine
+
+ \def\dosetpositionpapersize#1#2%
+ {\xdef\flushDVIpositionpapersize
+ {\special{pos:papersize \number#1 \number#2}%
+ \noexpand\installprogram{dvipos -o \jobname.tuo \jobname.xdv }%
+ \global\noexpand\let\noexpand\flushDVIpositionpapersize\relax}}
+
+ \fi
+
+ \prependtoksonce \flushDVIpositionpapersize \to \everyshipout
+
+\else
+
+ \def\dosetposition#1%
+ {\pdfsavepos
+ \dolazysaveposition
+ {#1}%
+ {\noexpand\realfolio}%
+ {\noexpand\the\dimexpr\pdflastxpos\scaledpoint\relax}%
+ {\noexpand\the\dimexpr\pdflastypos\scaledpoint\relax}}%
+
+ \def\dosetpositionwhd#1#2#3#4%
+ {\pdfsavepos
+ \dolazysavepositionwhd
+ {#1}%
+ {\noexpand\realfolio}%
+ {\noexpand\the\dimexpr\pdflastxpos\scaledpoint\relax}%
+ {\noexpand\the\dimexpr\pdflastypos\scaledpoint\relax}%
+ {#2}{#3}{#4}}
+
+ \def\dosetpositionplus#1#2#3#4#5%
+ {\pdfsavepos
+ \dolazysavepositionplus
+ {#1}%
+ {\noexpand\realfolio}%
+ {\noexpand\the\dimexpr\pdflastxpos\scaledpoint\relax}%
+ {\noexpand\the\dimexpr\pdflastypos\scaledpoint\relax}%
+ {#2}{#3}{#4}{#5}}
+
+ \let\dosetpositionpapersize\gobbletwoarguments
+
+\fi
+
+%D Handy to have this available asap:
+
+\ifdefined\everyPDFxform \newtoks\everyPDFxform \fi
+\ifdefined\everyPDFximage \newtoks\everyPDFximage \fi
+
+\protect \endinput