Emacs 有没有可以看epub格式的插件呢?

想用Emacs看一本epub格式的书.

虽然Win下面有许多程序可以看, 但是考虑到可能要翻译字词或者做做笔记什么的, 于是就想和 Emacs 结合一下, 但是直接打开似乎是无法做到, 默认的功能也没有 epub 相关的mode 所以请教一下论坛, 有没有类似的解决方案呢? 谢谢~

https://www.emacswiki.org/emacs/epubmode.el

不好意思,不支持 Windows。需要 Cygwin 之类的。

https://github.com/bddean/emacs-ereader/blob/master/ereader.el

找了一圈,这个看起来还靠谱。

nov.el ,由 Evil maintainer 开发的,似乎只是需要PATH 路径安装了 unzip。

1赞

嗯嗯, 在 package list 里面找到了, 不过打开文件的时候error了:joy:

path 设置了 unzip.

不过打开报了一个错

nov-mode: EPUB extraction failed with exit code 9 Mark set

内容也是一些乱码, 看起来好像是编码的问题.

还是谢谢回答

真是非常抱歉,一年多了还来挖坟 :rofl:

今天正好试用了这个包,也遇到了和楼主一样的问题。我发现这是 unzip 解压失败导致的,只发生在 「Windows + 中文文件名」这种情况下。以下设置可以解决这个问题:

(with-eval-after-load "nov"
  (when (string-equal system-type "windows-nt")
    (setq process-coding-system-alist
          (cons `(,nov-unzip-program . (gbk . gbk))
                process-coding-system-alist))))

具体的原理我还没弄得很清楚,但基本可以确定是「coding system for subprocess I/O」的问题。

5赞

因为windows的中文是用gbk编码的。emacs里默认utf8

1赞

呃,用第二个在Windows10上打开好几本书都只有一片空白,不知道原因…

在win10下用这个能看一些书,但Springer出的一些材料类的epub用它打开都只能看目录,在章节上一回车,Emacs就死在那儿了…

成功解决问题…感谢感谢…

有时候打开 epub 无法处理 unicode 字符,可以用下面这个 workaround

;; FIXME: errors while opening `nov' files with Unicode characters
(with-no-warnings
    (defun my-nov-content-unique-identifier (content)
      "Return the the unique identifier for CONTENT."
      (when-let* ((name (nov-content-unique-identifier-name content))
                  (selector (format "package>metadata>identifier[id='%s']"
                                    (regexp-quote name)))
                  (id (car (esxml-node-children (esxml-query selector content)))))
        (intern id)))
    (advice-add #'nov-content-unique-identifier :override #'my-nov-content-unique-identifier))
3赞

这段代码加上后,各种问题都解决了… 包括之前从目录进章节导致Emacs停止响应的那本书, 也能打开了… 感觉很神奇的样子… 谢谢。

可惜作者不愿意改,说书的格式不正确就应该报错。幸亏 Emacs,我可以自己改了。

1赞