Es gibt irgendwie ganz wenig Dokumentation zu GNU m4 und hier im Forum kann man auch nicht danach suchen (min-Suchlänge drei Buchstaben). Jetzt hab ich hier nur ne ganz kleine Anleitung, da steht nicht viel drinn und ich stoße schon bei ein wenig ausprobieren an meine Grenzen: In folgender Datei werden die beiden Makros STYLESHEET und IMGDIR im Makro HEADER expandiert, nicht aber im Makro NAVBAR. Ich kann mir nicht erklären warum, wüsste es aber gerne, um nicht irgendwann mal böse überrascht zu werden.
Code:
define(`STYLESHEET', ifdef(`PREFIX', `PREFIX/css/gray.css',`css/gray.css'))
define(`IMGDIR', ifdef(`PREFIX', `PREFIX/gfx/',`gfx'))

define(`HEADER', `<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>$1 IMGDIR</title>
<link rel="stylesheet" type="text/css" href="STYLESHEET"/>
</head>
<body>')

define(`NAVBAR', `<div id="nav"><a href="#"> STYLESHEET </a>|<a href="#">KDE Stuff</a></div>IMGDIR<div id="content">')

define(`FOOTER', `</div>
<div id="footer"><span style="padding-right: 10px;">Generated by m4 on esyscmd(`date')</span></div>
</body>
</html>')