<%* // 使い方: 新規ノートに BibTeX を貼り付けてから Templater でこのテンプレを挿入する (Alt+E)。 // BibTeX が見つからなければ貼り付け用のプロンプトを出し、それも空なら空のテンプレを挿入する。 const editor = tp.app.workspace.activeEditor?.editor; const current = editor ? editor.getValue() : tp.file.content; let bib = tp.user.parseBibtex(current); let rest = current; if (bib) { rest = current.slice(0, bib.start) + current.slice(bib.end); } else { const pasted = await tp.system.prompt("BibTeX を貼り付け (空なら空テンプレを挿入)", "", false, true); if (pasted) bib = tp.user.parseBibtex(pasted); } if (bib && editor) { // ファイル名が無題なら論文タイトルにリネームする (同名ファイルがあればそのまま) if (bib.title && /^(Untitled|無題|無題のファイル)(\s\d+)?$/.test(tp.file.title)) { const name = bib.title.replace(/[\\/:*?"<>|]/g, (c) => ({ "\\": "\", "/": "/", ":": ":", "*": "*", "?": "?", '"': "”", "<": "<", ">": ">", "|": "|" }[c])); const folder = tp.file.folder(true); const dest = (folder === "/" ? "" : folder + "/") + name + ".md"; if (tp.app.vault.getAbstractFileByPath(dest)) { new tp.obsidian.Notice(`同名のノートが既にあるためリネームしません: ${name}`); } else { try { await tp.file.rename(name); } catch (e) { new tp.obsidian.Notice(`リネームに失敗しました: ${e.message}`); } } } // 貼り付けた BibTeX ごとファイル全体を置き換える (リネーム後に行う: 失敗時に本文を消さないため) editor.setValue(""); } else { rest = ""; } tR += tp.user.paperNote(bib, rest); -%>