Вы можете сделать это, как это с помощью пользовательского блока в орг-режиме:
+ begin_bclogo
некоторый текст здесь
+ end_bclogo
Затем используйте фильтр, чтобы изменить экспорт следующим образом:
(defun ox-mrkup-filter-special-block (text back-end info)
(let ((text (replace-regexp-in-string "\\\\begin{bclogo}" "\\\\begin{bclogo}[logo=\\\\bcattention, noborder=true, barre=none]{" text)))
(replace-regexp-in-string "\\\\end{bclogo}" "}\\\\end{bclogo}" text)))
(let ((org-export-filter-special-block-functions '(ox-mrkup-filter-special-block)))
(find-file (org-export-to-file 'latex "custom.tex")))
Этот экспорт в:
\begin{bclogo}[logo=\bcattention, noborder=true, barre=none]{
some text here
}\end{bclogo}
Это похоже на то, что вы хотите. Я не уверен, как вы можете получить тело в окружающей среде. Я думаю, вам нужно будет использовать атрибут для установки текста в {}, а затем использовать текст как тело. Это, вероятно, непросто реализовать в фильтре и лучше реализовать в пользовательском экспорте.
John благодарит за ваш ответ. Этот скрипт работает, но мне нужно создать среду 'NOTE', так как документ должен быть экспортирован в html и Latex. Поэтому мой вопрос может быть лучше: есть ли способ изменить окружение '# + BEGIN NOTE # + END NOTE' способом, подобным' FIGURE', чтобы вставить атрибут Latex? –
Вы можете использовать внутреннюю переменную в фильтре, чтобы делать латексные или html-конкретные вещи в блоке cond. Каким должен выглядеть код html для экспорта? Возможно, вам придется подумать о создании специализированного экспортера, хотя это будет создавать то, что вы хотите для специальных блоков, с помощью специального кода. –