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