理系学生日記

おまえはいつまで学生気分なのか

Markdownにおける脚注番号の重複を検知する

最近のドキュメントはもっぱらMarkdownで書くという方も多いのではないでしょうか。 markdownlintやtextlintといったツール群によって、文章の構成環境も整えやすくなってきました。

ここで、GitLab Flavored MarkdownやGitHub Flavored Markdownにおいて脚注が利用できるのはみなさんご存知でしょう。

一方で、この脚注における「番号の重複」をどう自動的に検知するかはちょっと頭を悩ませていました。 例えば以下のようなMarkdownにおいて、[^1]の重複をエラーとして検知したい。

[^1]: hoge
[^2]: fuga
[^1]: piyo

解決策

この種のエラーを、Pandocが検知してくれることに気づきました。

$ pandoc --version
pandoc 2.14.2
Compiled with pandoc-types 1.22, texmath 0.12.3.1, skylighting 0.11,
citeproc 0.5, ipynb 0.1.0.1
User data directory: /Users/kiririmode/.local/share/pandoc
Copyright (C) 2006-2021 John MacFarlane. Web:  https://pandoc.org
This is free software; see the source for copying conditions. There is no
warranty, not even for merchantability or fitness for a particular purpose.

$ pandoc --output=/dev/null --to=html --fail-if-warnings README.md
[WARNING] Duplicate note reference '1' at README.md line 46 column 1
Failing because there were warnings.

脚注番号の重複はWARNING扱いですが、--fail-if-warningsを付与すると終了ステータス1で終了してくれます。 これをCIに組み込めば、自動的に検知が可能ですね。