filenames.tex / last modification: 2019-08-17 11:52
% language=uk

\usemodule[article-basic]
\usemodule[abbreviations-logos]

\setupheader[state=high]

\starttext

\starttitle[title=Filenames]

The \CONTEXT\ distribution follows a rather strict organisation. Originally
all files that implemented macros had names using the pattern:

\starttabulate[|Tw(10em)||]
\FL
\NC xxxx-xxx.tex \NC \TEX\ file \NC \NR
\NC mp-xxxx.mp   \NC \METAPOST\ file \NC \NR
\LL
\stoptabulate

You can still find files that conform to these patterns but the organization
evolved. The \type {tex} suffix is now normally used just for documents.

Styles and modules can have names of any length, and can be recognized by their
prefix:

\starttabulate[|Tw(10em)||]
\FL
\NC s-aaaa.tex   \NC style (rendering related) \NC \NR
\NC m-aaaaaa.tex \NC module (functionality related) \NC \NR
\NC x-aaaaa.tex  \NC xml module (functionality related) \NC \NR
\LL
\stoptabulate

\CONTEXT\ \MKII, the frozen version for \PDFTEX\ and \XETEX, uses names like:

\starttabulate[|Tw(10em)||]
\FL
\NC context.mkii  \NC the main \TEX\ file \NC \NR
\NC cont-xx.mkii  \NC an interface specific \TEX\ file \NC \NR
\NC xxxx-xxx.mkii \NC \TEX\ file \NC \NR
\ML
\NC mp-xxxx.mpii  \NC \METAPOST\ file \NC \NR
\NC metafun.mpii  \NC the main \METAFUN\ file \NC \NR
\LL
\stoptabulate

\CONTEXT\ \MKIV, the current version, has files with names like:

\starttabulate[|Tw(10em)||]
\FL
\NC context.mkiv  \NC the main \TEX\ file \NC \NR
\NC cont-xx.mkiv  \NC an interface specific \TEX\ file \NC \NR
\NC xxxx-xxx.mkiv \NC \TEX\ file \NC \NR
\NC xxxx-xxx.mkvi \NC \TEX\ file with named parameters \NC \NR
\NC xxxx-xxx.mkix \NC file with \LMX\ template \NC \NR
\NC xxxx-xxx.mkxi \NC file with \LMX\ template with named parameters \NC \NR
\NC xxxx-xxx.lua  \NC a file with \LUA\ code \NC \NR
\NC xxxx-xxx.lfg  \NC so called font goodie \LUA\ files \NC \NR
\ML
\NC metafun.mpiv  \NC the main \METAFUN\ file \NC \NR
\NC minifun.mpiv  \NC a subset of \METAFUN\ \NC \NR
\NC mp-xxxx.mpiv  \NC \METAPOST\ file \NC \NR
\LL
\stoptabulate

There are more suffixes used, like \type {tua} and \type {tuc} for multipass
jobdata, and \type {log} for log files. In the cache tree you can run into \type
{luv}, \type {lui}, \type {luj} and \type {lum} for startup data,
\type {tma} for \LUA\ cache files, \type {tmb} for \LUAJITTEX\ bytecode, \type
{tmc} for \LUATEX {bytecode} and \type {tmd} for \LUAMETATEX\ bytecode, but you
can forget about them.

There can be files with \type {-imp-} in the name: these relate to other files with
a similar name.

The follow up on \MKIV\ is called \LMTX\ (or MkXL?) and is compatible with \MKIV: it uses,
at least now, mostly the same code. But, as it depends on \LUAMETATEX\ it also
has some different internals. Therefore you will find some additional files:

\starttabulate[|Tw(10em)||]
\FL
\NC context.mkxl  \NC the main \TEX\ file \NC \NR
\NC cont-xx.mkxl  \NC an interface specific \TEX\ file \NC \NR
\NC xxxx-xxx.mkxl \NC \TEX\ file \NC \NR
\NC xxxx-xxx.mklx \NC \TEX\ file with named parameters \NC \NR
\ML
\NC metafun.mpxl  \NC the main \METAFUN\ file \NC \NR
\NC minifun.mpxl  \NC a subset of \METAFUN\ \NC \NR
\NC mp-xxxx.mpxl  \NC \METAPOST\ file \NC \NR
\LL
\stoptabulate

This means that a file \type {xxxx-xxx} can be present with any of the \type
{mk..} suffixes. In the standard distribution the \MKII\ and \MKIV\ files have
their own path (directory), and \LMTX\ only ships what it needs.

This somewhat complicated setup is needed in order to support both \LUATEX\ and
\LUAMETATEX\ system. The more \LUAMETATEX\ diverges from \LUATEX, the more the
codebase will be split so eventually we might end up with \MKII, \MKIV\ and \LMTX\
as more or less independent versions. We try to share the \LUA\ code as much as
possible, also because some components are generic.

The name pattern \type {xxxx-} groups the files in categories. These are also
referred to from the interface definitions. Examples of categories are \type
{syst} for system modules that define various low level support macros and
mechanisms. The user interface is handled by modules in the \type {mult}
namespace. The \type {supp} modules layer on top of that and provide more
helpers. The \type {font} and \type {type} modules deal with fonts, \type {lang}
handles language support. The \type {strc} modules implement structural
components, \type {tabl} does tables and \type {page} handles the layout.
Specialized categories like \type {mlib}, \type {meta} and \type {grph} are for
graphics, and \type {publ} is used for the publication (bibliography) subsystem.
Just to give you an idea.

\stoptitle

\stoptext