%D \module %D [ file=strc-bkm, %D version=2009.04.01, %D title=\CONTEXT\ Structure Macros, %D subtitle=Bookmarks, %D author=Hans Hagen, %D date=\currentdate, %D copyright=\PRAGMA] %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 This might become scrn-bkm.mkiv. \writestatus{loading}{ConTeXt Structure Macros / Bookmarks} \registerctxluafile{strc-bkm}{1.001} \unprotect %D Due to requests I finally decided to support bookmarks, a %D driver dependant way of showing tables of content. The most %D simple way of support is hooking bookmark generation into %D the existing list mechanisms. That way users can generate %D bookmarks automatically, although its entirely valid to add %D bookmarks by defining alternative ones. These will be added %D at the appropriate place in the list. % \hoofdstuk{het eerste hoofdstuk} % % \bookmark {de eerste bookmark} % optional overruled hoofdstuk % % .... text .... % % \placebookmarks [hoofdstuk,paragraaf,subparagraaf,subsubparagraaf,mylist] % [open list] % % \bookmark[mylist]{whatever} %D This will go away. \let\flushpostponedbookmark\relax %D We have better ways now. \unexpanded\def\bookmark {\dosingleempty\dobookmark} \def\dobookmark[#1]#2% {\begingroup \simplifycommands \ctxlua{structure.bookmarks.overload("#1",\!!bs\detokenize\expandafter{\normalexpanded{#2}}\!!es)}% \endgroup} %D Placement \unknown\ look how simple compared to \MKII: \unexpanded\def\placebookmarks {\dodoubleempty\doplacebookmarks} \def\doplacebookmarks[#1][#2]% {\iflocation \iffirstargument \ctxlua{structure.bookmarks.register("#1","#2")}% \else \normalexpanded{\noexpand\placebookmarks[\getvalue{\??ih\v!content\c!list}]}% \fi \fi} % \prependtoks\ctxlua{structure.bookmarks.place()}\to\everystoptext % too late % \prependtoks\ctxlua{structure.bookmarks.place()}\to\everylastbackendshipout % okay but not nice \protect \endinput % \starttext % \setupinteraction[state=start]\setupinteractionscreen[option=bookmark] % \placebookmarks[chapter,section,subsection][chapter] % \chapter{First} % \bookmark{The First Indeed} % \section{alpha} % \bookmark[chapter]{The First Indeed Again} % \section{beta} % \chapter{Second} % \bookmark{The Second Indeed} % \section{gamma \tex{radiation}} % \subsection{a} % \subsection{b} % \section{delta} % \section{epsilon} % \chapter{Third \relax} % \chapter{我〈能吞下玻璃而不傷身〉體。} % whatever that means % \chapter{Idris Samawi Hamid ادريس سماوي حامد} % \stoptext