%[^#^]','/\\[\\^#\\^\\]/',"FTNassembledFootnotes"); Markup('[^#ref','inline','/\\[\\^#([^\ ]+?)\\^\\]/',"FTNfootnoteReference"); Markup('[^#defsWA','>[^#ref','/\\[\\^#([^\ ]+?) (.*?)\\^\\]/',"FTNfootnoteText"); Markup('[^defsWo','>[^#defsWA','/\\[\\^([^#].*?)\\^\\]/',"FTNfootnoteTextNA"); //Markup('\footnote','inline','/\\\\footnote\\{(.*?)\\}/',"FTNfootnoteTextNA"); $FTNrefCounter = 1; $FTNrefAnchorCounterMapping = array(); function FTNfootnoteReference($ref) { global $FTNrefCounter, $FTNrefAnchorCounterMapping; if (!isset($FTNrefAnchorCounterMapping[$ref[1]])) { $displayedAnchor = $FTNrefCounter; $FTNrefAnchorCounterMapping[$ref[1]] = $FTNrefCounter; $FTNrefCounter += 1; } else { $displayedAnchor = $FTNrefAnchorCounterMapping[$ref[1]]; } return Keep("$displayedAnchor"); } function FTNfootnoteText($m) { global $FTNrefCounter, $FTNrefAnchorCounterMapping, $FTNfootnoteTexts; $footnoteText = str_replace("\\\"", "\"", $m[2]); $refAnchor = $m[1]; if ($refAnchor == '') $refAnchor = "xxxxxxxxx$FTNrefCounter"; // internal use only $FTNfootnoteTexts[$refAnchor] = $footnoteText; if (!isset($FTNrefAnchorCounterMapping[$refAnchor])) { return FTNfootnoteReference($refAnchor); } return ''; } function FTNfootnoteTextNA($m) { global $FTNrefCounter, $FTNrefAnchorCounterMapping, $FTNfootnoteTexts; $footnoteText = str_replace("\\\"", "\"", $m[1]); $refAnchor = "xxxxxxxxx$FTNrefCounter"; // internal use only $FTNfootnoteTexts[$refAnchor] = $footnoteText; if (!isset($FTNrefAnchorCounterMapping[$refAnchor])) { return FTNfootnoteReference($refAnchor); } return ''; } function FTNassembledFootnotes() { global $FTNrefAnchorCounterMapping, $FTNfootnoteTexts; $res = array(); /* $res[] = "
    "; foreach($FTNrefAnchorCounterMapping as $anchor => $count) { if (!isset($FTNfootnoteTexts[$anchor])) { $text = "Warning: Footnote '$anchor' referenced but not defined."; } else { $text = $FTNfootnoteTexts[$anchor]; } $res[] = "
  1. ^ $text
  2. "; } $res[] = "
"; */ foreach($FTNrefAnchorCounterMapping as $anchor => $count) { if (!isset($FTNfootnoteTexts[$anchor])) { $text = "Warning: Footnote '$anchor' referenced but not defined."; } else { $text = $FTNfootnoteTexts[$anchor]; } $res[] = "$count $text

"; //$res[] = "$count. $text"; } /* $res=array(); foreach($FTNfootnoteTexts as $anchor => $text) { $res[] = "$anchor => $text

"; } */ return Keep(implode("\n", $res)); } function FTNlatexAssembledFootnotes() { return Keep("


\n") . FTNassembledFootnotes(); }