include','/^(!{1,6})(?:\s*)(.*)$/', "MkNumTitle_e");
function MkNumTitle_e($m) {
return MkNumTitle(strlen($m[1]), PSS($m[2]));
}
Markup('^Q:toc','>include','/^Q:(.*)$/', "MkQref_e");
function MkQref_e($m) {
return MkQref($m[1]);
}
Markup('toc','directives','/\\(:(no)?toc:\\)/', "RunToc_e");
function RunToc_e($m) {
return RunToc($m[1]);
}
Markup('indent','directives','/\\(:(no)?indent:\\)/', "RunIndent_e");
function RunIndent_e($m) {
return RunIndent($m[1]);
}
Markup('num','directives','/\\(:(no)?num(?:\s+(.*?))?:\\)/', "RunNum('$1',PSS('$2'))");
function RunNum_e($m) {
return RunNum($m[1], PSS($m[2]));
}
$MarkupFrameBase['posteval']['toc'] =
"\$out=str_replace('{toc}','
'.\$GLOBALS['Ntoc'].'
',\$out);";
$GroupFooterFmt .= '(:nonum:)(:noindent:)(:notoc:)';
define('NumToc',1);
function MkNumTitle ($level, $text) {
global $tcount, $CurLvl, $DefNum, $HdrIndStyle, $Ntoc, $NumHdr, $IndentHdr, $SetToc, $indentoffset;
static $TcNb, $OrNb, $sp, $numoffset;
if ($level>4) $level=4;
if ($CurLvl>0 and $IndentHdr) $hdr = "";
else $hdr='';
if (!isset($CurLvl)) $CurLvl=0;
if ($CurLvl==0) {
SDV ($DefNum, '1.1.1.1. ');
SDV ($HdrIndStyle, 'text-indent:-1em;');
$CurLvl++;
$sp[1] = '';
for ($i=1; $i<5; $i++) {
$sp[$i+1] = $DefNum[$i+$i-1];
$OrNb[$i] = chr(ord($DefNum[$i+$i-2])-1); // dec don't work on alpha char
$TcNb[$i] = $OrNb[$i];
}
$sp[5] = substr($DefNum,7);
}
$CurLvl = $level++;
if ($NumHdr) {
if (!isset($numoffset)) $numoffset = $CurLvl;
$level-=$numoffset;
$TcNb[$level] = IncNum($TcNb[$level]);
for ($i=1; $i<=$level; $i++) $num.= $sp[$i].$TcNb[$i];
for ($i=$level+1; $i<5; $i++) $TcNb[$i]= $OrNb[$i];
$num.= $sp[5];
$pref= $num;
}
else
$pref = "- ";
if ($IndentHdr) {
if (!isset($indentoffset)) $indentoffset = $CurLvl-1;
$idlvl = $CurLvl-$indentoffset;
$indent = " style='$HdrIndStyle'";
$classblk = "";
}
if ($SetToc) {
$title = preg_replace ("/\\[\\[(?:#.*)?(?:.*?\\|)?(.*?)(->.*?)?\\]\\]/", "\\1", $text); //remove links
$title = preg_replace ("/(%.*?%)([^%]*)/", "\\2", $title); //remove styling %...%
$idtoc = $CurLvl-$indentoffset;
$Ntoc.= "\n
$pref$title";
$reftoc = "[[#ntoc$tcount]]";
}
return ("$hdr\n
$classblk\n$reftoc$num$text
");
}
function IncNum ($num) {
if (is_numeric($num))
return ++$num;
else
return chr(ord($num)+1);
}
function MkQref ($text) {
global $tcount, $CurLvl, $Ntoc, $SetToc, $indentoffset;
if ($SetToc) {
$idtoc = $CurLvl-$indentoffset;
$Ntoc.= "\n
$text
";
$anc = "[[#ntoc$tcount]]";
}
return "Q:$anc$text";
}
function RunToc ($notoc) {
if ($GLOBALS['SetToc'] =($notoc!='no')) return '{toc}';
}
function RunIndent ($noindent) {
global $IndentHdr;
$wasindent = $IndentHdr;
if (!$IndentHdr=($noindent!='no') and $wasindent) return '
';
}
function RunNum ($nonum, $def) {
global $NumHdr, $DefNum, $GroupFooterFmt;
$NumHdr =($nonum!='no');
if ($def != '') $DefNum = $def;
}
$HTMLStylesFmt['nmhindent']= "
.indent1 {margin-left:1.25em;}
.indent2 {margin-left:2.5em;}
.indent3 {margin-left:3.75em;}
.indent4 {margin-left:5em;}
";
$HTMLStylesFmt['nmhtoc']= "
.toc1 {margin-left:1em;}
.toc2 {margin-left:2em;}
.toc3 {margin-left:3em;}
.toc4 {margin-left:4em;}
";
?>