On Sun, Oct 26, 2008 at 4:24 PM, Alan BRASLAU wrote:
Following some exchange off-list (trying to figure out how tikz under context
got broken), the subject of understanding pgf/tikz with respect to metapost
came up. I am posting a follow-up here as it may be of interest to others on
the mailing list, those who know metapost very well as well as those, like
myself, who are still learning how to use different graphics tools.
On Sunday 26 October 2008 11:46:22 Mojca Miklavec wrote:
I am just starting to learn about metapost, and I can't judge yet
what pgf/tikz has as advantages and disadvantages.
Advantages of TikZ:
1.) many many many many libraries that are ready-to-use. Just take a
glimpse through the manual and it will be evident to you in the first
glimpse. If you want to draw a graph, you can do it with a few
commands. (one command draws you axis, one for function, ...)
You can achieve the same with metapost, but you need to do everything
from scratch. However, it's really easy to write your own libraries.
2.) some special effects like smooth shading works in metapost only
conditionally (does not work with XeTeX at the moment), and you have a
wider range with TikZ
Advantages of metapost:
1.) rich mathematical machinery (you can write a set of equations and
metapost will calculate your coordinates)
2.) easy to write your own macros
I thought that a major interest of pgf/tikz was the production of portable
graphics (using many different motors).
Right. That's also true, but portability is more about the source
code of TikZ only had to be written once and you only need to learn
it once when you write with both LaTeX and ConTeXt.
Usually you don't need to exchange the same figures between LaTeX and
ConTeXt documents anyway. But if you do need to convert, portable code
indeed helps a lot.
As an experiment, I did try comparing making a graph using
pgfplot and metagraph, and I did *not* like the result of the second.
metagraph is old as earth.
graph.mp,v 1.2 2004/09/19
Current estimates place the age of the earth at around 4.6 billion years...
Compared to 4.6 billion years it would not matter, but I guess that
mpgraph has been written by Hobby, and the most recent reference that
he's quoting is from 1994. The date you see might be as trivial thing
as Karl Berry adding the svn id on top of file (though I would not
know it).
And in computers 14 years with (almost) no modification ... speaks for itself.
If I draw graphs is meapost, I do that
manually. Or I use gnuplot module to draw graphs for me, but graph
drawing is much easier more flexible with TikZ if you have
datapoints ready.
I myself find gnuplot to be fatally flawed and have never liked using it.
Flawed with/like?
(I started using it since I didn't need to bother about anything. It
just worked out of the box. I don't like most terminals, but with the
right terminal it's quite ok.)
(I still sometimes produce graphics using an old program written in KR C that
generates HPGL for pen plotters, with a filter that then creates postscript.
Now THAT is almost stone age! But this program can also handle an arbitrary
number of points VERY efficiently, only limited by the size of your storage
device.)
And by the memory your printer has when you try to print that file ... :) :) :)
(I need to draw some scatter plots now and need to figure a way to
forget about all the tools that I know for creating nice vector plots
... Back to the nice old bitmaps!)
If you need some complex curve, TikZ is improving in
that area, but in metapost it's out-of-the-box to draw it.
Why did Till Tantau write pgf/tikz? Clearly he knew metapost, so another route
could have been to develop a standard library of metapost macros.
Before mplib came to existance metapost meant that TeX had to:
- write mp code into file
- run metapost to convert your file into PostScript
- run other TeX jobs in background in order to get labels on MP figures
And that is *awfuly* slow when you have to process multiple graphics
with some text labels. Apart from that, you need to have some switch
enabled (write18) that means a security issue when other people submit
code to your server.
The way TikZ is implemented runs faster than metapost with
old-fashioned labels in mkii. Metapost in mkiv is comparable - you
don't need any external program to generate graphics.
What Till Tantau did whas bringing portability and efficiency of
drawing into all formats and all engines of TeX. With a standard
library for metapost he wouldn't gain on portability/efficiency,
though he could clearly implement a library of the same strength much
easier. TikZ is now *the* choice for drawing anything in (La)TeX.
I'm asking
these questions here as there seems to be a preference (or prejudice) towards
metapost amongst the context community.
- TikZ is rather new
- Hans has a large collection of own macros already (everything that
he ever needed), so there's no point of