TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

The files used to prepare the TUG interviews book, Tex People: Interviews from the world of Tex, contains examples such as http://dw2.tug.org/ivbook/trunk/levien.m4, which begins

dnl $Id: rahtz.m4 265 2009-05-17 13:40:50Z dwalden $
define([[_intervieweename]],[[Raph Levien]])dnl
define([[_interviewername]],[[Karl Berry]])dnl
define([[_interviewerbname]],[[Dave Crossland]])dnl

_header(levien.jpg,[[Raph Levien is a programmer with a special interest
in graphics applied to type.  He is also a typeface designer.  He holds
several patents and is a past maintainer of Ghostscript.]])

and ends:

_par _noindent Last, this is a screenshot of _link(http://fontforge.sf.net,
FontForge), which I used to put all the shapes together into a font, and
produce _Tone and OpenType font files.




It is reminiscent of some hybrid of Gnu M4 and Texinfo — what is it?

share|improve this question
up vote 5 down vote accepted

It's indeed GNU m4. One reason to choose it was to produce both HTML and LaTeX output:

  • texdefs.m4 is the definition file for TeX output

  • htmldefs.m4 is the definition file for TeX output

You can read about that, also about technical m4 details, in: TeX People: The TUG interviews project and book.

share|improve this answer
That's an excellent link. It seems somehow wrong to use a macro language to preprocess a macro language... – Charles Stewart Dec 9 '10 at 23:06

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.