diff options
Diffstat (limited to 'doc/context/sources/general/magazines/mag-1102-mkiv.tex')
-rw-r--r-- | doc/context/sources/general/magazines/mag-1102-mkiv.tex | 433 |
1 files changed, 433 insertions, 0 deletions
diff --git a/doc/context/sources/general/magazines/mag-1102-mkiv.tex b/doc/context/sources/general/magazines/mag-1102-mkiv.tex new file mode 100644 index 000000000..ad9dcc5f9 --- /dev/null +++ b/doc/context/sources/general/magazines/mag-1102-mkiv.tex @@ -0,0 +1,433 @@ +% language=uk + +% author : Hans Hagen +% copyright : PRAGMA ADE & ConTeXt Development Team +% license : Creative Commons Attribution ShareAlike 4.0 International +% reference : pragma-ade.nl | contextgarden.net | texlive (related) distributions +% origin : the ConTeXt distribution +% +% comment : Because this manual is distributed with TeX distributions it comes with a rather +% liberal license. We try to adapt these documents to upgrades in the (sub)systems +% that they describe. Using parts of the content otherwise can therefore conflict +% with existing functionality and we cannot be held responsible for that. Many of +% the manuals contain characteristic graphics and personal notes or examples that +% make no sense when used out-of-context. +% +% comment : Some chapters might have been published in TugBoat, the NTG Maps, the ConTeXt +% Group journal or otherwise. Thanks to the editors for corrections. Also thanks +% to users for testing, feedback and corrections. + +\usemodule[mag-01,abr-02] + +\startbuffer[abstract] + A not so widely known feature of the verbatim handler in \CONTEXT\ is the + ability to add comments in another style and \MKIV\ even offers a bit more. + Here some examples are shown. +\stopbuffer + +\startdocument + [title={Annotated Verbatim}, + author=Hans Hagen, + affiliation=PRAGMA ADE, + date=July 2011, + number=1102 \MKIV] + +\definetextbackground + [example] + [frame=on, + framecolor=darkblue, + location=paragraph, + leftoffset=1ex, + topoffset=1ex, + bottomoffset=1ex] + +Annotating verbatim content is done using a mechanism called escaping. For such +special cases it's often best to define a specific instance. + +\startbuffer[define] +\definetyping + [annotatedtyping] + [escape=/, + color=darkblue, + before=, + after=] +\stopbuffer + +\startbuffer[example] +\startannotatedtyping +bla = test /bgroup /sl oeps /egroup + /bgroup /bf some more /egroup + | another test + | somethingverylong /bgroup /it oeps /egroup +\stopannotatedtyping +\stopbuffer + +\typebuffer[define,example][option=TEX] \getbuffer[define] + +\starttextbackground[example] + \getbuffer[example] +\stoptextbackground + +In this example the \type {/} now serves as an escape character. Of course you +can also use the normal backslash but then you need to use a command to specify +it. + +\startbuffer[setup] +\setuptyping + [annotatedtyping] + [escape=\letterbackslash] +\stopbuffer + +\typebuffer[setup][option=TEX] \getbuffer[setup] + +Now we can say: + +\startbuffer[example] +\startannotatedtyping +bla = test \bgroup \sl oeps \egroup + \bgroup \bf some more \egroup + | another test + | somethingverylong \bgroup \it oeps \egroup +\stopannotatedtyping +\stopbuffer + +\typebuffer[example][option=TEX] + +and get: + +\starttextbackground[example] + \getbuffer[example] +\stoptextbackground + +You can also define an end symbol: + +\startbuffer[setup] +\setuptyping + [annotatedtyping] + [escape={//,*}, + color=darkblue] + +\definestartstop + [cmt] + [style=\rm\bf] +\stopbuffer + +\typebuffer[setup][option=TEX] \getbuffer[setup] + +Here the \type {//} starts the annotation and \type {*} ends it. + +\startbuffer[example] +\startannotatedtyping +bla = test // \black // \cmt{oeps} * + // \black // \cmt{some more} * + | another test + | somethingverylong // \black // \cmt{oeps} * +\stopannotatedtyping +\stopbuffer + +\typebuffer[example][option=TEX] + +Contrary to the first example, all text in the annotation is treated as \TEX\ +input: + +\starttextbackground[example] + \getbuffer[example] +\stoptextbackground + +You can consider using more balanced tagging, as in: + +\startbuffer[setup] +\setuptyping + [annotatedtyping] + [escape={<<,>>}, + color=darkblue] +\stopbuffer + +\typebuffer[example][option=TEX] + +Watch how we limit the annotation to part of the text: + +\startbuffer[example] +\startannotatedtyping +bla = test << \rm\bf first >> test + << \rm\bf second >> test + | test + | somethingverylong << \rm\bf fourth >> test +\stopannotatedtyping +\stopbuffer + +\typebuffer[example][option=TEX] + +The \type {test} a the end of the lines is verbatim again. + +\starttextbackground[example] + \getbuffer[example] +\stoptextbackground + +If no end symbol is given, the end of the line is used instead: + +\startbuffer[setup] +\setuptyping + [annotatedtyping] + [escape={//,}, + color=darkblue] +\stopbuffer + +\typebuffer[setup][option=TEX] \getbuffer[setup] + +Watch out: here we use \type {{//,}} and not just \type {//} (which would trigger +the escaped variant). + +\definestartstop[cmt][style=\rm\bf] + +\startbuffer[example] +\startannotatedtyping +bla = test // \black // \cmt{oeps} + // \black // \cmt{some more} + | test + | somethingverylong // \black // \cmt{oeps} +\stopannotatedtyping +\stopbuffer + +\typebuffer[example][option=TEX] + +The result is: + +\starttextbackground[example] + \getbuffer[example] +\stoptextbackground + +This can also be done easier by abusing the \type {style} option of \type {cmt}: + +\startbuffer[setup] +\definestartstop + [cmt] + [color=black, + style=\black //\rm\bf\space] +\stopbuffer + +\typebuffer[setup][option=TEX] \getbuffer[setup] + +When we give: + +\startbuffer[example] +\startannotatedtyping +bla = test // \cmt{oeps} + // \cmt{some more} + | test + | somethingverylong // \cmt{oeps} +\stopannotatedtyping +\stopbuffer + +\typebuffer[example][option=TEX] + +We get: + +\starttextbackground[example] + \getbuffer[example] +\stoptextbackground + +For cases like this, where we want to specify a somewhat detailed way to deal +with a situation, we can use processors: \footnote {More mechanisms in \CONTEXT\ +\MKIV\ will use that feature.} + +\startbuffer[setup] +\defineprocessor + [escape] + [style=bold, + color=black, + left=(,right=)] +\stopbuffer + +\typebuffer[setup][option=TEX] \getbuffer[setup] + +The previous definition of the annotation now becomes: + +\startbuffer[setup] +\setuptyping + [annotatedtyping] + [escape=escape->{//,}, + color=darkblue] +\stopbuffer + +\typebuffer[setup][option=TEX] \getbuffer[setup] + +This time no commands are needed in the annotation: + +\startbuffer[example] +\startannotatedtyping +bla = test // first + // second + | test + | somethingverylong // fourth +\stopannotatedtyping +\stopbuffer + +\typebuffer[example][option=TEX] + +The processor is applied to all text following the \type {//}. Spaces before the +text are stripped. + +\starttextbackground[example] + \getbuffer[example] +\stoptextbackground + +As some characters are special to \TEX, sometimes you need to escape the boundary +sequence: + +\startbuffer[setup] +\defineprocessor + [myescape] + [style=\rm\tf, + color=black] + +\setuptyping + [annotatedtyping] + [escape=myescape->{\letterhash\letterhash,}, + color=darkgreen] +\stopbuffer + +\typebuffer[setup][option=TEX] \getbuffer[setup] + +All text between the double hashes and the end of the line is now treated as +annotation: + +\startbuffer[example] +\startannotatedtyping +bla = test ## first \bf test + ## second \sl test + | test + | somethingverylong ## third \it test +\stopannotatedtyping +\stopbuffer + +\typebuffer[example][option=TEX] + +So we get: + +\starttextbackground[example] + \getbuffer[example] +\stoptextbackground + +We can beautify \TEX\ commenting as follows: + +\startbuffer[setup] +\defineprocessor + [comment] + [style=\rm, + color=black, + left={\tttf\letterpercent\space}] + +\setuptyping + [annotatedtyping] + [escape=comment->{\letterpercent\letterpercent,}, + color=darkblue] +\stopbuffer + +\typebuffer[setup][option=TEX] \getbuffer[setup] + +Here the double comments are turned into a single one and the text after it is +typeset in a regular font: + +\startbuffer[example] +\startannotatedtyping +bla = test %% first \bf test + %% second \sl test + | test + | somethingverylong %% third \it test +\stopannotatedtyping +\stopbuffer + +\typebuffer[example][option=TEX] + +This gives: + +\starttextbackground[example] + \getbuffer[example] +\stoptextbackground + +It is possible to define several escapes. Let's start with the delimited variant: + +\startbuffer[setup] +\defineprocessor + [escape_a] + [style=bold, + color=darkred, + left=(, + right=)] + +\defineprocessor + [escape_b] + [style=bold, + color=darkgreen, + left=(, + right=)] + +\setuptyping + [annotatedtyping] + [escape={escape_a->{[[,]]},escape_b->{[(,)]}}, + color=darkblue] +\stopbuffer + +\typebuffer[setup][option=TEX] \getbuffer[setup] + +We can now alternate comments: + +\startbuffer[example] +\startannotatedtyping +bla = test [[ first ]] test [( first )] + [[ second ]] test [( second )] + | test + | somethingverylong [[ fourth ]] test [( fourth )] +\stopannotatedtyping +\stopbuffer + +\typebuffer[example][option=TEX] + +When typeset this looks as follows: + +\starttextbackground[example] + \getbuffer[example] +\stoptextbackground + +The line terminated variant can also have multiple escapes. + +\startbuffer[setup] +\defineprocessor + [annotated_bf] + [style=\rm\bf, + color=darkred] + +\defineprocessor + [annotated_bs] + [style=\rm\bs, + color=darkyellow] + +\setuptyping + [annotatedtyping] + [escape={annotated_bf->{!bf,},annotated_bs->{!bs,}}, + color=darkblue] +\stopbuffer + +\typebuffer[setup][option=TEX] \getbuffer[setup] + +So this time we have two ways to enter regular \TEX\ mode: + +\startbuffer[example] +\startannotatedtyping +bla = test !bf one {\em again} + !bs two {\em again} + | test + | somethingverylong !bf three {\em again} +\stopannotatedtyping +\stopbuffer + +\typebuffer[example][option=TEX] + +These somewhat meaningful tags result in: + +\starttextbackground[example] + \getbuffer[example] +\stoptextbackground + +\stopdocument |