Как конвертировать файлы .md в .odt

Snimok yekrana ot 2024 04 22 15 29 09

Задача: конвертировать md-файл .md в .odt

.md — текстовые файлы с разметкой маркдаун (markdown)

.odt — текстовые файлы редактора Write из пакета LibreOffice

Вы можете использовать конвертер пандок (pandoc). Pandoc — универсальный конвертер документов. Если вам нужно конвертировать файлы из одного формата разметки в другой, pandoc — ваш швейцарский нож. Pandoc может конвертировать многие текстовые форматы в различные стороны преобразования.

Обратите внимание, откуда и куда конвертация происходит, и отмечено значками:

← = преобразование из; 
→ = преобразование в;
↔︎ = преобразование из и в.

Многим будет интересно, что есть такие виды конвертации:

  • ↔︎ Microsoft Word DOCX
  • ↔︎ Rich Text Format RTF
  • ↔︎ OpenOffice/LibreOffice ODT

Устанавливается pandoc в терминале, как всегда, просто:

sudo apt install pandoc

Популярные примеры

  1. ODT (OpenDocument Text, readable by OpenOffice):
    • pandoc MANUAL.txt -o example21.odt
  2. Word docx:
    • pandoc -s MANUAL.txt -o example29.docx
  3. Rich text format (RTF):
    • pandoc -s MANUAL.txt -o example7.rtf
  4. Converting a web page to markdown:
    • pandoc -s -r html http://www.gnu.org/software/make/ -o example12.md
  5. From markdown to PDF:
    • pandoc MANUAL.txt —pdf-engine=xelatex -o example13.pdf

И ещё больше примеров: https://pandoc.org/demos.html

Возможное применение

В Linux вы можете добавить в меню файлового менеджера новое действие, например:

pandoc %U -o %u.odt && rename 's/md.odt/odt/g' *

Кто-то предпочтёт более универсальное:

"cat %U >> Archiv/$(basename "%u") && sed -i -e 's@<span class="symbol">\&#58771;<\/span>@[\&#58771;]{custom-style="symbol"}@g' -e 's@<span class="symbol">\&#58772;<\/span>@[\&#58772;]{custom-style="symbol"}@g' -e 's@<span class="symbol">\&#58773;<\/span>@[\&#58773;]{custom-style="symbol"}@g' -e 's@<span class="symbol">\&#58774;<\/span>@[\&#58774;]{custom-style="symbol"}@g' %U && pandoc -t odt+smart --lua-filter odt-custom-styles.lua %U -o %u.odt --reference-doc="default.ott" && rename 's/md.odt/odt/g' *

где defaul.ott (шаблон LibreOffice по умолчанию, чтобы получить файл odt с нужными стилями) связан символической ссылкой из папки /home/%USERNAME%/Шаблоны, где у меня есть файлы md.

Рекомендую предпочитать последнюю версию pandoc, которая распознает фильтры.

На github последняя версия: https://github.com/jgm/pandoc

Ссылки