我用obsidian写小说,我创建了一个文件夹,为小说名字。在这个文件夹里,我接下来要写很多章节。每次创建新的笔记时,它都需要自己重命名。我想要解决的问题是:我创建笔记时,它自动生成相对应的章节序号。例如我这个文件夹里已经有“第1章”,接着我创建新笔记的时候,它自动生成“第2章”,以此类推。它会根据,最大的数值生成下一个新笔记的序号。再例如,我已经有了300个章节,在我创建新笔记的时候,它自动命名:第301章。
求一个解决办法,谢谢。
我的思路是使用命令在仓库文件夹一次性新建多个第{1…300}章.md文件
可是我也估算不出来大致要写多少章,300章只是一个举例。之所以要这个功能,是因为之前我另外一本书写到400多章的时候,我创建新笔记的时候写错了序号,导致我上传去网站上的序号不对,让读者以为少了章节。。
我知道用quickadd的宏应该可以实现,但是得会写代码
好吧,但是我不会写代码
可以在 Excel 中生成一个序列,复制到一个目录文件中。如
[[第一章]]
[[第二章]]
...
然后红色链接点进去就是创建文件,创建之后链接就由红色找不到文件,变成蓝色了。需要注意obsidian一个库中不允许相同命名,所以可以加前缀,如[[书名-第一章]]
这个办法可以,新建一个目录笔记,点击之后自动创建笔记是吧?
是的,你可以试试看,点击红色一般就是创建对应名称的文件了。
也可以用Templater写模板,如果文件夹存在了名字为第n章的笔记,就自动重命名为第n+1章
我去研究一下看看,谢谢!
我写了一个quickadd的脚本你可以试试看,这个脚本的效果是返回“测试文件夹”下文件名中最大的数字+1的数字。
配合quick add可以这样使用:
首先在你的库的目录下面创建一个.js格式的文件,然后把下面代码粘贴进去。假设命名为 macro.js
module.exports = async (params) => {
const {
quickAddApi,
app,
} = params;
const files = app.vault.getFiles().filter(file=>file.parent.name == "测试文件夹")
let num = 0;
files.forEach(file=>{
num = Math.max(num,file.name.match(/[0-9]+/)[0])
})
return num + 1;
};
把其中的测试文件夹五个字改成你的小说放置的文件夹名称
打开quickadd的设置,点开manage macro新建一个宏,记住这个宏的名字,比如 test-Macro
。
建好之后,点击你新建的宏下面的configure按钮,拉到user script 的地方,选择刚才创建的js文件macro.js
。
回到quick add的设置界面,选中macro,输入宏的名字。这里的名字不需要和上面一样,但是这里建议写成一样的,在举例中是 test-Macro
。点击add choice创建一个macro。这时候列表里面应该会出现新建的宏 test-Macro
,点开旁边的设置,选择那个宏的名字 test-Macro
点一下加号
最后再次回到设置界面,选中template(默认选中的就是这个),输入名字,点击add choice创建一个template 。
在新建的那个template 旁边,点击设置按钮,打开file name format的开关,然后输入 第{{MACRO:宏的名字}}章:{{value}}
(在例子中使用的是 {{MACRO:test-Macro}}章:{{value}}
)
选择好对应的模版和目录
最后点击标志启动这个指令,你就可以在命令面板里面找到它了
谢谢,感谢!
你好,我没有弄明白,可以麻烦你把宏的名字打上例名吗?辛苦你了,我真的没弄懂,求教
不太懂你的问题是什么…总之我改了一下上面的描述。
这个其实是quickadd的使用问题,实在搞不懂的话去B站搜一下quickadd的macro的教程跟着走一遍就是了
谢谢你!辛苦啦!
不知道为什么 运行了命令没有反应