emacs组织odt导出为odf并在emacs外部打开odt

emacs组织odt导出为odf并在emacs外部打开odt,emacs,export,external,org-mode,odt,Emacs,Export,External,Org Mode,Odt,orgmode选项导出和查看odt文件的直观用法应该是在libre/open office中查看它。然而,到目前为止,我还没有运气让它发挥作用;它总是在emacs中作为压缩存档打开。通过在my.emacs中插入 (添加到列表“组织文件应用程序”(“\\.odt\\\”、“xdg打开%s”)) 我在访问org文件中的文件链接时会正确地打开它们,但这似乎不会影响导出和查看选项。我已经研究过将组织odt导出更改为odf并打开,但没有发现它有什么不同。任何帮助都将不胜感激。再一次,我希望org odt

orgmode选项导出和查看odt文件的直观用法应该是在libre/open office中查看它。然而,到目前为止,我还没有运气让它发挥作用;它总是在emacs中作为压缩存档打开。通过在my.emacs中插入

(添加到列表“组织文件应用程序”(“\\.odt\\\”、“xdg打开%s”))
我在访问org文件中的文件链接时会正确地打开它们,但这似乎不会影响导出和查看选项。我已经研究过将
组织odt导出更改为odf并打开
,但没有发现它有什么不同。任何帮助都将不胜感激。再一次,我希望
org odt导出为odf,并使用xdg open或libreoffice打开odf,而不是使用Emacs

谢谢

用于导出OpenDocument公式(
.odf
文件),而不是OpenDocument文本文档(
.odt
文件):

由于导出的文件没有
.odt
扩展名,因此添加到
org file apps
不会影响它

我看不到任何内置函数可以将组织模式文档导出到libreofficewriter文件并打开它们,但编写起来很简单:

(将我的组织导出到odt并打开()
(互动)
(组织打开文件(组织odt导出到odt)))

编辑在组织模式列表中提供了一个更优雅的解决方案,它不需要编辑任何打包的组织文件。只需将以下内容添加到.emacs中,即可重新绑定“系统”正在执行的操作:

(setcdr(assq'system-org-file-apps-defaults-gnu)“xdg-open%s”)
当前版本的代码中有错误。可通过编辑ox-odt.el的第97行进行修复: :菜单项 “(?o“导出到ODT” ((?o“作为ODT文件”组织ODT导出到ODT) (?O“作为ODT文件并打开” (兰姆达(a s v b) (如果是a(组织odt导出到odt s v) (组织开放文件(组织odt导出到odt nil s v)‘系统‘‘‘‘‘‘‘‘‘‘‘‘‘‘) 通过删除最后一个“系统”,您可以: :菜单项 “(?o“导出到ODT” ((?o“作为ODT文件”组织ODT导出到ODT) (?O“作为ODT文件并打开” (兰姆达(a s v b) (如果是a(组织odt导出到odt s v) (组织开放文件(组织odt导出到odt nil s v)()()()())()())40 如果您使用的是编译版本,则可能还需要等效地编辑ox-odt.elc。
我尝试过WorldsEndless的解决方案,但它对我不起作用,而是使用了这种变体

(setcdr (assq 'system org-file-apps-defaults-gnu ) '(call-process "xdg-open" nil 0 nil file))

好奇。C-cC-eo确实说“导出到ODT->作为ODT文件并打开”,所以一定是调用了错误的东西。但是输出文件肯定是一个ODT文件(它位于目录中)。为什么您的代码可以工作但不能工作?您是对的,
C-C-e o
被描述为导出“作为ODT文件并打开”。我不确定运行的是什么功能(我无法确定组织导出调度器)。我几乎可以肯定的是,它没有运行
orgodtexport-asodf和open
,因为该函数肯定适用于OpenDocument公式。但那个绑定确实有效,在我的机器上启动LibreOffice。啊,你们找到了!我不知道为什么内置代码在你的机器上不起作用。事实上,它在我的应用程序上运行得很好,甚至不需要修改
org文件应用程序
。您的组织版本是什么?组织模式版本8.2.6(8.2.6-73-g88f262-elpa
(setcdr (assq 'system org-file-apps-defaults-gnu ) '(call-process "xdg-open" nil 0 nil file))