
Читаем fb2 с помощью Emacs
FictionBook — формат представления электронных версий книг в виде XML-документов, где каждый элемент книги описывается своими тегами. Стандарт призван обеспечить совместимость с любыми устройствами и форматами. В поисках читалки книг формата fb2, я наткнулся на много достаточно неплохих проектов под Linux, их можно выделить:
- FBReader
- colibre (хотя это больше, чем просто читалка)
Но мне не очень хотелось городить огород из разношёрстного софта и я задался вопросом, а можно ли просматривать fb2 с помощью Emacs. В сети нашёл несколько решений, но они были кривые и я решил их доработать и допилить под мои нужды. Зная немного Lisp и Emacs, решение практически нашлось сразу и заняло всего 15 минут.Я не стал заморачиваться с вложенными изображениями в формат ибо мне это ненужно (возможно позже допилю :) хотя особой нужды нет!)
Приступаем к красноглазию :)
- Добавляем строки в .emacs (если его нет в вашем домашнем каталоге , то создайте)
;Авто определение формата по расширению файла (add-to-list 'auto-mode-alist '(".fb2$" . fb2-mode-view)) ;Функция для файлов .fb2 в режиме просмотра (defun fb2-mode-view() (vc-toggle-read-only) (interactive) (sgml-mode) (sgml-tags-invisible 0)) ;Функция для файлов .fb2 в режиме редактирования (defun fb2-mode-edit() (vc-toggle-read-only nil) (interactive) (sgml-mode) (sgml-tags-invisible 0))
- Запускаем Emacs
- Открываем файл fb2 с помощью С-x C-f или задать при запуске файл:
emacs book.fb2
Функции для работы с FictionBook:
Чтобы вызвать функцию в Emacs нажмите M-x
Вот так это выглядит
Как видно из скрина, то что нет разницы между заголовками и самим текстом, т.ч это не айс, но как я говорил выше, то меня это не напрегает. Возможно я сделаю чуть позже всё "как надо", но это уже зависит от моей лени :D