настройка `org-publish-project-alist`

Я пытаюсь опубликовать веб-страницу в организационном режиме. Два вопроса:

  1. Есть ли способ «синхронизировать» файлы организационного режима в base-directory и файлы html в publishing-directory? В частности, если я удалю org-файл в base-directory, могу ли я заставить org-publish-html также удалить соответствующий файл в html-каталоге?
  2. Если у меня есть страницы в подкаталогах, как я могу указать один файл .css в корневом каталоге, который будет использоваться для таблицы стилей? Например, моя структура каталогов выглядит следующим образом:

    public_html/

    • css/
      • mystyle.css
    • index.html
    • subdir/
      • index.html

Со следующими спецификациями в org-publish-project-alist (это всего лишь подмножество) --

:publishing-directory "public_html"
:style "<link rel=\"stylesheet\" href=\"css/mystyle.css\" type=\"text/css\"/>"

mystyle.css используется public_html/index.html, но не public_html/subdir/index.html. Есть ли простое средство от этого (я хочу, чтобы таблица стилей использовалась обоими/всеми файлами в подкаталогах)?

Большое спасибо ~


person hatmatrix    schedule 07.03.2011    source источник


Ответы (1)


  1. Не существует простого способа сделать это. Org-mode не знает (или не заботится) о местоположении, в котором оно публикуется, — оно просто отправляет данные туда и следит за тем, чтобы существовала правильная структура каталогов. В процессе публикации есть хук, который вызывается после того, как файлы были отправлены в их опубликованное местоположение. Это контролируется установкой свойства :completion-function в файле org-publish-project-alist. Вы можете использовать этот хук для написания функции, которая сравнивает файлы *.org в вашем base-dir и подкаталогах с соответствующими опубликованными файлами *.html и удаляет эти *.html, у которых нет сопровождающего файла *.org.

    Я подозреваю, что проще всего это сделать, заставив ваш Лисп completion-function вызывать сценарий оболочки, удаляющий необходимые файлы. Если вы делаете что-то необычное со свойствами :include, :exclude или :base-extension, вы, вероятно, захотите, чтобы ваш completion-function извлек соответствующую информацию из plist и затем передал ее вашему сценарию оболочки. Эта страница организационного режима содержит пример completion-function который показывает, как получить значения свойств для org-publish-project-alist. Затем вам нужно будет передать их в сценарий оболочки.

  2. #P3#
    #P4#
    #P5# #P6# #P7#
person cm2    schedule 26.02.2012