<%*
// 使い方: 新規ノートに 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);
-%>