使用blogdown::insert_image_addin()插入图片需手动移文件,是否正常?
这情况其实挺常见的,完全不算“不正常”——核心原因是blogdown::insert_image_addin()这个图形插件的设计逻辑:它默认只会帮你生成Markdown图片语法的链接,但不会自动把本地图片移动到Hugo项目要求的静态资源目录里。
毕竟不同Hugo主题的静态资源结构差异很大,比如Hugo Academic主题通常会把图片放在static/img/或者文章对应的页面捆绑目录里,插件没法自动适配所有主题的路径规则,所以才需要你手动移动图片到正确的位置,不然Netlify部署时找不到图片文件,自然就显示不出来。
下面给你几个更高效的本地图片插入方法,能省掉手动移动的麻烦:
配置插件自动复制图片
你可以在项目的.Rprofile文件里添加一行配置,指定插件默认的图片存放目录。比如:options(blogdown.insert_image.dir = "static/img/posts")保存后重启RStudio,再用
blogdown::insert_image_addin()选择本地图片时,插件会自动把图片复制到你指定的目录,同时生成正确的Markdown链接,不用再手动移动了。使用
blogdown::include_graphics()函数
如果你用的是R Markdown格式写文章,直接用这个函数比插件更灵活。比如:blogdown::include_graphics("~/Desktop/my-photo.png")当你knit文章时,这个函数会自动把本地图片复制到当前文章对应的静态资源目录(比如
static/post/[你的文章文件名]/),并生成正确的图片引用路径,全程不用手动干预。用Hugo Page Bundles管理单篇文章图片
把文章做成Page Bundle:比如你的文章文件是my-new-post.md,就新建一个同名的文件夹my-new-post/,把这篇文章要用的图片都放进这个文件夹里,然后插入图片时直接用相对路径:Hugo会自动识别这个页面捆绑结构,部署时能正确找到图片,这种方法还能让单篇文章的图片和内容更整洁地放在一起。
提前整理图片到项目目录
写文章前,先把要用的图片都放到项目的static/img/posts/[当前文章名]文件夹里,然后用插件插入时直接选择这个文件夹里的图片,生成的链接本身就是正确的,也不需要再移动文件。
内容的提问来源于stack exchange,提问作者Filippo Gambarota

