В редакторе Emacs при работе с документом ORG-MODE есть замечательная возможность экспорта документа в HTML-страницу для последующей публикации в сети. Документ может содержать блоки с кодом и они корректно экспортируются с замечательной подсветкой синтаксиса. Экспорт можно выполнить из редактора (C-c C-e h h), а можно из командной строки. Именно с последним способом у меня возникли проблемы.
Проблема заключается в том, что программы экспортируются без цветной раскраски синтаксических единиц. В дискуссии обнаружился следующий текст:
Использовался Emacs версии 24.3 с ORG-MODE версии 8.2.5. Операционная система OS X Maverics
В результате я последовал рекомендации и пришел к следующей последовательности действий:
Проблема заключается в том, что программы экспортируются без цветной раскраски синтаксических единиц. В дискуссии обнаружился следующий текст:
---- | 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-страница с полноценной раскраской кода.
Комментариев нет:
Отправить комментарий