summaryrefslogtreecommitdiff
path: root/doc/context/sources/general/manuals/metafun/metafun-introduction.tex
diff options
context:
space:
mode:
Diffstat (limited to 'doc/context/sources/general/manuals/metafun/metafun-introduction.tex')
-rw-r--r--doc/context/sources/general/manuals/metafun/metafun-introduction.tex101
1 files changed, 101 insertions, 0 deletions
diff --git a/doc/context/sources/general/manuals/metafun/metafun-introduction.tex b/doc/context/sources/general/manuals/metafun/metafun-introduction.tex
new file mode 100644
index 000000000..b519055c0
--- /dev/null
+++ b/doc/context/sources/general/manuals/metafun/metafun-introduction.tex
@@ -0,0 +1,101 @@
+% language=uk
+%
+% copyright=pragma-ade readme=readme.pdf licence=cc-by-nc-sa
+
+\startcomponent metafun-introduction
+
+\environment metafun-environment
+
+\starttitle[title={Introduction}]
+
+This document is about \METAPOST\ and \TEX. The former is a graphic programming
+language, the latter a typographic programming language. However, in this
+document we will not focus on real programming, but more on how we can interface
+between those two languages. We will do so by using \CONTEXT, a macro package
+written in \TEX, in which support for \METAPOST\ is integrated in the core. The
+\TEX\ macros are integrated in \CONTEXT, and the \METAPOST\ macros are bundled in
+\METAFUN.
+
+When Donald Knuth wrote his typographical programming language \TEX\ he was in
+need for fonts, especially mathematical fonts. So, as a side track, he started
+writing \METAFONT, a graphical language. When you read between the lines in the
+\METAFONT\ book and the source code, the name John Hobby is mentioned alongside
+complicated formulas. It will be no surprise then, that, since he was tightly
+involved in the development of \METAFONT, after a few years his \METAPOST\ showed
+up.
+
+While its ancestor \METAFONT\ was originally targeted at designing fonts,
+\METAPOST\ is more oriented to drawing graphics as used in scientific
+publications. Since \METAFONT\ produced bitmap output, some of its operators make
+use of this fact. \METAPOST\ on the other hand produces \POSTSCRIPT\ code, which
+means that it has some features not present in \METAFONT\ and vice versa.
+
+With \METAFUN\ I will demonstrate that \METAPOST\ can also be used, or misused,
+for less technical drawing purposes. We will see that \METAPOST\ can fill in some
+gaps in \TEX, especially its lack of graphic capabilities. We will demonstrate
+that graphics can make a document more attractive, even if it is processed in a
+batch processing system like \TEX. Most of all, we will see that embedding
+\METAPOST\ definitions in the \TEX\ source enables a smooth communication between
+both programs.
+
+The best starting point for using \METAPOST\ is the manual written by its author
+John Hobby. You can find this manual at every main \TEX\ repository. Also, a copy
+of the \METAFONT\ book from Donald Knuth is worth every cent, if only because it
+will give you the feeling that many years of graphical fun lays ahead.
+
+In this \METAFUN\ manual we will demonstrate how you can embed graphics in a
+\TEX\ document, but we will also introduce most of the features of \METAPOST. For
+this reason you will see a lot of \METAPOST\ code. For sure there are better
+methods to solve problems, but I have tried to demonstrate different methods and
+techniques as much as possible.
+
+I started using \METAPOST\ long after I started using \TEX, and I never regret
+it. Although I like \TEX\ very much, I must admit that sometimes using \METAPOST\
+is even more fun. Therefore, before we start exploring both in depth, I want to
+thank their creators, Donald Knuth and John Hobby, for providing me these
+fabulous tools. Of course I also need to thank \THANH, for giving the \TEX\
+community \PDFTEX, as well as providing me the hooks I considered necessary for
+implementing some of the features presented here. In the meantime Taco Hoekwater
+has created the \METAPOST\ library so that it can be an integral component of
+\LUATEX. After that happened, the program was extended to deal with more than one
+number implementation: in addition to scaled integers we now can switch to floats
+and arbitrary precision decimal or binary calculations. I myself prototyped a
+simple but efficient \LUA\ script interface. With Luigi Scarso, who is now the
+maintainer of \METAPOST, we keep improving the system, so who knows what will
+show up next.
+
+I also want to thank David Arnold and Ton Otten for their fast proofreading, for
+providing me useful input, and for testing the examples. Without David's patience
+and help, this document would be far from perfect English and less complete.
+Without Ton's help, many small typos would have gone unnoticed.
+
+In the second version of this manual the content was been adapted to \CONTEXT\
+\MKIV\ that uses \LUATEX\ and the built in \METAPOST\ library. In the meantime
+some \LUA\ has been brought into the game, not only to help construct graphics,
+but also as a communication channel. In the process some extra features have been
+added and some interfacing has been upgraded. The third version of this document
+deals with that too. It makes no sense to maintain compatibility with \CONTEXT\
+\MKII, but many examples can be used there as well. In the meantime most
+\CONTEXT\ users have switched to \MKIV, so this is no real issue. In the fourth
+update some new features are presented and the discussion of obsolete ones have
+been removed.
+
+The fifth update describes the \MPIV\ version of \METAFUN\ which brings some more
+and improved functionality. Some examples are inspired from questions by users and
+examples that Alan Braslau, Luigi Scarso and I made when testing new features and
+macros. Some examples can be rewritten in a more efficient way but are kept as
+they are. Therefore this manual presents different ways to solve problems.
+Hopefully this is not too confusing. Numerous examples can be found in the other
+manuals and test suite.
+
+\blank[big,samepage]
+
+\startlines
+Hans Hagen
+Hasselt NL
+\currentdate[month,year]
+\stoplines
+
+\stoptitle
+
+\stopcomponent