ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
From: "K.H. Wesseling" <k.h.wesseling@planet.nl>
Subject: Re: Metapost
Date: Sun, 10 Nov 2002 22:10:08 +0100	[thread overview]
Message-ID: <3DCED940.23324.672849@localhost> (raw)
In-Reply-To: <000501c287f8$59655ed0$010a0a0a@michal>

[-- Attachment #1: Mail message body --]
[-- Type: text/plain, Size: 1819 bytes --]

Many had trouble with btex etex including myself. A possible answer 
you might find in the appended context source file. You need a rather 
recent version context and a small handcrafted file by Hans as given 
in the text. It is rather wordy and not written for experts, but 
search for \forceMPTEXgraphictrue and you are in the neigbourhood. 
HGr...Karel.

On 9 Nov 2002, at 14:57, Micha  Morawski wrote:

> I have tried to repeat the example in the file "Creating metapost examples"
> (mmakempy.pdf) and I receive result as below and empty place in my document.
> Can anyone give me a hint?
> 
> This is MetaPost, Version 0.641 (Web2c 7.3.7x) (mem=metafun 2002.10.31)  31
> OCT 2002 22:25
> **&metafun mpgraph
> (mpgraph.mp
> {randomseed:=3603}
>  (d:/TeXLive/texmf/metapost/base/graph.mp
> (d:/TeXLive/texmf/metapost/base/format.mp
> (d:/TeXLive/texmf/metapost/base/string.mp)
> (d:/TeXLive/texmf/metapost/base/texnum.mp
> >> d:/TeXLive/texmf/metapost/base/texnum.mp
> >> texnum.mpx
> ! Unable to make mpx file.
> l.14 init_numbers(btex
>                       $-$etex, btex$1$etex, btex${\times}10$etex,
> The two files given above are one of your source files
> and an auxiliary file I need to read to find out what your
> btex..etex blocks mean. If you don't know why I had trouble,
> try running it manually through MPto -tex, TeX, and DVItoMP.
> 
> 
> Thanks in advance
> Michal
> 
> ############################################
> ## Micha  Morawski
> ## 95-200 Pabianice, Sempo owskiej 5 m 13
> ## tel/fax ++48 42 2262228
> ############################################
> Zwykle niewinno   jest wynikiem szcz  cia a nie cnoty.
>         Anatol France
> 
> _______________________________________________
> ntg-context mailing list
> ntg-context@ref.ntg.nl
> http://ref.ntg.nl/mailman/listinfo/ntg-context
> 




[-- Attachment #2: Text from file 'BULLET.TEX' --]
[-- Type: text/plain, Size: 8727 bytes --]

% output=pdftex

%\def\Lit[#1]{\unskip\high{\in[lit:#1]}}
\def\Lit[#1]{[\in[lit:#1]]}

\setuphead[chapter][page=no,style=\bfc,after=\blank]
\setuphead[section][page=no,style=\bfb,after=\blank]
\setupwhitespace[big]

\usemodule[graph]

\starttext


\title[title]{Shifted bullets in graphs with \METAPOST}

\startnarrower
\startlines
Frans Goddijn
\type{frans@goddijn.com}
Karel H Wesseling
\type{k.h.wesseling@planet.nl}
\stoplines
\stopnarrower

\subject[abstract]{Abstract}

With \METAPOST\ fully integrated in \CONTEXT\ using this graphic 
language has become convenient. When we tried to use John Hobby's 
``Graph.mp'' package, however, it turned out to require extra
initializations and to produce unacceptable, shifted data graphs. 
Solutions to both problems are given. 


\section[introduction]{Introduction}

\METAPOST\ has become fun for these users when it became 
integrated in \CONTEXT, which was the trigger for this exercise, 
but the same can be done in \LATEX\ \Lit[popineau]. 
\METAPOST\ is known for the high precision of its graphics 
output and for its perfect scalability. Since this sounds 
promising also for the presentation of scientific data in 
graphical form we looked for a package that would ease the 
plotting of data files. This was found in the ``graph'' 
package written by John Hobby \Lit[hobby], the author of 
\METAPOST. In using this package we met with two problems: one, 
the lacking of proper initializations and two, the inaccurate 
placement of bullets at given coordinates. 


\section[initialization]{Initialization}

The inclusion of a \METAPOST\ graphics specification in a 
\CONTEXT\ document is simple and below is a code fragment that 
produces an XY||plot and places it as a graphic in this document. 

\starttyping
\startuseMPgraphic{plot}
  draw begingraph(3in,2in);
    gdraw "bdoffset.d";
    endgraph;
\stopuseMPgraphic
\midaligned{\useMPgraphic{plot}}
\stoptyping

\startuseMPgraphic{plot}
  draw begingraph(3in,2in);
    gdraw "bdoffset.d";
    endgraph;
\stopuseMPgraphic
\midaligned{\useMPgraphic{plot}}

With \type{\startuseMPgraphic{plot}} \CONTEXT\ is told that all 
instructions until the \type{\stopuseMPgraphic} are to be 
understood as \METAPOST||speak. \type{draw} is a \METAPOST\ 
instruction and \type{gdraw} is one included in Hobby's ``graph'' 
package which lives on top of \METAPOST. The file 
\type{bdoffset.d} is a small data file arranged as: 

\starttyping 
83 141 
93 118 
103 100 
113 86 
123 74 <EOF> 
\stoptyping 

This file must not have any extra empty lines (or all hell breaks 
loose). As a reminder, therefore, we placed an unnecessary 
\type{<EOF>} right after the final datum. The ``graph'' package 
accepts extra characters on a line, but no extra lines.

If you would try this program, the reason that it doesn't work 
right away is that the ``graph'' package has not been input. This 
would usually be accomplished by an instruction 

\starttyping 
\startMPinclusions input graph; \stopMPinclusions 
\stoptyping 

placed near the top between the start/stop of \type{useMPgraphic}.
Since extra initializations appeared also needed, however, Hans 
Hagen \footnote{of Pragma||ADE, the author of \CONTEXT.} wrote 
the following little module that must be input for use 
(\type{\usemodule[graph]}) in the preamble area of the source file, 
i.e. before \type{\starttext}: 

\starttyping
\forceMPTEXgraphictrue
\appendtoks
  initialize_numbers; % assure that pseudo typesetting is set up
  input graph;        % load the graph package
  Autoform:="@g";     % change the % template char into @
\to \MPinitializations
\stoptyping

Place these instructions in a file named \type{m-graph.tex} and 
the graph package is input, properly initialized, and ready for 
work. Note that the file \type{m-graph.tex} is input with 
\type{\usemodule[graph]}. When \CONTEXT\ reads 
\type{\usemodule} it inserts \type{m-} and appends \type{.tex} to 
the name automatically to find the correct file. Be sure to also 
place Hobby's \type{graph.mp} in the same directory or at least 
where it can be found by \CONTEXT. Using a rather recent version 
of \CONTEXT\ (see \about[references]) and this module, 
compile again, and the data plot shown above should result. 


\section[bullets]{Shifted bullets}

In the data plot the data pairs are plotted interconnected with 
straight lines. Since the curve is featureless the positions of 
the individual data points are barely discernable. Let us try to 
mark them more clearly. The manual for the ``graph'' package 
offers a solution. Simply replot the data but this time as 
bullets with the instruction 

\starttyping 
    gdraw "bdoffset.d" plot btex$\bullet$etex
\stoptyping

The \type{btex...etex} pair signifies to \METAPOST\ that the 
instructions in between should be interpreted as \TeX||typeset 
instructions. Thus, within the \CONTEXT\ document we first 
instruct \CONTEXT\ to look at a set of text lines as \METAPOST\ and 
within these lines \METAPOST\ is asked to consider some words as 
instructions to \TeX, which is why you need a recent version 
\CONTEXT. Still, the system works and the result is the following 
graphic: 

\startuseMPgraphic{plotbul}
  draw begingraph(3in,2in);
    gdraw "bdoffset.d";
    gdraw "bdoffset.d" plot btex$\bullet$etex;
    endgraph;
\stopuseMPgraphic
\midaligned{\useMPgraphic{plotbul}}

The dots don't fall on the line. Our first thought was that we 
did something wrong and our first action was to ask for help. Our 
second action was to check the graphic made with similar 
instructions in the ``graph'' manual. By tearing out the 
manual's page on which Fig.~2 is plotted and placing it over 
Fig.~1 such that the tick marks match we observed that equally in 
the manual the dots appear shifted towards the upper right. It 
turns out that \TeX\ positions each glyph with its reference 
point, not its midpoint, at the specified coordinates 
\Lit[knuth]. The reference point of the bullet is at the lower 
left of its box: \footnote{This can be observed in \CONTEXT\ by 
typing \type{\ruledhbox{$\bullet$}}} \ruledhbox{$\bullet$}. Thus, 
neither \TeX\ nor we did wrong but the instruction is wrong. 

The first solution suggested is to shift the bullet in opposite 
direction by replacing the \TeX\ instruction \type{$\bullet$} 
with:

\starttyping
  \kern-1mm\raisebox{-1mm}[0mm][0mm]{$\bullet$}
\stoptyping

which should shift the dot 1~mm to the left and 1~mm down, but 
doesn't. \TeX\ within \METAPOST\ within \CONTEXT\ forgets the 
original coordinates somewhere on the way and nothing is output. 
Since we hard||program shifts in mm for glyphs that could vary in 
dimension with the symbol specified it is not a general purpose 
solution either. Yet, it might have worked.

A solution which stays within \METAPOST\ came from the 
author of \METAFUN\ \Lit[hagen]. It declares and defines the 
bullet as a \METAPOST\ picture and plots the picture repeatedly 
at each coordinate specified. The full text of the example 
becomes: 

\starttyping 
\startuseMPgraphic{buldot} 
  picture Buldot; 
    Buldot:=image(draw origin withpen pencircle scaled 2mm;);
  draw begingraph(3in,2in);
    gdraw "other.d";
    gdraw "other.d" plot Buldot;
    endgraph;
\stopuseMPgraphic
\midaligned{\useMPgraphic{buldot}}
\stoptyping

\startuseMPgraphic{buldot}
  picture Buldot; 
    Buldot:=image(draw origin withpen pencircle scaled 2mm;);
  draw begingraph(3in,2in);
    gdraw "other.d";
    gdraw "other.d" plot Buldot;
    endgraph;
\stopuseMPgraphic
\midaligned{\useMPgraphic{buldot}}

The problem is solved. The `picture', of course, could be 
anything, like stars or squares or triangles or even doughnuts, 
as long as its midpoint is defined at the origin. And yes, we did 
change the data points to something more recognizable (a big 
dipper). 


\subject[acknowledgement]{Acknowledgement} 

We would like to express our appreciation to the respondents to 
our questions, they know who they are, that offered help and 
helped to a nice solution, all within the timespan of one 
workday. 


\subject[references]{References}

\startitemize[n,packed]
  \item[lit:popineau] Popineau F: \METAPOST\ pratique. Cahiers 
GUTenberg n\high{o}~41 |---| Novembre 2001.
  \item[lit:hobby] Hobby J D: Drawings graphs with MetaPost. 
\crlf \type{\texmf\doc\metapost\base\mpgraph.pdf}
  \item[lit:knuth] Knuth D E: The \TeX book (Chapter~11). Addison 
Wesley 1970. 
  \item[lit:hagen] Hagen H: Metafun. \crlf 
\type{\texmf\doc\context\manuals\metafun-p.pdf}
\stopitemize

The directory paths above are for the \TeX Live CDROM set, issue 
nr~7, June~2002, Volume~1. The \METAFUN\ manual and the \CONTEXT\ 
software are also available from \type{http://www.pragma-ade.com/} 

\stoptext


  parent reply	other threads:[~2002-11-10 21:10 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-11-09 13:57 Metapost Michał Morawski
2002-11-10 21:02 ` Metapost Hans Hagen
2002-11-10 23:43   ` Metapost Adam Lindsay
2002-11-10 21:10 ` K.H. Wesseling [this message]
  -- strict thread matches above, loose matches on Subject: below --
2010-02-17 21:18 metapost Martin 'golodhrim' Scholz
2010-02-17 21:31 ` metapost Hans Hagen
2010-02-17 21:34 ` metapost Mojca Miklavec
2010-02-17 21:37   ` metapost Mojca Miklavec
2001-09-08 17:48 Metapost Joop Susan
2001-09-10  9:25 ` Metapost Hans Hagen
1999-08-23  5:08 Metapost David Arnold
1999-08-23  8:31 ` Metapost Hans Hagen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=3DCED940.23324.672849@localhost \
    --to=k.h.wesseling@planet.nl \
    --cc=ntg-context@ref.ntg.nl \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).