現在(2022-06-24),ノートやメモはObsidianで取っていて,文献管理はPaperpileで行っている.そうした場合,文献を読んだときに軽くメモしておいて,それを見たら「あぁ,あの論文ね」と内容をある程度思い出せるようにし,あるトピックについて「何年に誰がどうして,あのひとはこう言っている」というようなまとめノートを作るのにどうするかについて書いておく.

仕組み(少し複雑?)

  1. Paperpile側で「Workflows and integrations」という仕組みがあるので,その中の「BibTeX Export」というサービスを使う.そうすると,(おそらく)ライブラリがアップデートされるたびに文献ライブラリすべてをGoogle Drive上にBibTeXファイルとして保存してくれる.
  2. Obsidian側で「Citations」というプラグインの「Open literature note」だとか「Insert literature note link」だとかのコマンドを実行すると,上記ライブラリから検索できるようになり,選択された文献のためのノートが作成される.
  3. そのノートにメモを取る.
  4. あとはObsidian内でそのノートを他のノートから参照でき,他のノート内に埋め込むこともできるようになる.何かのトピックについてのノートを作り,関連する文献ノートを埋め込んでいけば良い(論文イントロの一つのパラグラフが完成する).

詳細設定

Paperpileでの準備

  1. Paperpileのページ右上の歯車ボタンで設定のプルダウンを開き,「Workflows and integrations」を開く.
  2. 「BibTeX Export」を「+Add」する.
  3. Sourceを「My Library」とし,Destinationを「Google Drive」とする.
  4. 自分の環境では,Google Driveに「paperpile.bib」が作られる.

Obsidianでの設定

  1. 「Citations」と「Templater」というプラグインをInstall & Enableする.
  2. Citationsプラグインの設定
    1. Citation database format を「BibTeX」とする.
    2. Citation database path を「/Users/Kobayashi/My Google Drive/paperpile.bib」とした.
    3. Literature note folder を「_ref_notes」とした.つまり _ref_notes/ 以下に文献ノートが保存されることになる.
    4. Literature note content template を以下のように書く.
      ---
      title: {{title}}
      authors: {{authorString}}
      journal: {{containerTitle}}
      year: {{year}}
      tags: paper
      ---
       
      # {{title}}
       
      ### <% `${tp.user.authorShort("{{authorString}}")}, (${"{{year}}"}) ${"{{containerTitle}}"}` %>
      キモは,デフォルトと異なり,タイトルの下に「第一著者 et al., (年) 雑誌名」という ### のエントリーを作っておく.ここを別ノートから参照する形にする. この部分で Templater プラグインを使っているのでそちらの設定も行う1
  3. Templaterプラグインの設定
    1. Templater folder location を「_templates/」とする.同名フォルダを作成する.
    2. Triger Templater on new file creation を Enable する.
    3. User Script Function の Script file location を「_templates/user_js_func/」とする.同名フォルダを作成する.
    4. 次の内容の authorShort.js を上記 user_js_func/ 内に作成する.
      function authorShort(authorString) {
        const authors = authorString.split(", ");
        let abbrAuthorString = ""
        if (authors.length == 1) {
            const parts = authors[0].split(" ")
            abbrAuthorString = parts[parts.length-1];
        }
        else if (authors.length == 2) {
            let surnames = [];
            authors.forEach(author => {
              const parts = author.split(" ");
              surnames.push(parts[parts.length-1]);
            })
            abbrAuthorString = `${surnames[0]} and ${surnames[1]}`;
        } else {
            const first = authors[0].split(" ")
            const surname = first[first.length - 1];
            abbrAuthorString = `${surname} et al.`;
        }
        return abbrAuthorString
      }
      module.exports = authorShort;
    5. 次の内容の authorLong.js を上記 user_js_func/ 内に作成する.
      function authorLong(authorString) {
        const authors = authorString.split(", ");
        let fullAuthorList = [];
        authors.forEach(author => {
            const parts = author.split(" ");
            let str = [];
            str.push(parts[parts.length-1]);
            const name_parts = parts.slice(0, parts.length-1);
            name_parts.forEach(name => {
              str.push(", ");
              str.push(`${name[0]}.`);
            });
            fullAuthorList.push(str.join(""))
        });
        return fullAuthorList.join(", ")
      }
      module.exports = authorLong;

Obsidianで文献ノートを作成する

⌘+P」でコマンドパレットを呼び出し「citation」とタイプするとCitationsプラグインのコマンドがいくつか表示されるので,「Open literature note」とし,何か文献を検索してノートを作成したさいに,ノートが _ref_notes/ 内にファイルが作成され,その中身が,タイトルの下に「著者,(年) 雑誌名」となっていれば成功.

Obsidianでメモを埋め込む

上記文献ノートは _ref_notes/@hoge2022-a のようなファイルとなっているので,別のノートで,

![[@hoge2022-a#hoge-et-al-2022-j-fuga|Hoge et al., (2022) J. Fuga]]

のように「!」をつけ,ノート内のタイトルをリンクすれば,そのメモ内容が埋め込まれた形で表示されるようになる.

Footnotes

  1. https://github.com/hans/obsidian-citation-plugin/issues/53