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;} "; ?>