Emacs Org-babel-tangle注释路径异常:相对路径设置不生效求助
我之前在使用Org mode早期版本时也碰到过这个问题,明明设置了org-babel-tangle-use-relative-file-links为t,但生成的注释里还是绝对路径。结合你使用的Emacs 25.3.1和Org mode 9.1.9版本,试试下面这些排查和解决方法:
确认变量的生效范围
有时候临时设置的变量可能没覆盖到正确的作用域,建议把配置写到你的Emacs初始化文件(比如~/.emacs或~/.emacs.d/init.el)里,确保每次启动都能加载:(setq org-babel-tangle-use-relative-file-links t)也可以在当前Org文件里通过
M-x set-variable手动设置这个变量,然后重新执行org-babel-tangle,先排除配置没加载的问题。检查文件层级关系
这个变量生成的相对路径是相对于导出代码文件的位置计算的,不是当前工作目录。比如你的Org文件在~/Projects/my_project/docs/note.org,导出的代码文件在~/Projects/my_project/src/script.py,那注释里的路径应该是../docs/note.org——如果你的文件层级跨度大,看起来可能像长路径,但确实是相对路径。可以先把Org文件和导出代码文件放到同一个目录下测试,看看注释里的路径是不是变成相对的。用相对路径指定tangle输出
如果你的代码块里用绝对路径设置:tangle参数,可能会干扰相对路径的生成。试试改成相对路径:#+BEGIN_SRC python :tangle ./src/script.py # 你的代码内容 #+END_SRC这样导出时,注释里的Org文件路径会基于
./src/script.py的位置来生成相对路径。考虑版本兼容性
Org mode 9.1.9属于比较旧的版本,这个变量的行为在后续版本里可能有修复。如果上面的方法都没效果,可以尝试升级Org mode到较新的稳定版本(比如9.5系列),升级前记得备份你的配置文件,避免出现其他兼容性问题。
内容的提问来源于stack exchange,提问作者Pheidippides

