Obsidianで書いたMarkdownを相互参照・参考文献付きでLaTeX組版のPDFに変換する

# はじめに

Obsidianで書いたMarkdownを相互参照・参考文献付きでLaTeX組版のPDFに変換する方法について書きます。OSはWindows 11です。

仕組みについては、[MarkdownとPandocとLatexmkで楽してレポートを書く](https://trap.jp/post/1123/)に詳しいです。この記事のインターフェースにObsidianを用いて、ユーザビリティを向上させたものになります。

この環境の構築に成功すると
![model.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3910488/cc915d47-f20c-456a-b934-9dda36c0d0a7.png)
このようにObsidianで書かれたMarkdownを
![model.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3910488/852763c0-8863-51f0-6380-bccaa967ed40.jpeg)
このようにLaTeXで組版されたPDFに一発で変換することができます。WordやLaTeXに変換することもできます。

# 導入するもの

- Obsidian
	- MdTex
- Tex Live
- Pandoc
	- pandoc-crossref

# 手順

環境構築の手順を紹介します。手順通りに進めてエラーが発生したときは、[トラブルシューティング](#トラブルシューティング)に同様の問題がないか確認し、その都度修正してください。

## Tex Liveをインストールする

Tex Liveをインストールしてください。
参考: [【大学生向け】LaTeX完全導入ガイド Windows編 (2022年)](https://qiita.com/passive-radio/items/623c9a35e86b6666b89e#1-latex%E3%81%AE%E5%B0%8E%E5%85%A5-TexLive)

## Pandocとpandoc-crossrefをインストールする

Pandocとそのフィルターであるpandoc-crossrefをインストールしてください。
参考: [Pandocの比較的簡単なインストール方法](https://qiita.com/sky_y/items/3c5c46ebd319490907e8)

pandoc-crossrefの書き方については、[Markdownで相互参照を使うならpandoc-crossref](https://laclefyoshi.hatenablog.com/entry/20150616/crossref)に詳しいです。

## ObsidianにMdTexのプラグインをインストールする

以下の2つの記事を参考にして、ObsidianにMdTexのプラグインをインストールしてください。

1. [Obsidian用プラグインMdTexの導入方法、使い方について](https://note.com/mekann/n/nd837b0beaf60)
2. [Obsidian用プラグイン「MdTex」v1.1.1のリリースについて](https://note.com/mekann/n/nb718a63f328c)

## `--citeproc`を`Pandoc追加オプション`に入力

MdTexの設定から`Pandoc追加オプション`に`--citeproc`と入力してください。
![option.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3910488/891374f0-fdfa-ba72-b831-c023f20a0583.png)

# トラブルシューティング

## Chocolateyでインストールするとpandoc-crossrefのバージョンが古くなる

### 確認方法

1. `pandoc --version`をコマンドプロンプトに入力してPandocのバージョンを確認します。
2. `pandoc-crossref --version`をコマンドプロンプトに入力してpandoc-crossrefに対応するPandocのバージョンを確認します。

```cmd
> pandoc --version
pandoc.exe 3.6.2
Features: +server +lua
Scripting engine: Lua 5.4
User data directory: C:\Users\ユーザー名\AppData\Roaming\pandoc
Copyright (C) 2006-2024 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.
```

```cmd
> pandoc-crossref --version
pandoc-crossref v0.3.4.1 git commit 484c8168a5190e13b43f1aa1547554081aa2ca5b (HEAD) built with Pandoc v2.7.2, pandoc-types v1.17.5.4 and GHC 8.4.4
```

### pandoc-crossrefを手動でインストールする

1. `User data directory:`以下を見てユーザーデータディレクトリを確認します。
2. ディレクトリはない場合もあるので、なければ作ります。
3. [GitHub](https://github.com/lierdakil/pandoc-crossref/releases)からpandoc-crossrefの最新版をダウンロードします。
4. ユーザーデータディレクトリに`filter`フォルダを作成して、pandoc-crossref.exeをそこに置きます。

## .styファイルがないというエラーが出る

```
Pandoc error: Error producing PDF. ! LaTeX Error: File 'lualatex-math.sty' not found.
```

このようなエラーが出たときはTex Liveでインストールすれば解決します。

```cmd
tlmgr install lualatex-math
```

## bibliographyが認識されない

```
Pandoc error: File ファイル名.bib not found in resource path.
```

このようなエラーが出たときはメタデータの`bibliography:`以下をフルパスで書きます。

```YAML:YAML
---
bibliography: C:/Users/...
---
```

::: note
このとき引用符や括弧は付けず、`\`ではなく`/`で区切ります。
拡張子の`.bib`も付けます。
:::

# Tips

タグなど関係のないプロパティは無視されます。

# コード例

```Markdown:model.md

---
title: Markdownの実験
author: 坂本
date: \today
bibliography: C:/Users/...
tags:
  - "#Markdown"
---

# はじめに

あいうえお[@Lang:alg]。

ところで[@fig:the-garden]はThe Gardenの画像。

![The Garden](https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQkcYJ9sRt-gn1s2THNwIvlEZjswNcZF1Mj5A&s){#fig:the-garden}

[@eq:kai]は解の公式。
$$ x=\frac{-b\pm\sqrt{b^2-4ac}}{2a} $$ {#eq:kai}

::: {#refs}
:::

追記したいことがある。
```

```BibTex:model.bib
@book{Lang:alg,
  author    = {Lang, Serge},
  title     = {Algebra},
  series    = {Graduate Texts in Mathematics},
  volume    = {211},
  edition   = {Third},
  publisher = {Springer-Verlag, New York},
  year      = {2002},
}
```