Hugoで改行時の半角スペースを除去

HugoはMarkdownで記事を記述しますが、日本語ですと改行時に挿入されて しまう半角スペースが気になります。

そんな時はテーマファイルの {{.Content}} の部分を以下のように 書き換えてしまいます。

{{.Content | replaceRE "\n" "" | safeHTML}}

.Content に含まれる改行を replaceRE "\n" "" で 全部削除してしまって、 safeHTML でHTMLに変換します。

なかなか強引ですが、有効です。

2017-01-20 追記

と思いましたが、<pre>内まで改行を消されてえらいことになりますね。 以下更に強引な解決方法です。

{{ $content := .Content | replaceRE "\n+" ";SEP;" }}
{{ $content := $content | replaceRE "(

)" "$1;SEC;" }} {{ $content := $content | replaceRE "(
)" "$1;SEC;" }} {{ $content := $content | replaceRE "()" "$1;SEC;" }} {{ $p := split $content ";SEC;" }} {{ range $p }} {{ $c := . | replaceRE "^;SEP;" "" | replaceRE "^;SEP;$" "" }} {{ if hasPrefix $c "
" }}
    {{ $c | replaceRE ";SEP;" "\n" | safeHTML}}
{{ else }}
    {{ $c | replaceRE ";SEP;" "" | safeHTML}}
{{ end }}
{{ end }}

まず、改行を ;SEP; に全置換したのち、</p>``</pre>``</h1>など で分割してループさせ、<pre>が頭に含まれている場合は ;SEP; を改行に置換。それ意外の場合は ;SEP; を削除という処理です。

もう少しテストした方が良さそうですね。