Emacs. Пакет doc-toc
2025-05-10
·
2 мин. для прочтения
Emacs. Пакет doc-toc.
Содержание
1 Общая информация
- ELPA: https://elpa.gnu.org/packages/doc-toc.html
- Репозиторий: https://github.com/dalanicolai/doc-tools-toc
1.1 Предыдущий вариант пакета
- Название:
- Репозиторий: https://github.com/dalanicolai/toc-mode
- Оставлен для совместимости.
- Чтобы пакеты, использующие его, не перестали работать.
2 Установка
- Зависимости:
pdftotext
(из пакетаpoppler-utils
),pdfoutline
(изfntsample
),djvused
(для DjVu),tesseract
(для OCR, если документ без текстового слоя);- pdf-tocgen (см. Pdf. Оглавление. pdf.tocgen).
- Gentoo:
- Основной репозиторий:
USE=utils emerge app-text/poppler emerge app-text/djvu emerge app-text/tesseract
- Оверлей:
4nykey
иkarma
(см. Gentoo. Дополнительные репозитории):emerge app-text/fntsample
- Основной репозиторий:
3 Использование
- Извлечение и добавление содержимого в документ выполняется в 4 этапа:
- извлечение
- очистка
- отрегулировать/исправить номера страниц
- добавить оглавление в документ
3.1 Извлечение оглавления
3.1.1 Для PDF с текстовым слоем
- Откройте PDF в Emacs (рекомендуется
pdf-tools
). - Выполните
M-x doc-toc-extract-pages
. - Укажите начальную и конечную страницы оглавления.
- Результат появится в буфере
TOC-cleanup
.
3.1.2 Для сканированных PDF/DjVu (через OCR):
- Выполните
M-x doc-toc-extract-pages-ocr
. - Укажите диапазон страниц и параметры OCR (например,
psm 1
для двухколоночного текста).
3.2 Очистка и настройка структуры
- В режиме
TOC-cleanup
:- Объедините строки без номеров:
C-c C-j
. - Преобразуйте римские цифры в арабские:
C-c C-s
. - Используйте
C-c C-c
для перехода к следующему шагу.
- Объедините строки без номеров:
3.3 Корректировка номеров страниц
- В режиме
doc-toc-mode
:- Перемещайтесь по записям:
TAB
(предпросмотр страницы). - Изменяйте номера:
S-right
/S-left
(увеличить/уменьшить). - Прокрутка документа:
C-down
/C-up
.
- Перемещайтесь по записям:
3.4 Добавление оглавления в документ
- После настройки нажмите
C-c C-c
. - Для PDF:
- Оглавление добавится в копию файла (
output.pdf
). - Если
doc-toc-replace-original-file
=nil
, исходный файл не изменится.
- Оглавление добавится в копию файла (
3.5 Советы
- Для автоматического определения уровней заголовков:
- Выделите слово в заголовке.
- Выполните
M-x doc-toc-gen-set-level
→ укажите уровень (1, 2 и т.д.). - Запустите
M-x doc-toc-extract-with-pdf-tocgen
.
4 Пример конфигурации для двухколоночного TOC
;; Настройка языков OCR
(setq doc-toc-ocr-languages '("eng+rus"))
;; Не заменять исходный файл
(setq doc-toc-replace-original-file nil)
5 Клавиатурные сочетания
- all-modes
C-c C-c
: dispatch (next step)
- doc-toc-cleanup-mode
C-c C-j
: doc-toc–join-next-unnumbered-linesC-c C-s
: doc-toc–roman-to-arabic
- doc-toc (tablist)
TAB
: preview/jump-to-pageright
/left
: doc-toc-in/decrease-remainingC-right
/C-left
: doc-toc-in/decrease-remaining and view pageS-right
/S-left
: in/decrease pagenumber current entryC-down
/C-up
: scroll document other window (if document buffer shown)S-down
/S-up
: full page scroll document other window ( idem )C-j
: doc-toc–jump-to-next-entry-by-level