summaryrefslogtreecommitdiff
path: root/context/data/scite/context/documents/scite-context-readme.tex
diff options
context:
space:
mode:
Diffstat (limited to 'context/data/scite/context/documents/scite-context-readme.tex')
-rw-r--r--context/data/scite/context/documents/scite-context-readme.tex828
1 files changed, 828 insertions, 0 deletions
diff --git a/context/data/scite/context/documents/scite-context-readme.tex b/context/data/scite/context/documents/scite-context-readme.tex
new file mode 100644
index 000000000..cbfc00a33
--- /dev/null
+++ b/context/data/scite/context/documents/scite-context-readme.tex
@@ -0,0 +1,828 @@
+% interface=en modes=icon,screen language=uk
+
+\usemodule[art-01]
+\usemodule[abr-02]
+
+\unexpanded\def\METAPOST{MetaPost}
+\unexpanded\def\METAFUN {MetaFun}
+
+\setuphead
+ [section]
+ [color=darkblue]
+
+\setuptype
+ [color=darkblue]
+
+\setuptyping
+ [color=darkblue]
+
+\setuptyping
+ [margin=yes]
+
+\setupwhitespace
+ [big]
+
+\definecolor[gray][s=.2,t=.5,a=1]
+
+\startuseMPgraphic{TitlePage}{darkness}
+ StartPage ;
+
+ numeric factor ; factor := 1/3 ;
+ numeric multiple ; multiple := PaperHeight/PaperWidth ; % 1.6 ;
+ numeric stages ; stages := multiple/16 ; % .1 ;
+ numeric darkness ; darkness := \MPvar{darkness} ;
+
+ def Scaled(expr s, m) =
+ if m = 1 :
+ scaled (2*s*PaperWidth)
+ else :
+ xscaled (2*s*PaperWidth) yscaled (2*s*PaperHeight)
+ fi
+ enddef ;
+
+ fill Page withcolor (factor*white) ;
+
+ fill fullcircle scaled (multiple*PaperWidth) shifted llcorner Page withcolor (factor*red) ;
+ fill fullcircle scaled (multiple*PaperWidth) shifted ulcorner Page withcolor (factor*green) ;
+ fill fullcircle scaled (multiple*PaperWidth) shifted urcorner Page withcolor (factor*blue) ;
+ fill fullcircle scaled (multiple*PaperWidth) shifted lrcorner Page withcolor (factor*yellow) ;
+
+ for i = llcorner Page, ulcorner Page, urcorner Page, lrcorner Page :
+ for j = 0 step stages until (10*stages-eps) : % or .8
+ fill fullcircle Scaled(j,1) shifted i withcolor transparent(1,\MPvar{darkness}*(1-j),white) ;
+ endfor ;
+ endfor ;
+
+ draw Page withpen pencircle scaled .1PaperWidth withcolor transparent(1,.5,.5white) ;
+
+ StopPage
+\stopuseMPgraphic
+
+\startmode[icon,screen]
+
+ \setuppapersize[S66][S66]
+
+ \setupbodyfont[10pt]
+
+\stopmode
+
+\startmode[icon]
+
+ \starttext
+
+ \startTEXpage
+ \useMPgraphic{TitlePage}{darkness=0.4}
+ \stopTEXpage
+
+ \stoptext
+
+\stopmode
+
+\starttext
+
+% title page
+
+\definelayer
+ [TitlePage]
+ [width=\paperwidth,
+ height=\paperheight]
+
+\setlayer
+ [TitlePage]
+ {\useMPgraphic{TitlePage}{darkness=1}}
+
+\setlayerframed
+ [TitlePage]
+ [preset=rightbottom,
+ hoffset=.1\paperwidth,
+ voffset=.1\paperwidth]
+ [align=left,
+ width=\hsize,
+ frame=off,
+ foregroundcolor=gray]
+ {\definedfont[SerifBold sa 10]SciTE\endgraf
+ \definedfont[SerifBold sa 2.48]IN CONTEXT MkIV\kern.25\bodyfontsize}
+
+\startTEXpage
+ \tightlayer[TitlePage]
+\stopTEXpage
+
+% main text
+
+\subject{About \SCITE}
+
+{\em This manual is under (re)construction.}
+
+For a long time at \PRAGMA\ we used \TEXEDIT, an editor we'd written in \MODULA.
+It had some project management features and recognized the project structure in
+\CONTEXT\ documents. Later we rewrote this to a platform independent
+reimplementation called \TEXWORK\ written in \PERLTK\ (not to be confused with
+the editor with the plural name).
+
+In the beginning of the century I can into \SCITE, written by Neil Hodgson.
+Although the mentioned editors provide some functionality not present in \SCITE\
+we decided to use that editor because it frees us from maintaining our own. I
+ported our \TEX\ and \METAPOST\ (line based) syntax highlighting to \SCITE\ and
+got a lot of others for free.
+
+After a while I found out that there was an extension interface written in \LUA.
+I played with it and wrote a few extensions too. This pleasant experience later
+triggered the \LUATEX\ project.
+
+A decade into the century \SCITE\ got another new feature: you can write dynamic
+external lexers in \LUA\ using \LPEG. As in the meantime \CONTEXT\ has evolved in
+a \TEX/\LUA\ hybrid, it made sense to look into this. The result is a couple of
+lexers that suit \TEX, \METAPOST\ and \LUA\ usage in \CONTEXT\ \MKIV. As we also
+use \XML\ as input and output format a lexer for \XML\ is also provided. And
+because \PDF\ is one of the backend formats lexing of \PDF\ is also implemented.
+\footnote {In the process some of the general lexing framework was adapted to
+suit our demands for speed. We ship these files as well.}
+
+In the \CONTEXT\ (standalone) distribution you will find the relevant files
+under:
+
+\starttyping
+<texroot>/tex/texmf-context/context/data/scite
+\stoptyping
+
+Normally a user will not have to dive into the implementation details but in
+principle you can tweak the properties files to suit your purpose.
+
+\subject{The look and feel}
+
+The color scheme that we use is consistent over the lexers but we use more colors
+that in the traditional lexing. For instance, \TEX\ primitives, low level \TEX\
+commands, \TEX\ constants, basic file structure related commands, and user
+commands all get a different treatment. When spell checking is turned on, we
+indicate unknown words, but also words that are known but might need checking,
+for instance because they have an uppercase character. In \in {figure}
+[fig:colors] we some of that in practice.
+
+\placefigure
+ [page]
+ [fig:colors]
+ {Nested lexers in action.}
+ {\rotate
+ [rotation=90]
+ {\externalfigure
+ [scite-context-visual.png]
+ [maxheight=1.2\textwidth,
+ maxwidth=.9\textheight]}}
+
+\subject{Installing \SCITE}
+
+Installing \SCITE\ is straightforward. We are most familiar with \MSWINDOWS\ but
+for other operating systems installation is not much different. First you need to
+fetch the archive from:
+
+\starttyping
+www.scintilla.org
+\stoptyping
+
+The \MSWINDOWS\ binaries are zipped in \type {wscite.zip}, and you can unzip this
+in any directory you want as long as you make sure that the binary ends up in
+your path or as shortcut on your desktop. So, say that you install \SCITE\ in:
+
+\starttyping
+c:\data\system\scite\wscite
+\stoptyping
+
+You need to add this path to your local path definition. Installing \SCITE\ to
+some known place has the advantage that you can move it around. There are no
+special dependencies on the operating system.
+
+On \MSWINDOWS\ you can for instance install \SCITE\ in:
+
+\starttyping
+c:\data\system\scite
+\stoptyping
+
+and then end up with:
+
+\starttyping
+c:\data\system\scite\wscite
+\stoptyping
+
+and that is the path you need to add to your environment \type {PATH} variable.
+
+On \LINUX\ the files end up in:
+
+\starttyping
+/usr/bin
+/usr/share/scite
+\stoptyping
+
+Where the second path is the path we will put more files.
+
+\subject{Installing \type {scintillua}}
+
+Next you need to install the lpeg lexers. \footnote {Versions later than 2.11
+will not run on \MSWINDOWS\ 2K. In that case you need to comment the external
+lexer import.} The library is part of the \type {textadept} editor by Mitchell
+(\hyphenatedurl {mitchell.att.foicica.com}) which is also based on scintilla:
+The archive can be fetched from:
+
+\starttyping
+http://foicica.com/scintillua/
+\stoptyping
+
+On \MSWINDOWS\ you need to copy the files to the \type {wscite} folder (so we end
+up with a \type {lexers} subfolder there). For \LINUX\ the place depends on the
+distribution, for instance \type {/usr/share/scite}; this is the place where the
+regular properties files live. \footnote {If you update, don't do so without
+testing first. Sometimes there are changes in \SCITE\ that influence the lexers
+in which case you have to wait till we have update them to suit those changes.}
+
+So, you end up, on \MSWINDOWS\ with:
+
+\starttyping
+c:\data\system\scite\wscite\lexers
+\stoptyping
+
+And on \LINUX:
+
+\starttyping
+/usr/share/scite/lexers
+\stoptyping
+
+Beware: if you're on a 64 bit system, you need to rename the 64 bit \type {so}
+library into one without a number. Unfortunately the 64 bit library is now always
+available which can give surprises when the operating system gets updates. In such
+a case you should downgrade or use \type {wine} with the \MSWINDOWS\ binaries
+instead. After installation you need to restart \SCITE\ in order to see if things
+work out as expected.
+
+\subject{Installing the \CONTEXT\ lexers}
+
+When we started using this nice extension, we ran into issues and as a
+consequence shipped a patched \LUA\ code. We also needed some more control as we
+wanted to provide more features and complex nested lexers. Because the library
+\API\ changed a couple of times, we now have our own variant which will be
+cleaned up over time to be more consistent with our other \LUA\ code (so that we
+can also use it in \CONTEXT\ as variant verbatim lexer). We hope to be able to
+use the \type {scintillua} library as it does the job.
+
+Anyway, if you want to use \CONTEXT, you need to copy the relevant files from
+
+\starttyping
+<texroot>/tex/texmf-context/context/data/scite
+\stoptyping
+
+to the path were \SCITE\ keeps its property files (\type {*.properties}). This is
+the path we already mentioned. There should be a file there called \type
+{SciteGlobal.properties}.
+
+So,in the end you get on \MSWINDOWS\ new files in:
+
+\starttyping
+c:\data\system\scite\wscite
+c:\data\system\scite\wscite\context
+c:\data\system\scite\wscite\context\lexer
+c:\data\system\scite\wscite\context\lexer\themes
+c:\data\system\scite\wscite\context\lexer\data
+c:\data\system\scite\wscite\context\documents
+\stoptyping
+
+while on \LINUX\ you get:
+
+\starttyping
+/usr/bin/share/
+/usr/bin/share/context
+/usr/bin/share/context/lexer
+/usr/bin/share/context/lexer/themes
+/usr/bin/share/context/lexer/data
+/usr/bin/share/context/documents
+\stoptyping
+
+At the end of the \type {SciteGlobal.properties} you need to add the following
+line:
+
+\starttyping
+import context/scite-context-user
+\stoptyping
+
+After this, things should run as expected (given that \TEX\ runs at the console
+as well).
+
+% In order to run the commands needed, we assume that the following programs
+% are installed:
+%
+% \startitemize[packed]
+% \item tidy (for quick and dirty checking of \XML\ files)
+% \item xsltproc (for converting \XML\ files into other formats)
+% \item acrobat (for viewing files)
+% \item ghostview (for viewing files, use gv on \UNIX)
+% \item rxvt (a console, only needed on \UNIX)
+% \stopitemize
+
+\subject{Fonts}
+
+The configuration file defaults to the Dejavu fonts. These free fonts are part of
+the \CONTEXT\ suite (also known as the standalone distribution). Of course you
+can fetch them from \type {http://dejavu-fonts.org} as well. You have to copy
+them to where your operating system expects them. In the suite they are available
+in:
+
+\starttyping
+<contextroot>/tex/texmf/fonts/truetype/public/dejavu
+\stoptyping
+
+\subject{Extensions}
+
+Just a quick note to some extensions. If you select a part of the text (normally
+you do this with the shift key pressed) and you hit \type {Shift-F11}, you get a
+menu with some options. More (robust) ones will be provided at some point.
+
+\subject{Spell checking}
+
+If you want to have spell checking, you need have files with correct words on
+each line. The first line of a file determines the language:
+
+\starttyping
+% language=uk
+\stoptyping
+
+When you use the external lexers, you need to provide some files. Given that you
+have a text file with valid words only, you can run the following script:
+
+\starttyping
+mtxrun --script scite --words nl uk
+\stoptyping
+
+This will convert files with names like \type {spell-nl.txt} into \LUA\ files
+that you need to copy to the \type {lexers/data} path. Spell checking happens
+realtime when you have the language directive (just add a bogus character to
+disable it). Wrong words are colored red, and words that might have a case
+problem are colored orange. Recognized words are greyed and words with less than
+three characters are ignored.
+
+A spell checking file has to be put in the \type {lexers/data} directory and
+looks as follows (e.g. \type {spell-uk.lua}):
+
+\starttyping
+return {
+ ["max"]=40,
+ ["min"]=3,
+ ["n"]=151493,
+ ["words"]={
+ ["aardvark"]="aardvark",
+ ["aardvarks"]="aardvarks",
+ ["aardwolf"]="aardwolf",
+ ["aardwolves"]="aardwolves",
+ ...
+ }
+}
+\stoptyping
+
+The keys are words that get checked for the given value (which can have uppercase
+characters). The word files are not distributed (but they might be at some point).
+
+In the case of internal lexers, the following file is needed:
+
+\starttyping
+spell-uk.txt
+\stoptyping
+
+If you use the traditional lexer, this file is taken from the path determined by
+the environment variable:
+
+\starttyping
+CTXSPELLPATH
+\stoptyping
+
+As already mentioned, the lpeg lexer expects them in the data path. This is
+because the \LUA\ instance that does the lexing is rather minimalistic and lacks
+some libraries as well as cannot access the main \SCITE\ state.
+
+Spell checking in \type {txt} files is enabled by adding a first line:
+
+\starttyping
+[#!-%] language=uk
+\stoptyping
+
+The first character on that line is one of the four mentioned between square
+brackets. So,
+
+\starttyping
+# language=uk
+\stoptyping
+
+should work. For \XML\ files there are two methods. You can use the following (at
+the start of the file):
+
+\starttyping
+<?xml ... language="uk" ?>
+\stoptyping
+
+But probably better is to use the next directive just below the
+usual \XML\ marker line:
+
+\starttyping
+<?context-directive editor language uk ?>
+\stoptyping
+
+\subject{Interface selection}
+
+In a similar fashion you can drive the interface checking:
+
+\starttyping
+% interface=nl
+\stoptyping
+
+\subject{Property files}
+
+The internal lexers are controlled by the property files while the external ones
+are steered with themes. Unfortunately there is hardly any access to properties
+from the external lexer code nor can we consult the file system and/or run
+programs like \type {mtxrun}. This means that we cannot use configuration files
+in the \CONTEXT\ distribution directly. Hopefully this changes with future
+releases.
+
+\subject{The external lexers}
+
+These are the more advanced lexers. They provide more detail and the \CONTEXT\
+lexer also supports nested \METAPOST\ and \LUA. Currently there is no detailed
+configuration but this might change once they are stable.
+
+The external lexers operate on documents while the internal ones operate on
+lines. This can make the external lexers slow on large documents. We've optimized
+the code somewhat for speed and memory consumption but there's only so much one
+can do. While lexing each change in style needs a small table but allocating and
+garbage collecting many small tables comes at a price. Of course in practice this
+probably gets unnoticed. \footnote {I wrote the code in 2011 on a more than 5
+years old Dell M90 laptop, so I suppose that speed is less an issue now.}
+
+The external lpeg lexers work okay with the \MSWINDOWS\ and \LINUX\ versions of
+\SCITE, but unfortunately at the time of writing this, the \LUA\ library that is
+needed is not available for the \MACOSX\ version of \SCITE. Also, due to the fact
+that the lexing framework is rather isolated, there are some issues that cannot
+be addressed in the properly, at least not currently.
+
+In addition to \CONTEXT\ and \METAFUN\ lexing a \LUA\ lexer is also provided so
+that we can handle \CONTEXT\ \LUA\ Document (\CLD) files too. There is also an
+\XML\ lexer. This one also provides spell checking. The \PDF\ lexer tries to do a
+good job on \PDF\ files, but it has some limitations. There is also a simple text
+file lexer that does spell checking. Finally there is a lexer for \CWEB\ files.
+
+Don't worry if you see an orange rectangle in your \TEX\ or \XML\ document. This
+indicates that there is a special space character there, for instance \type
+{0xA0}, the nonbreakable space. Of course we assume that you use \UTF8 as input
+encoding.
+
+\subject{The internal lexers}
+
+\SCITE\ has quite some built in lexers. A lexer is responsible for highlighting
+the syntax of your document. The way a \TEX\ file is treated is configured in the
+file:
+
+\starttyping
+tex.properties
+\stoptyping
+
+You can edit this file to your needs using the menu entry under \type {options}
+in the top bar. In this file, the following settings apply to the \TEX\ lexer:
+
+\starttyping
+lexer.tex.interface.default=0
+lexer.tex.use.keywords=1
+lexer.tex.comment.process=0
+lexer.tex.auto.if=1
+\stoptyping
+
+The option \type {lexer.tex.interface.default} determines the way keywords are
+highlighted. You can control the interface from your document as well, which
+makes more sense that editing the configuration file each time.
+
+\starttyping
+% interface=all|tex|nl|en|de|cz|it|ro|latex
+\stoptyping
+
+The values in the properties file and the keywords in the preamble line have the
+following meaning:
+
+\starttabulate[|lT|lT|p|]
+\NC 0 \NC all \NC all commands (preceded by a backslash) \NC \NR
+\NC 1 \NC tex \NC \TEX, \ETEX, \PDFTEX, \OMEGA\ primitives (and macros) \NC \NR
+\NC 2 \NC nl \NC the dutch \CONTEXT\ interface \NC \NR
+\NC 3 \NC en \NC the english \CONTEXT\ interface \NC \NR
+\NC 4 \NC de \NC the german \CONTEXT\ interface \NC \NR
+\NC 5 \NC cz \NC the czech \CONTEXT\ interface \NC \NR
+\NC 6 \NC it \NC the italian \CONTEXT\ interface \NC \NR
+\NC 7 \NC ro \NC the romanian \CONTEXT\ interface \NC \NR
+\NC 8 \NC latex \NC \LATEX\ (apart from packages) \NC \NR
+\stoptabulate
+
+The configuration file is set up in such a way that you can easily add more
+keywords to the lists. The keywords for the second and higher interfaces are
+defined in their own properties files. If you're curious about the way this is
+configures, you can peek into the property files that start with \type
+{scite-context}. When you have \CONTEXT\ installed you can generate configuration
+files with
+
+\starttyping
+mtxrun --script interface --scite
+\stoptyping
+
+You need to make sure that you move the result to the right place so best not
+mess around with this command and use the files from the distribution.
+
+Back to the properties in \type {tex.properties}. You can disable keyword
+coloring alltogether with:
+
+\starttyping
+lexer.tex.use.keywords=0
+\stoptyping
+
+but this is only handy for testing purposes. More interesting is that you can
+influence the way comment is treated:
+
+\starttyping
+lexer.tex.comment.process=0
+\stoptyping
+
+When set to zero, comment is not interpreted as \TEX\ code and it will come out
+in a uniform color. But, when set to one, you will get as much colors as a \TEX\
+source. It's a matter of taste what you choose.
+
+The lexer tries to cope with the \TEX\ syntax as good as possible and takes for
+instance care of the funny \type {^^} notation. A special treatment is applied to
+so called \type {\if}'s:
+
+\starttyping
+lexer.tex.auto.if=1
+\stoptyping
+
+This is the default setting. When set to one, all \type {\ifwhatever}'s will be
+seen as a command. When set to zero, only the primitive \type {\if}'s will be
+treated. In order not to confuse you, when this property is set to one, the lexer
+will not color an \type {\ifwhatever} that follows an \type {\newif}.
+
+\subject{The \METAPOST\ lexer}
+
+The \METAPOST\ lexer is set up slightly different from its \TEX\ counterpart,
+first of all because \METAPOST\ is more a language that \TEX. As with the \TEX\
+lexer, we can control the interpretation of identifiers. The \METAPOST\ specific
+configuration file is:
+
+\starttyping
+metapost.properties
+\stoptyping
+
+Here you can find properties like:
+
+\starttyping
+lexer.metapost.interface.default=1
+\stoptyping
+
+Instead of editing the configuration file you can control the lexer with the
+first line in your document:
+
+\starttyping
+% interface=none|metapost|mp|metafun
+\stoptyping
+
+The numbers and keywords have the following meaning:
+
+\starttabulate[|lT|lT|p|]
+\NC 0 \NC none \NC no highlighting of identifiers \NC \NR
+\NC 1 \NC metapost or mp \NC \METAPOST\ primitives and macros \NC \NR
+\NC 2 \NC metafun \NC \METAFUN\ macros \NC \NR
+\stoptabulate
+
+Similar to the \TEX\ lexer, you can influence the way comments are handled:
+
+\starttyping
+lexer.metapost.comment.process=1
+\stoptyping
+
+This will interpret comment as \METAPOST\ code, which is not that useful
+(opposite to \TEX, where documentation is often coded in \TEX).
+
+The lexer will color the \METAPOST\ keywords, and, when enabled also additional
+keywords (like those of \METAFUN). The additional keywords are colored and shown
+in a slanted font.
+
+The \METAFUN\ keywords are defined in a separate file:
+
+\starttyping
+metafun-scite.properties
+\stoptyping
+
+You can either copy this file to the path where you global properties files lives,
+or put a copy in the path of your user properties file. In that case you need to
+add an entry to the file \type {SciTEUser.properties}:
+
+\starttyping
+import metafun-scite
+\stoptyping
+
+The lexer is able to recognize \type {btex}||\type {etex} and will treat anything
+in between as just text. The same happens with strings (between \type {"}). Both
+act on a per line basis.
+
+\subject{Using \ConTeXt}
+
+When \type {mtxrun} is in your path, \CONTEXT\ should run out of the box. You can
+find \type {mtxrun} in:
+
+\starttyping
+<contextroot>/tex/texmf-mswin/bin
+\stoptyping
+
+or in a similar path that suits the operating system that you use.
+
+When you hit \type{CTRL-12} your document will be processed. Take a look at the
+\type {Tools} menu to see what more is provided.
+
+\subject{Extensions (using \LUA)}
+
+When the \LUA\ extensions are loaded, you will see a message in the log pane that
+looks like:
+
+\starttyping
+- see scite-ctx.properties for configuring info
+
+- ctx.spellcheck.wordpath set to ENV(CTXSPELLPATH)
+- ctxspellpath set to c:\data\develop\context\spell
+- ctx.spellcheck.wordpath expands to c:\data\develop\context\spell
+
+- ctx.wraptext.length is set to 65
+- key bindings:
+
+Shift + F11 pop up menu with ctx options
+
+Ctrl + B check spelling
+Ctrl + M wrap text (auto indent)
+Ctrl + R reset spelling results
+Ctrl + I insert template
+Ctrl + E open log file
+Ctrl + + show language character strip (key might change)
+
+- recognized first lines:
+
+xml <?xml version='1.0' language='nl'
+tex % language=nl
+\stoptyping
+
+This message tells you what extras are available. The language character strip feature
+is relatively new and displays buttons at the bottom of the screen for the characters
+in a (chosen) language. This is handy when you occasionally have to key in (snippets) of
+a language you're not familiar with. More alphabets will be added (we take data from some
+\CONTEXT\ language relates files).
+
+\subject{Templates}
+
+There is an experimental template mechanism. One option is to define templates in
+a properties file. The property file \type {scite-ctx-context} contains
+definitions like:
+
+\starttyping
+command.25.$(file.patterns.context)=insert_template \
+$(ctx.template.list.context)
+
+ctx.template.list.context=\
+ itemize=structure.itemize.context|\
+ tabulate=structure.tabulate.context|\
+ natural TABLE=structure.TABLE.context|\
+ use MP graphic=graphics.usemp.context|\
+ reuse MP graphic=graphics.reusemp.context|\
+ typeface definition=fonts.typeface.context
+
+ctx.template.structure.itemize.context=\
+\startitemize\n\
+\item ?\n\
+\item ?\n\
+\item ?\n\
+\stopitemize\n
+\stoptyping
+
+The file \type {scite-ctx-example} defines \XML\ variants:
+
+\starttyping
+command.25.$(file.patterns.example)=insert_template \
+$(ctx.template.list.example)
+
+ctx.template.list.example=\
+ bold=font.bold.example|\
+ emphasized=font.emphasized.example|\
+ |\
+ inline math=math.inline.example|\
+ display math=math.display.example|\
+ |\
+ itemize=structure.itemize.example
+
+ctx.template.structure.itemize.example=\
+<itemize>\n\
+<item>?</item>\n\
+<item>?</item>\n\
+<item>?</item>\n\
+</itemize>\n
+\stoptyping
+
+For larger projects it makes sense to keep templates with the project. In one of
+our projects we have a directory in the path where the project files are kept
+which holds template files:
+
+\starttyping
+..../ctx-templates/achtergronden.xml
+..../ctx-templates/bewijs.xml
+\stoptyping
+
+One could define a template menu like we did previously:
+
+\starttyping
+ctx.templatelist.example=\
+ achtergronden=mathadore.achtergronden|\
+ bewijs=mathadore.bewijs|\
+
+ctx.template.mathadore.achtergronden.file=smt-achtergronden.xml
+ctx.template.mathadore.bewijs.file=smt-bewijs.xml
+\stoptyping
+
+However, when no such menu is defined, we will automatically scan the directory
+and build the menu without user intervention.
+
+\subject{Using \SCITE}
+
+The following keybindings are available in \SCITE. Most of this list is taken
+from the on|-|line help pages.
+
+\startbuffer[keybindings]
+\starttabulate[|l|p|]
+\FL
+\NC \rm \bf keybinding \NC \bf meaning (taken from the \SCITE\ help file) \NC \NR
+\ML
+\NC \type{Ctrl+Keypad+} \NC magnify text size \NC \NR
+\NC \type{Ctrl+Keypad-} \NC reduce text size \NC \NR
+\NC \type{Ctrl+Keypad/} \NC restore text size to normal \NC \NR
+\ML
+\NC \type{Ctrl+Keypad*} \NC expand or contract a fold point \NC \NR
+\ML
+\NC \type{Ctrl+Tab} \NC cycle through recent files \NC \NR
+\ML
+\NC \type{Tab} \NC indent block \NC \NR
+\NC \type{Shift+Tab} \NC dedent block \NC \NR
+\ML
+\NC \type{Ctrl+BackSpace} \NC delete to start of word \NC \NR
+\NC \type{Ctrl+Delete} \NC delete to end of word \NC \NR
+\NC \type{Ctrl+Shift+BackSpace} \NC delete to start of line \NC \NR
+\NC \type{Ctrl+Shift+Delete} \NC delete to end of line \NC \NR
+\ML
+\NC \type{Ctrl+Home} \NC go to start of document; \type{Shift} extends selection \NC \NR
+\NC \type{Ctrl+End} \NC go to end of document; \type{Shift} extends selection \NC \NR
+\NC \type{Alt+Home} \NC go to start of display line; \type{Shift} extends selection \NC \NR
+\NC \type{Alt+End} \NC go to end of display line; \type{Shift} extends selection \NC \NR
+\ML
+\NC \type{Ctrl+F2} \NC create or delete a bookmark \NC \NR
+\NC \type{F2} \NC go to next bookmark \NC \NR
+\ML
+\NC \type{Ctrl+F3} \NC find selection \NC \NR
+\NC \type{Ctrl+Shift+F3} \NC find selection backwards \NC \NR
+\ML
+\NC \type{Ctrl+Up} \NC scroll up \NC \NR
+\NC \type{Ctrl+Down} \NC scroll down \NC \NR
+\ML
+\NC \type{Ctrl+C} \NC copy selection to buffer \NC \NR
+\NC \type{Ctrl+V} \NC insert content of buffer \NC \NR
+\NC \type{Ctrl+X} \NC copy selection to buffer and delete selection \NC \NR
+\ML
+\NC \type{Ctrl+L} \NC line cut \NC \NR
+\NC \type{Ctrl+Shift+T} \NC line copy \NC \NR
+\NC \type{Ctrl+Shift+L} \NC line delete \NC \NR
+\NC \type{Ctrl+T} \NC line transpose with previous \NC \NR
+\NC \type{Ctrl+D} \NC line duplicate \NC \NR
+\ML
+\NC \type{Ctrl+K} \NC find matching preprocessor conditional, skipping nested ones \NC \NR
+\NC \type{Ctrl+Shift+K} \NC select to matching preprocessor conditional \NC \NR
+\NC \type{Ctrl+J} \NC find matching preprocessor conditional backwards, skipping nested ones \NC \NR
+\NC \type{Ctrl+Shift+J} \NC select to matching preprocessor conditional backwards \NC \NR
+\ML
+\NC \type{Ctrl+[} \NC previous paragraph; \type{Shift} extends selection \NC \NR
+\NC \type{Ctrl+]} \NC next paragraph; \type{Shift} extends selection \NC \NR
+\NC \type{Ctrl+Left} \NC previous word; \type{Shift} extends selection \NC \NR
+\NC \type{Ctrl+Right} \NC next word; \type{Shift} extends selection \NC \NR
+\NC \type{Ctrl+/} \NC previous word part; \type{Shift} extends selection \NC \NR
+\NC \type{Ctrl+\ } \NC next word part; \type{Shift} extends selection \NC \NR
+\ML
+\NC \type{F12 / Ctrl+F7} \NC check (or process) \NC \NR
+\NC \type{Ctrl+F12 / Ctrl+F7} \NC process (run) \NC \NR
+\NC \type{Alt+F12 / Ctrl+F7} \NC process (run) using the luajit vm (if applicable) \NC \NR
+\LL
+\stoptabulate
+\stopbuffer
+
+\getbuffer[keybindings]
+
+\page
+
+\subject{Affiliation}
+
+\starttabulate[|l|l|]
+\NC author \NC Hans Hagen \NC \NR
+\NC copyright \NC PRAGMA ADE, Hasselt NL \NC \NR
+\NC more info \NC \type {www.pragma-ade.com} \NC \NR
+\NC \NC \type {www.contextgarden.net} \NC \NR
+\NC version \NC \currentdate \NC \NR
+\stoptabulate
+
+\stoptext