ox-hugo を使う
ox-hugo の中で LaTeX の数式への参照を使う
ox-hugo の中で LaTeX の数式を書いて、それを参照することができるはずですが、 そのままでは動きません。
\begin{equation}
\label{eq:01}
\y = ax + b
\end{equation}
と書くと、次が出力されます:
\begin{equation} \label{eq:01} \y = ax + b \end{equation}
ここで式(\ref{eq:02})を参照します。 以下の設定をしない場合は式(\ref{eq:02})を参照できません。
static/mathjax-config.js
を次の内容で作成してください
(ox-hugo の test からコピーしました):
window.MathJax = {
displayAlign: "center",
displayIndent: "0em",
"HTML-CSS": { scale: 100,
linebreaks: { automatic: "false" },
webFont: "TeX"
},
SVG: {scale: 100,
linebreaks: { automatic: "false" },
font: "TeX"},
NativeMML: {scale: 100},
TeX: { equationNumbers: {autoNumber: "AMS"},
MultLineWidth: "85%",
TagSide: "right",
TagIndent: ".8em"
}
};
これを Javasctipt を使うテンプレートの中で呼びだします:
<script src='https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.4/MathJax.js?config=TeX-MML-AM_CHTML' async></script>
<script src="{{ "mathjax-config.js" | absURL }}"></script>
参照してみます:
\begin{equation} \label{eq:02} \y = ax + b \end{equation}
ここで式(\ref{eq:01})を参照します。
目次の制御
ox-hugo が出力する目次を Summary の中に出力させない
ox-hugo が出力される目次が、 Summary の中に 表示されてしまいます。 それを防ぐための方法です。
ファイルのコピー
から、テーマの layouts/partials
ディレクトリへコピーします。
summary_minus_toc.html
はこのような内容です:
{{- with .Description -}}
{{- . | markdownify | printf "<p>%s</p>" | safeHTML -}}
{{- else -}}
{{- $summary_has_org_toc := substr .Content 0 30 | findRE "[\".]ox-hugo-toc" -}}
{{- if $summary_has_org_toc -}}
{{- $content_splits := split .RawContent "<!--endtoc-->" -}} <!-- Need to use .RawContent as we will be parsing for 'more' comment later. -->
<!-- If Org TOC is present, the special comment endtoc would also be present.
In that case, output only the part *after* that comment as Summary. -->
{{- $summary_raw := index $content_splits 1 -}}
{{- $summary_splits := split $summary_raw "" -}}
{{- if eq (len $summary_splits) 2 -}}
{{- index $summary_splits 0 | markdownify -}}
{{- else -}}
{{- $summary_raw | markdownify | truncate 300 -}}
{{- end -}}
{{- else -}}
<!-- Print the whole Summary if endtoc special comment is not found. -->
{{- .Summary | printf "<p>%s</p>" | safeHTML -}}
{{- end -}}
{{- end -}}
生の HTML が出るのは嫌なので、少し改造します:
{{- with .Description -}}
{{- . | markdownify | printf "<p>%s</p>" | safeHTML -}}
{{- else -}}
{{- $summary_has_org_toc := substr .Content 0 30 | findRE "[\".]ox-hugo-toc" -}}
{{- if $summary_has_org_toc -}}
{{- $content_splits := split .RawContent "<!--endtoc-->" -}} <!-- Need to use .RawContent as we will be parsing for 'more' comment later. -->
<!-- If Org TOC is present, the special comment endtoc would also be present.
In that case, output only the part *after* that comment as Summary. -->
{{- $summary_raw := index $content_splits 1 -}}
{{- $summary_splits := split $summary_raw "<!--more-->" -}}
{{- if eq (len $summary_splits) 2 -}}
{{- index $summary_splits 0 | markdownify -}}
{{- else -}}
{{- $summary_raw | markdownify | plainify | truncate 300 -}}
{{- end -}}
{{- else -}}
<!-- Print the whole Summary if endtoc special comment is not found. -->
{{- .Summary | printf "<p>%s</p>" | safeHTML -}}
{{- end -}}
{{- end -}}
{{- $summary_raw | markdownify | truncate 300 -}}
を
{{- $summary_raw | markdownify | plainify | truncate 300 -}}
に変更しただけです。
これはこのように動きます:
#+DESCRIPTION:
があれば、それが使われます- ox-hugo が目次を作成していたら(=ox-hugo-toc= というクラスがあれば)、 それを削除し、 Summary とします。
テーマの中での使用方法
次のようにして、 Summary を埋め込むテンプレートの中で 使ってください:
{{ partial "summary_minus_toc.html" . }}
ox-hugo に目次を作成させないようにする
ox-hugo はデフォルトで目次を生成します。
それを止めるには、 org-hugo-export-with-toc
を nil
に設定します。
また、 org-html-use-infojs
が t
だと、 常に 目次が
出力されてしまうので、 nil
に設定しておきます。
(setq org-hugo-export-with-toc nil)
(setq org-html-use-infojs nil)
各サブツリーで次のようにすると、目次は出力されません:
:EXPORT_OPTIONS: toc:nil
各サブツリーで次のようにすると、目次が出力されます:
:EXPORT_OPTIONS: toc:t
もしくは、次のようにすると、指定したレベルまでの目次が出ます:
:EXPORT_OPTIONS: toc:1
Details と summary
ox-hugo を使って Details と Summary を書く方法です。
#+begin_details
#+begin_summary
これは Summary
#+end_summary
これは detail
#+end_details
これは Summary
これは detail
Related Articles:
- 2019/03/30 ox-Hugo を使う
- 2019/04/02 このブログの作りかた