среда, 2 сентября 2015 г.

Экспорт страницы ORG-MODE с кодом в формат HTML из командной строки с раскраской

В редакторе Emacs при работе с документом ORG-MODE есть замечательная возможность экспорта документа в HTML-страницу для последующей публикации в сети. Документ может содержать блоки с кодом и они корректно экспортируются с замечательной подсветкой синтаксиса. Экспорт можно выполнить из редактора (C-c C-e h h), а можно из командной строки. Именно с последним способом у меня возникли проблемы.

Проблема заключается в том, что программы экспортируются без цветной раскраски синтаксических единиц. В дискуссии обнаружился следующий текст:

----
| org-html-htmlize-output-type is a variable defined in `ox-html.el'.
| Its value is inline-css
| 
| Documentation:
| Output type to be used by htmlize when formatting code snippets.
| Choices are `css', to export the CSS selectors only, or `inline-css', to
| export the CSS attribute values inline in the HTML.  We use as default
| `inline-css', in order to make the resulting HTML self-containing.
| 
| However, this will fail when using Emacs in batch mode for export, because
| then no rich font definitions are in place.  It will also not be good if
| people with different Emacs setup contribute HTML files to a website,
| because the fonts will represent the individual setups.  In these cases,
| it is much better to let Org/Htmlize assign classes only, and to use
| a style file to define the look of these classes.
| To get a start for your css file, start Emacs session and make sure that
| all the faces you are interested in are defined, for example by loading files
| in all modes you want.  Then, use the command
| M-x org-html-htmlize-generate-css to extract class definitions.
`----

Использовался Emacs версии 24.3 с ORG-MODE версии 8.2.5. Операционная система OS X Maverics

В результате я последовал рекомендации и пришел к следующей последовательности действий:


  • Открываем документ org с программой и делаем экспорт CSS: 

        M-x org-html-htmlize-generate-css

  • Полученный буфер с CSS сохраняем в файл, например 1.css
  • Вставляем в преамбулу ORG-MODE документа ссылку на полученный CSS-файл: #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="1.css" />
  • составляем нехитрый BASH-файл с командой конвертации (пути к своим файлам нужно скорректировать): 

FILE=$1
ORG2014="/Users/iMac/.emacs.d/elpa/org-20140127/"
EMACS="/Applications/Emacs.app/Contents/MacOS/Emacs"

if ! test -f $FILE
then
  help
else
  echo "converting file $FILE"
  $EMACS   --batch \
    --eval "(add-to-list 'load-path \"$ORG2014\")" \
    --load "/Users/iMac/.emacs.d/htmlize" \
    --load "/Users/iMac/.emacs" \
    --eval "(setq org-html-htmlize-output-type 'css)" \
           --visit=$FILE --funcall org-html-export-to-html
fi  



  • Далее можно запускать разработанный командный файл, передавая ему в качестве параметра имя ORG-документа. После конвертации в текущем каталоге появится html-страница с полноценной раскраской кода.


Комментариев нет:

Отправить комментарий