diff options
Diffstat (limited to 'doc')
17 files changed, 554 insertions, 0 deletions
diff --git a/doc/context/documents/general/manuals/musings.pdf b/doc/context/documents/general/manuals/musings.pdf Binary files differindex 9d83dd555..26b421a03 100644 --- a/doc/context/documents/general/manuals/musings.pdf +++ b/doc/context/documents/general/manuals/musings.pdf diff --git a/doc/context/documents/general/qrcs/setup-cs.pdf b/doc/context/documents/general/qrcs/setup-cs.pdf Binary files differindex 2b1a2622c..9912dcbc4 100644 --- a/doc/context/documents/general/qrcs/setup-cs.pdf +++ b/doc/context/documents/general/qrcs/setup-cs.pdf diff --git a/doc/context/documents/general/qrcs/setup-de.pdf b/doc/context/documents/general/qrcs/setup-de.pdf Binary files differindex 357501e49..7e4d7e80d 100644 --- a/doc/context/documents/general/qrcs/setup-de.pdf +++ b/doc/context/documents/general/qrcs/setup-de.pdf diff --git a/doc/context/documents/general/qrcs/setup-en.pdf b/doc/context/documents/general/qrcs/setup-en.pdf Binary files differindex fd58e5805..746f0fb36 100644 --- a/doc/context/documents/general/qrcs/setup-en.pdf +++ b/doc/context/documents/general/qrcs/setup-en.pdf diff --git a/doc/context/documents/general/qrcs/setup-fr.pdf b/doc/context/documents/general/qrcs/setup-fr.pdf Binary files differindex 8dce1fdc1..983caae19 100644 --- a/doc/context/documents/general/qrcs/setup-fr.pdf +++ b/doc/context/documents/general/qrcs/setup-fr.pdf diff --git a/doc/context/documents/general/qrcs/setup-it.pdf b/doc/context/documents/general/qrcs/setup-it.pdf Binary files differindex 6f10683f4..3eabbcce5 100644 --- a/doc/context/documents/general/qrcs/setup-it.pdf +++ b/doc/context/documents/general/qrcs/setup-it.pdf diff --git a/doc/context/documents/general/qrcs/setup-mapping-cs.pdf b/doc/context/documents/general/qrcs/setup-mapping-cs.pdf Binary files differindex 0499538f3..12c1a80ea 100644 --- a/doc/context/documents/general/qrcs/setup-mapping-cs.pdf +++ b/doc/context/documents/general/qrcs/setup-mapping-cs.pdf diff --git a/doc/context/documents/general/qrcs/setup-mapping-de.pdf b/doc/context/documents/general/qrcs/setup-mapping-de.pdf Binary files differindex 63e8b8585..70d6fdf5f 100644 --- a/doc/context/documents/general/qrcs/setup-mapping-de.pdf +++ b/doc/context/documents/general/qrcs/setup-mapping-de.pdf diff --git a/doc/context/documents/general/qrcs/setup-mapping-en.pdf b/doc/context/documents/general/qrcs/setup-mapping-en.pdf Binary files differindex 1f5124d5e..c4fdc96d5 100644 --- a/doc/context/documents/general/qrcs/setup-mapping-en.pdf +++ b/doc/context/documents/general/qrcs/setup-mapping-en.pdf diff --git a/doc/context/documents/general/qrcs/setup-mapping-fr.pdf b/doc/context/documents/general/qrcs/setup-mapping-fr.pdf Binary files differindex 526271805..37da56c95 100644 --- a/doc/context/documents/general/qrcs/setup-mapping-fr.pdf +++ b/doc/context/documents/general/qrcs/setup-mapping-fr.pdf diff --git a/doc/context/documents/general/qrcs/setup-mapping-it.pdf b/doc/context/documents/general/qrcs/setup-mapping-it.pdf Binary files differindex 6663131d2..8dfb417a2 100644 --- a/doc/context/documents/general/qrcs/setup-mapping-it.pdf +++ b/doc/context/documents/general/qrcs/setup-mapping-it.pdf diff --git a/doc/context/documents/general/qrcs/setup-mapping-nl.pdf b/doc/context/documents/general/qrcs/setup-mapping-nl.pdf Binary files differindex b1b4151cd..a983fbf7b 100644 --- a/doc/context/documents/general/qrcs/setup-mapping-nl.pdf +++ b/doc/context/documents/general/qrcs/setup-mapping-nl.pdf diff --git a/doc/context/documents/general/qrcs/setup-mapping-ro.pdf b/doc/context/documents/general/qrcs/setup-mapping-ro.pdf Binary files differindex 9769c32c6..5fa4a71f0 100644 --- a/doc/context/documents/general/qrcs/setup-mapping-ro.pdf +++ b/doc/context/documents/general/qrcs/setup-mapping-ro.pdf diff --git a/doc/context/documents/general/qrcs/setup-nl.pdf b/doc/context/documents/general/qrcs/setup-nl.pdf Binary files differindex a6051bbb1..8d10733dd 100644 --- a/doc/context/documents/general/qrcs/setup-nl.pdf +++ b/doc/context/documents/general/qrcs/setup-nl.pdf diff --git a/doc/context/documents/general/qrcs/setup-ro.pdf b/doc/context/documents/general/qrcs/setup-ro.pdf Binary files differindex c6c7bee9d..0672c84f2 100644 --- a/doc/context/documents/general/qrcs/setup-ro.pdf +++ b/doc/context/documents/general/qrcs/setup-ro.pdf diff --git a/doc/context/sources/general/manuals/musings/musings-plain.tex b/doc/context/sources/general/manuals/musings/musings-plain.tex new file mode 100644 index 000000000..757f7300c --- /dev/null +++ b/doc/context/sources/general/manuals/musings/musings-plain.tex @@ -0,0 +1,553 @@ +% language=uk + +% \showfontkerns + +\startcomponent musings-manuals + +\environment musings-style + +\definetyping[narrowtyping][style=\ttx] + +\startchapter[title={About what \CONTEXT\ isn't}] + +\startsection[title={Introduction}] + +It really puzzles me why, when someone someplace asks if \CONTEXT\ is suitable +for her or is his needs, there are answers like: \quotation {You need to think of +\CONTEXT\ as being kind of plain \TEX: you have to define everything yourself.} +That answer probably stems from the fact that for \LATEX\ you load some style +that defines a lot, which you then might need to undefine or redefine, but that's +not part of the answer. + +In the following sections I will go into a bit more detail of what plain \TEX\ is +and how it influences macro packages, especially \CONTEXT . I'm sure I have +discussed this before so consider this another go at it. + +The \type {plain.tex} file start with the line: + +\starttyping +% This is the plain TeX format that's described in The TeXbook. +\stoptyping + +A few lines later we read: + +\starttyping +% And don't modify the file under any circumstances. +\stoptyping + +So, this format related to the \TEX\ reference. It serves as a template for what +is called a macro package. Here I will not go into the details of macro programming +but an occasional snippet of code can be illustrative. + +\stopsection + +\startsection[title={Getting started}] + +The first code we see in the plain file is: + +\startnarrowtyping +\catcode`\{=1 % left brace is begin-group character +\catcode`\}=2 % right brace is end-group character +\catcode`\$=3 % dollar sign is math shift +\catcode`\&=4 % ampersand is alignment tab +\catcode`\#=6 % hash mark is macro parameter character +\catcode`\^=7 \catcode`\^^K=7 % circumflex and uparrow are for superscripts +\catcode`\_=8 \catcode`\^^A=8 % underline and downarrow are for subscripts +\catcode`\^^I=10 % ascii tab is a blank space +\chardef\active=13 \catcode`\~=\active % tilde is active +\catcode`\^^L=\active \outer\def^^L{\par} % ascii form-feed is "\outer\par" +\stopnarrowtyping + +Assigning catcodes to the braces and hash are needed in order to make it possible +to define macros. The dollar is set to enter math mode and the ampersand becomes +a separator in tables. The superscript and subscript also relate to math. Nothing +demands these bindings but they are widely accepted. In this respect \CONTEXT\ is +indeed like plain. + +The tab is made equivalent to a space and a tilde is made active which means that +later on we need to give it some meaning. It is quite normal to make that an +unbreakable space, and one with the width of a digit when we're doing tables. +Now, nothing demands that we have to assume \ASCII\ input but for practical +reasons the formfeed character is made equivalent to a \type {\par}. + +Now what do these \type {^^K} and similar triplets represent? The \type {^^A} +represents character zero and normally all these control characters below decimal +32 (space) are special. The \type {^^I} is the \ASCII\ tab character, and \type +{^^L} the formfeed. But, the ones referred to as uparrow and downarrow in the +comments have only meaning on certain keyboards. So these are typical definitions +that only made sense for Don Knuth at that time and are not relevant in other +macro packages that aim at standardized input media. + +\startnarrowtyping +% We had to define the \catcodes right away, before the message line, since +% \message uses the { and } characters. When INITEX (the TeX initializer) starts +% up, it has defined the following \catcode values: +% +% \catcode`\^^@=9 % ascii null is ignored +% \catcode`\^^M=5 % ascii return is end-line +% \catcode`\\=0 % backslash is TeX escape character +% \catcode`\%=14 % percent sign is comment character +% \catcode`\ =10 % ascii space is blank space +% \catcode`\^^?=15 % ascii delete is invalid +% \catcode`\A=11 ... \catcode`\Z=11 % uppercase letters +% \catcode`\a=11 ... \catcode`\z=11 % lowercase letters +% all others are type 12 (other) +\stopnarrowtyping + +The comments above speak for themselves. Changing catcodes is one way to adapt +interpretation. For instance, in verbatim mode most catcodes can best be made +letter or other. In \CONTEXT\ we always had so called catcode regimes: for +defining macros, for normal text, for \XML, for verbatim, etc. In \MKIV\ this +mechanism was adapted to the new catcode table mechanism available in that +engine. It was one of the first things we added to \LUATEX. So, again, although +we follow some standards (expectations) \CONTEXT\ differs from plain. + +\startnarrowtyping +% We make @ signs act like letters, temporarily, to avoid conflict between user +% names and internal control sequences of plain format. + +\catcode`@=11 +\stopnarrowtyping + +In \CONTEXT\ we went a step further and when defining macros also adapted +the catcode of \type {!} and \type {?} and later in \MKIV\ \type {_}. When +we're in unprotected mode this applies. In addition to regular text +input math is dealt with: + +\startnarrowtyping +% INITEX sets up \mathcode x=x, for x=0..255, except that +% +% \mathcode x=x+"7100, for x = `A to `Z and `a to `z; +% \mathcode x=x+"7000, for x = `0 to `9. + +% The following changes define internal codes as recommended in Appendix C of +% The TeXbook: + +\mathcode`\^^@="2201 % \cdot +\mathcode`\^^A="3223 % \downarrow +\mathcode`\^^B="010B % \alpha +\mathcode`\^^C="010C % \beta +.................... +\mathcode`\|="026A +\mathcode`\}="5267 +\mathcode`\^^?="1273 % \smallint +\stopnarrowtyping + +Here we see another set of definitions but the alphabetic ones are not defined in +\CONTEXT, they are again bindings to the authors special keyboard. + +\startnarrowtyping +% INITEX sets \sfcode x=1000 for all x, except that \sfcode`X=999 for uppercase +% letters. The following changes are needed: + +\sfcode`\)=0 \sfcode`\'=0 \sfcode`\]=0 + +% The \nonfrenchspacing macro will make further changes to \sfcode values. +\stopnarrowtyping + +Definitions like this depend on the language. Because original \TEX\ was mostly +meant for typesetting English, these things are hard coded. In \CONTEXT\ such +definitions relate to languages. + +I show these definitions because they also illustrate what \TEX\ is about: +typesetting math: + +\startnarrowtyping +% Finally, INITEX sets all \delcode values to -1, except \delcode`.=0 + +\delcode`\(="028300 +\delcode`\)="029301 +\delcode`\[="05B302 +\delcode`\]="05D303 +\delcode`\<="26830A +\delcode`\>="26930B +\delcode`\/="02F30E +\delcode`\|="26A30C +\delcode`\\="26E30F + +% N.B. { and } should NOT get delcodes; otherwise parameter grouping fails! +\stopnarrowtyping + +Watch the last comment. One of the complications of \TEX\ is that because some +characters have special meanings, we also need to deal with exceptions. It also +means that arbitrary input is not possible. For instance, unless the percent +character is made a letter, everything following it till the end of a line will +be discarded. This is an areas where macro packages can differ but in \MKII\ we +followed these rules. In \MKIV\ we made what we called \type {\nonknuthmode} +default which means that ampersands are just that and scripts are only special in +math (there was also \type {\donknuthmode}). So, \CONTEXT\ is not like plain +there. + +\stopsection + +\startsection[title=Housekeeping] + +The next section defines some numeric shortcuts. Here the fact is used that a +defined symbolic character can act as counter value. When the number is larger +than 255 a math character is to be used. In \LUATEX, which is a \UNICODE\ engine +character codes can be much larger. + +\startnarrowtyping +% To make the plain macros more efficient in time and space, several constant +% values are declared here as control sequences. If they were changed, anything +% could happen; so they are private symbols. + +\chardef\@ne=1 +\chardef\tw@=2 +\chardef\thr@@=3 +\chardef\sixt@@n=16 +\chardef\@cclv=255 +\mathchardef\@cclvi=256 +\mathchardef\@m=1000 +\mathchardef\@M=10000 +\mathchardef\@MM=20000 +\stopnarrowtyping + +In \CONTEXT\ we still support these shortcuts but never use them ourselves. We +have plenty more variables and constants and nowadays always use verbose names. +(There was indeed a time when each extra characters depleted string memory more +and more so then using short command names made sense.) The comment is right that +using such variables is more efficient, for instance once loaded a macro is a +sequence of tokens, so \type {\@one} takes one memory slot. In the case of the +first three the saving is zero and even interpreting a single character token +\type {3} is not less efficient than \type {\thr@@}, but in the case of \type +{\@cclv} the three tokens \type {255} take more memory and also trigger the number +scanner which is much slower than simply taking the meaning of the \type +{\chardef}'d token. However, the \CONTEXT\ variable \type {\plusone} is as +efficient as the \type {\@ne} and it looks prettier in code too (and I'm very +sensitive for that). So, here \CONTEXT\ is definitely different! + +It makes no sense to show the next section here: it deals with managing +registers, like counters and dimensions and token lists. Traditional \TEX\ has +255 registers per category. Associating a control sequence (name) with a specific +counter is done with \type {\countdef} but I don't think that you will find a +macro package that expects a user to use that primitive. Instead it will provide +a \type {\newcount} macro. So yes, here \CONTEXT\ is like plain. + +Understanding these macros is a test case for understanding \TEX. Take the +following snippet: + +\startnarrowtyping +\let\newtoks=\relax % we do this to allow plain.tex to be read in twice +\outer\def\newhelp#1#2{\newtoks#1#1\expandafter{\csname#2\endcsname}} +\outer\def\newtoks{\alloc@5\toks\toksdef\@cclvi} +\stopnarrowtyping + +The \type {\outer} prefix flags macros as to be used at the outermost level and +because the \type {\newtoks} is in the macro body of \type {\newtoks} it has to +be relaxed first. Don't worry if you don't get it. In \CONTEXT\ we have no outer +macros so the definitions differ there. + +The plain format assumes that the first 10 registers are used for scratch +purposes, so best also assume this to be the case in other macro packages. There +is no need for \CONTEXT\ to differ from plain here. The definitions of box +registers and inserts are special: there is no \type {\boxdef} and inserts use +multiple registers. Especially the allocation of inserts is macro package +specific. Anyway, \CONTEXT\ users never see such details because inserts are used +as building blocks deep down. + +Right after defining the allocators some more constants are defined: + +\startnarrowtyping +% Here are some examples of allocation. + +\newdimen\maxdimen \maxdimen=16383.99999pt % the largest legal <dimen> +\stopnarrowtyping + +We do have that one, as it's again a standard but we do have more such constants. +This definition is kind of interesting as it assumes knowledge about what is +acceptable for \TEX\ as dimension: + +\startbuffer +{\maxdimen=16383.99999pt \the\maxdimen \quad \number\maxdimen} +{\maxdimen=16383.99998pt \the\maxdimen \quad \number\maxdimen} +\stopbuffer + +\typebuffer + +\startlines +\getbuffer +\stoplines + +Indeed it is the largest legal dimension but the real largest one is slighly +less. We could also have said the following, which also indicates what the +maximum cardinal is: + +\startnarrowtyping +\newdimen\maxdimen \maxdimen=1073741823sp +\stopnarrowtyping + +We dropped some of the others defined in plain. So, \CONTEXT\ is a bit like plain +but differs substantially. In fact, \MKII\ already used a different allocator +implementation and \MKIV\ is even more different. We also have more \type {\new} +things. + +The \type {\newif} definition also differs. Now that definition is quite special +in plain \TEX, so if you want a challenge, look it up. It defines three macros as +the comment says: + +\startnarrowtyping +% For example, \newif\iffoo creates \footrue, \foofalse to go with \iffoo. +\stopnarrowtyping + +The \type {\iffoo} is either equivalent to \type {\iftrue} or \type {\iffalse} +because that is what \TEX\ needs to see in order to be able to skip nested +conditional branches. In \CONTEXT\ we have so called conditionals, which are more +efficient. So, yes, you will find such defined ifs in the \CONTEXT\ source but +way less than you'd expect in such a large macro package: \CONTEXT\ code doesn't +look much like plain code I fear. + +\stopsection + +\startsection[title=Parameters] + +A next stage sets the internal parameters: + +\startnarrowtyping +% All of TeX's numeric parameters are listed here, but the code is commented out +% if no special value needs to be set. INITEX makes all parameters zero except +% where noted. +\stopnarrowtyping + +We use different values for many of them. The reason is that the plain \TEX\ format +is set up for a 10 point Computer Modern font system, and for a particular kind +of layout, so we use different values for: + +\startnarrowtyping +\hsize=6.5in +\vsize=8.9in +\maxdepth=4pt +\stopnarrowtyping + +and + +\startnarrowtyping +\abovedisplayskip=12pt plus 3pt minus 9pt +\abovedisplayshortskip=0pt plus 3pt +\belowdisplayskip=12pt plus 3pt minus 9pt +\belowdisplayshortskip=7pt plus 3pt minus 4pt +\stopnarrowtyping + +No, here \CONTEXT\ is not like plain. But, there is one aspect that we do inherit and +that is the ratio. Here a 10 point relates to 12 point and this 1.2 factor is carried +over in some defaults in \CONTEXT. So, in the end we're a bit like plain. + +After setting up the internal quantities plain does this: + +% We also define special registers that function like parameters: + +\startnarrowtyping +\newskip\smallskipamount \smallskipamount=3pt plus 1pt minus 1pt +\newskip\medskipamount \medskipamount=6pt plus 2pt minus 2pt +\newskip\bigskipamount \bigskipamount=12pt plus 4pt minus 4pt +\newskip\normalbaselineskip \normalbaselineskip=12pt +\newskip\normallineskip \normallineskip=1pt +\newdimen\normallineskiplimit \normallineskiplimit=0pt +\newdimen\jot \jot=3pt +\newcount\interdisplaylinepenalty \interdisplaylinepenalty=100 +\newcount\interfootnotelinepenalty \interfootnotelinepenalty=100 +\stopnarrowtyping + +The first three as well as the following three related variables are not internal +quantities but preallocated registers. These are not used in the engine but in +macros. In \CONTEXT\ we do provide them but the first three are never used that +way. The last three are not defined at all. So, \CONTEXT\ provides a bit what +plain provides, just in case. + +\stopsection + +\startsection[title=Fonts] + +The font section is quite interesting. I assume that one reason why some want to +warn users against using \CONTEXT\ is because it supports some of the font +switching commands found in plain. We had no reasons to come up with different ones +but they do different things anyway, for instance adapting to situations. So, in +\CONTEXT\ you will not find the plain definitions: + +\startnarrowtyping +\font\tenrm=cmr10 % roman text +\font\preloaded=cmr9 +\font\preloaded=cmr8 +\font\sevenrm=cmr7 +\font\preloaded=cmr6 +\font\fiverm=cmr5 +\stopnarrowtyping + +There is another thing going on here. Some fonts are defined \type {\preloaded}. So, +\type {cmr9} is defined, and then \type {cmr8} and \type {cmr6}. But they all use the +same name. Later on we see: + +\startnarrowtyping +\let\preloaded=\undefined % preloaded fonts must be declared anew later. +\stopnarrowtyping + +If you never ran into the relevant part of the \TEX\ book or read the program +source of \TEX, you won't realize that preloading means that it stays in memory +which in turn means that when it gets (re)defined later, the font data doesn't +come from disk. In fact, as the plain format is normally dumped for faster reload +later on, the font data is also retained. So, preloading is a speed up hack. In +\CONTEXT\ font loading has always been delayed till the moment a font is really +used. This permits plenty of definitions and gives less memory usage. Of course +we do reuse fonts once loaded. All this, plus the fact that we have a a system of +related sizes, collections of families, support multiple font encodings +alongside, collect definitions in so called typescript, etc. makes that the +\CONTEXT\ font subsystem is far from what plain provides. Only some of the +command stick, like \type {\rm} and \type {\bf}. + +The same is true for math fonts, where we can have different math font setups in +one document. Definitely in \MKII\ times, we also had to work around limitations +in the number of available math families, which again complicated the code. In +\MKIV\ things are even more different, one can even consider the implementation +somewhat alien for a standard macro package, but that's for another article (if +at all). + +\stopsection + +\startsection[title=Macros] + +Of course \CONTEXT\ comes with macros, but these are organized in setups, +environments, instances, etc. The whole process and setup is keyword driven. Out +of the box all things work: nothing needs to be loaded. If you want it different, +you change some settings, but you don't need to load something. Maybe that last +aspect is what is meant with \CONTEXT\ being like plain: you don't (normally) +load extra stuff. You just adapt the system to your needs. So there we proudly +follow up on plain \TEX. + +In the plain macro section we find definitions like: + +\startnarrowtyping +\def\frenchspacing{\sfcode`\.\@m \sfcode`\?\@m \sfcode`\!\@m + \sfcode`\:\@m \sfcode`\;\@m \sfcode`\,\@m} +\def\nonfrenchspacing{\sfcode`\.3000\sfcode`\?3000\sfcode`\!3000% + \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250 } +\stopnarrowtyping + +and: + +\startnarrowtyping +\def\space{ } +\def\empty{} +\def\null{\hbox{}} + +\let\bgroup={ +\let\egroup=} +\stopnarrowtyping + +and: + +\startnarrowtyping +\def\nointerlineskip{\prevdepth-1000\p@} +\def\offinterlineskip{\baselineskip-1000\p@ + \lineskip\z@ \lineskiplimit\maxdimen} +\stopnarrowtyping + +Indeed we also provide these, but apart from the two grouping related aliases +their implementation is different in \CONTEXT. There is no need to reinvent +names. + +For a while we kept (and did in \MKII) some of the plain helper macros, for +instance those that deal with tabs, but we have several more extensive table +models that are normally used. We always had our own code for float placement, +and we also have more options there. Footnotes are supported but again we have +multiple classes, placements, options, etc. Idem for itemized lists, one of the +oldest mechanisms in \CONTEXT. We don't have \type {\beginsection} but of course +we do have sectioning commands, and have no \type {\proclaim} but provide lots of +descriptive alternatives, so many that I forgot about most of them by now (so +plain is a winner in terms of knowing a macro package inside out). + +The fact that we use tables, floats and footnotes indeed makes \CONTEXT\ to act +like plain, but that's then also true for other macro packages. A fact is that +plain sets the standard for how to think about these matters! The same is true +for naming characters: + +\startnarrowtyping +\chardef\%=`\% +\chardef\&=`\& +\chardef\#=`\# +\chardef\$=`\$ +\chardef\ss="19 +\chardef\ae="1A +\chardef\oe="1B +\chardef\o="1C +\chardef\AE="1D +\chardef\OE="1E +\chardef\O="1F +\chardef\i="10 \chardef\j="11 % dotless letters +\stopnarrowtyping + +But we have many more and understandable the numbers are different in \CONTEXT\ +because we use different font (encodings). Their implementation is more adaptive. +The same is true for accented characters: + +\startnarrowtyping +\def\`#1{{\accent18 #1}} +\def\'#1{{\accent19 #1}} +\stopnarrowtyping + +The definitions in \MKII\ are different (in most cases we use native glyphs) and +in \MKIV\ we use \UNICODE\ anyway. I think that the \type {\accent} command is +only used in a few exceptional cases (like very limited fonts) in \MKII\ and never +in \MKIV. The implementation of for instance accents (and other pasted together +symbols) in math is also quite different. + +There are also definitions that seem to be commonly used in macro packages but +that we never use in \CONTEXT\ because they interfere badly with all kind of +other mechanisms, so you will find no usage of + +\startnarrowtyping +\def\leavevmode{\unhbox\voidb@x} % begins a paragraph, if necessary +\stopnarrowtyping + +in \CONTEXT. In order to stress that we provide \type {\dontleavehmode}, a wink +to not using the one above. + +The macro section ends with lots of math definitions. Most of the names used are +kind of standard so again here \CONTEXT\ is like plain, but the implementation +can differ as does the level of control. + +\stopsection + +\startsection[title=Output] + +Once a page is ready it gets wrapped up and shipped out. Here \CONTEXT\ is very +different from plain. The amount of code in plain is not that large but the +possibilities aren't either, which is exactly what the objectives demand: a +simple (example) format that can be described in the \TEX book. But, as with +other aspects of plain, it steered the way macro packages started out as it +showed the way. As did many examples in the \TEX\ book. + +\stopsection + +\startsection[title=Hyphenation] + +As an afterthought, the plain format ends with loading hyphenation patterns, that +is the English ones. That said it will be clear that \CONTEXT\ is not like plain: +we support many languages, and the subsystem deals with labels, specific +typesetting properties, etc.\ too. + +\startnarrowtyping +\lefthyphenmin=2 \righthyphenmin=3 % disallow x- or -xx breaks +\input hyphen +\stopnarrowtyping + +We don't even use these patterns as we switched to \UTF\ long ago (also in \MKII) +if only because we had to deal with a mix of font encodings. But we did preload the +lot there. In \MKIV\ again things are much different. + +\stopsection + +\startsection[title=Conclusion] + +The plain format does (and provides) what it is supposed to do. It is a showcase +of possibilities and part of the specification. In that respect it's nice that +\CONTEXT\ is considered to be like plain. But if it wasn't more, there was no +reason for its existence. Like more assumptions about \CONTEXT\ it demonstrates +that those coming up with answers and remarks like that probably missed something +in assessing \CONTEXT. Just let users find out themselves what suits best (and +for some that actually might be plain \TEX). + +\stopsection + +\stopchapter + +\stopcomponent diff --git a/doc/context/sources/general/manuals/musings/musings.tex b/doc/context/sources/general/manuals/musings/musings.tex index 3b6327f59..64d505df1 100644 --- a/doc/context/sources/general/manuals/musings/musings.tex +++ b/doc/context/sources/general/manuals/musings/musings.tex @@ -17,6 +17,7 @@ \component musings-stability \component musings-roadmap % \component musings-names + \component musings-plain \stopbodymatter \stopproduct |