summaryrefslogtreecommitdiff
path: root/macros/optex/pkg/tikz.opm
diff options
context:
space:
mode:
Diffstat (limited to 'macros/optex/pkg/tikz.opm')
-rw-r--r--macros/optex/pkg/tikz.opm123
1 files changed, 118 insertions, 5 deletions
diff --git a/macros/optex/pkg/tikz.opm b/macros/optex/pkg/tikz.opm
index da2657d5fc..84743a18b6 100644
--- a/macros/optex/pkg/tikz.opm
+++ b/macros/optex/pkg/tikz.opm
@@ -1,17 +1,88 @@
% This is macro package used by OpTeX, see http://petr.olsak.net/optex
-\_codedecl \tikzpicture {TikZ for OpTeX <2021-07-15>}
+\_codedecl \tikzpicture {TikZ for OpTeX <2022-02-11>}
+\_namespace{pgf}
+\_catcode`\@=11
\_doc
This package is \OpTeX/'s compatibility layer for PGF/TikZ. When users do
`\load[tikz]` they expect `tikz.tex` to be loaded, but this file gets loaded
instead. It does load `tikz.tex`, but also does fixups.
- First we load TikZ itself.
+ We want to change some definitions in `pgfutil-plain.def` and
+ `pgfsys-luatex.def`. We need to do that in right times, so we manually
+ emulate some files from PGF to ensure we do things in the correct order.
+ \_cod
+
+%tikz.tex
+% pgf.tex
+% pgfrcs.tex
+% pgfutil-common.tex
+% pgfutil-common-lists.tex
+% pgfutil-plain.tex
+% pgfrcs.code.tex
+% pgfcore.tex
+% pgfsys.tex
+% pgfsrcs.tex
+% pgfsys.code.tex
+% driver
+% pgfcore.code.tex
+% pgffor.tex
+% pgfrcs.tex
+% pgfkeys.code.tex
+% pgffor.code.tex
+% tikz.code.tex
+\def\pgfrcsincluded{}
+\input pgfutil-common.tex
+
+ \_doc
+ We load macros from `pgfutil-plain.def` because they are most
+ similar to macros we actually need. But there are several differences.
+ We don't want to load the output routine hack realized by
+ `\input atbegshi.sty\relax \AtBeginShipout{...}` in `pgfutil-plain.def`.
+ This is the reason why we re-define `\input` temporarily.
\_cod
-\_input tikz.tex
+\def\input#1\relax{}
+\def\AtBeginShipout#1{}
+\_input pgfutil-plain.def
+\let\input=\_input
+\let\AtBeginShipout=\_undefined
+\let\end=\_end
+
+ \_doc
+ More changes should be done for macros loaded from `pgfutil-plain.def`.
+ These changes follows.
+ \_cod
+
+% Writing to auxiliary files, customized
+
+\_let\pgfutil@aux@read@hook=\_relax
+\_def\pgfutil@writetoaux#1{}
+
+
+% Driver detection, customized
+
+\def\pgfsysdriver{pgfsys-luatex.def}
+
+
+% Font stuff, \_typosize to fixed sizes used, math fonts are scaled too
+
+\def\pgfutil@font@tiny{\_typosize[5/]}
+\def\pgfutil@font@scriptsize{\_typosize[7/]}
+\def\pgfutil@font@footnotesize{\_typosize[8/]}
+\def\pgfutil@font@small{\_typosize[9/]}
+\def\pgfutil@font@normalsize{\_typosize[10/]}
+\def\pgfutil@font@large{\_typosize[12/]}
+\def\pgfutil@font@Large{\_typosize[14.4/]}
+\def\pgfutil@font@huge{\_typosize[20.74/]}
+\def\pgfutil@font@Huge{\_typosize[24.88/]}
+
+\def\pgfutil@font@normalfont{\_rm}
+\def\pgfutil@font@itshape{\_it}
+\def\pgfutil@font@bfseries{\_bf}
+\def\pgfutil@selectfont{\_rm}
\_doc
PGF's `\pgfutil@everybye` hooks into `\end`, but normally \OpTeX/ uses the
@@ -19,9 +90,34 @@
hopefully be preserved by all \OpTeX/ macro writers.
\_cod
-\_addto\_byehook{\_the\_cs{pgfutil@everybye}}
+\_addto\_byehook{\_the\pgfutil@everybye}
\_doc
+ Make PGF/TikZ use our PDF resource management. Our functions expect split
+ key and value.
+ \_cod
+
+\_def\.kvsplit#1{\_ea\.kvsplitA\_expanded{#1}\_end}
+\_def\.kvsplitA#1/#2 #3\_end{{#2}{#3}}
+
+\_def\pgfutil@addpdfresource@extgs{\_addpageresource{ExtGState}\.kvsplit}
+\_def\pgfutil@addpdfresource@colorspaces{\_addpageresource{ColorSpace}\.kvsplit}
+\_def\pgfutil@addpdfresource@patterns{\_addpageresource{Pattern}\.kvsplit}
+\_let\pgfutil@setuppdfresources=\_relax
+\_let\pgf@sys@pdf@check@resources=\_relax
+\_def\pgf@sys@pdf@possible@resources{\_pageresources}
+
+\_input pgfrcs.code.tex
+\ProvidesPackageRCS{pgf.tex}
+\_input pgfcore.tex
+\usepgfmodule{shapes,plot}
+\_input pgffor.tex
+\_input tikz.code.tex
+
+ \_doc
+ More changes should be done for macros loaded from `pgfsys-luatex.def`.
+ These changes follows.
+
There is a general disagreement about the use/meaning of `\hoffset` and
`\voffset` -- \LaTeX/, the \LaTeX/ `crop`
package\fnote{\url{https://www.ctan.org/pkg/crop}}, TikZ, and \OpTeX/ all
@@ -34,6 +130,23 @@
$(0, 0)$).
\_cod
-\_sdef{pgf@sys@pdf@mark@pos@pgfpageorigin}{\pgfpointorigin}
+\_def\pgf@sys@pdf@mark@pos@pgfpageorigin{\pgfpointorigin}
+\_refdecl{%
+ \_def\.Xpgfsysmark#1#2#3{\_sdef{pgf@sys@pdf@mark@pos@#1}{\pgfqpoint{#2sp}{#3sp}}}%
+}
+
+\_def\pgfsys@markposition#1{%
+ \_openref
+ \_savepos
+ \_edef\.tmp{#1}%
+ \_ea\_wref\_ea\.Xpgfsysmark\_ea{\_ea{\.tmp}{\_the\_lastxpos}{\_the\_lastypos}}%
+}
+
+% don't worry about reseting catcodes - we are at the end of \opinput'ed file
+\_endnamespace
\_endcode
+
+History:
+2022-03-05 resources management re-implemented
+2021-07-15 released