{{ $content := .Content }} {{ $raw := .RawContent }} {{ $page := .Page }} {{/* Escape slashes for Latex to fix line breaks */}} {{$latex := findRE "\\$\\$([^\\$]+)\\$\\$" $content}} {{range $latex}} {{$fixed := replaceRE "\\\\(?: +|\\n)" "\\\\" .}} {{$content = replace $content . $fixed}} {{end}} {{/* Wikilinks */}} {{$wikilinks := $content | findRE "!?\\[\\[\\S[^\\[\\]\\|]*(?:\\|[^\\[\\]]*)?\\S\\]\\]" }} {{$codefences := $raw | findRE "\\x60[^\\x60\\n]+\\x60"}} {{$codeblocks := $raw | findRE "\\x60{3}[^\\x60]+\\x60{3}"}} {{$code := union $codefences $codeblocks}} {{range $wikilinks}} {{$cur := .}} {{$incode := false}} {{range $code}} {{if (in . $cur)}} {{$incode = true}} {{end}} {{end}} {{if not $incode}} {{if (hasPrefix . "!")}} {{$inner := . | strings.TrimPrefix "![[" | strings.TrimSuffix "]]" }} {{$split := split $inner "|"}} {{$path := index $split 0 | relURL}} {{$reference := split $path "#"}} {{$title := index $reference 0}} {{$display := default $title (index $split 1)}} {{$img := printf "" $path $display}} {{$content = replace $content . $img}} {{else}} {{$inner := . | strings.TrimPrefix "[[" | strings.TrimSuffix "]]" }} {{$split := split $inner "|"}} {{$path := index $split 0}} {{$reference := split $path "#"}} {{$title := index $reference 0}} {{$block := default "" (index $reference 1)}} {{$block = strings.TrimRight "/" (cond (eq $block "") $block (printf "#%s" $block))}} {{$href := strings.TrimRight "/" ($page.GetPage $title).RelPermalink}} {{$display := default $title (index $split 1)}} {{if not $href}} {{$link := printf "%s" $display}} {{$content = replace $content . $link}} {{else}} {{$fullhref := printf "%s%s" $href $block }} {{$link := printf "%s" $fullhref $href $display}} {{$content = replace $content . $link}} {{end}} {{end}} {{end}} {{end}} {{/* Add copyable anchors */}} {{ $content = $content | replaceRE "()(.+)()" `${1}# ${3}${4}` }} {{ $content | safeHTML }}