У меня есть много документов в виде org-файлов, которые имеют свойство CUSTOM_LABEL, например
* Introduction
:PROPERTIES:
:CUSTOM_LABEL: AP 1
:END:
В этом случае файлы должны быть экспортированы как LaTeX, переводя каждый CUSTOM_LABEL
как \label{marker}
. Приведенный выше пример следует перевести на \label{AP 1}
.
Я уже знаю, как вызывать пользовательские функции во время экспорта, но я не достаточно опытен, чтобы написать defun для выполнения этого конкретного преобразования, то есть CUSTOM_LABEL
->\label{}
Как может defun вводить custom_label
как \label{}
написано?
Я был бы признателен даже за некоторый псевдокод или несколько указателей.
Я задаю этот вопрос здесь, а не в других местах, потому что это больше вопрос Emacs, так как я тщательно искал руководство по режиму org, и такая функция в настоящее время недоступна.
Универсальная функция для преобразования заданной НЕДВИЖИМОСТИ при экспорте (LaTeX, HTML или любой другой формат) была бы еще лучше.
Спасибо.
emacs-orgmode
списке (среди прочего, lists.gnu.org/archive/html/emacs-orgmode/2014-09/msg00498.html ). Я попробовал этот код, и просто настройкиorg-latex-custom-id-as-label
. Он отлично работает с экспортом HTML, но не влияет на экспорт LaTeX. Я хотел бы полагаться только наorg-mode
основные функции, но мне все равно нравится ответ @ malababrba, так как он позволяет сделать хорошее обобщение.\section{h}\label{sec-1}
что я используюGNU Emacs 24.3.94.1 (x86_64-apple-darwin13.4.0, NS apple-appkit-1265.21) of 2014-10-04 on builder10-9.porkrind.org
иOrg-mode version 8.2.6 (release_8.2.6-1 @ /Applications/Emacs.app/Contents/Resources/lisp/org/)
. Кроме того, чтобы убедиться, что я переименовал мой .emacs.d, так что он работал без каких-либо пользовательских вещей.org-mode
используя этотel-get
рецепт: github.com/dimitri/el-get/blob/master/recipes/org-mode.rcp , но я все еще получаю.Org-mode version 8.2.6 (release_8.2.6-1 @ /Users/gsl/.emacs.d/el-get/org-mode/lisp/
Вы знаете, как настроить этот рецепт, чтобы я мог использовать его для DEV-ветвь? Я мог бы также задать это как новый вопрос. Большое спасибо за указание на это.Ответы:
Я написал функцию, которая делает то, что вы хотите, вполне расширяемым образом. Он проверяет, какие заголовки содержат свойство
CUSTOM_LABEL
(или другое настраиваемое свойство), и вызывает функциюendless/insert-org-label-latex
для каждого из них со значением свойства в качестве аргумента.Фрагмент примера также показывает, как расширить его для HTML или других бэкэндов.
Настройте замены
С помощью этой переменной вы можете настроить свойства, которые вас интересуют, и какие функции вызываются для обработки каждого свойства.
Тяжелый рабочий
Эта функция - то, что вы должны добавить в хук экспорта org. Он заботится о проверке перечисленных выше свойств и вызове функций, связанных с этими свойствами.
Функции, которые вы определяете
Это те, которые делают фактическую замену. Ниже приведен пример для латекса.
Результат
Оцените весь этот код выше, затем экспортируйте следующий буфер org в латекс.
Полученный латексный буфер должен быть примерно таким.
источник
Обратите внимание на фрагменты кода вы должны использовать текущую разработку-версию,
(org-version) => "8.3beta"
.Пожалуйста, используйте
CUSTOM_ID
и внутреннюю ссылку. См(info "(org) Handling links")
.В большинстве случаев вас не должно беспокоить экспортированный результат внутреннего именования в Org. Ссылки на рисунки и заголовки, скажем, будут правильными при экспорте. См
(info "(org) Internal links")
.Для LaTeX попробуйте:
Результат:
В экспортерах такие как
ox-odt
иox-html
заголовки содержат как внутренний идентификатор, такID
иCUSTOM_ID
. Какая ссылка используется, зависит от ссылки:Результат:
источник
CUSTOM_ID
, в то же время используя @ malabarba для передачи любого другого свойства org. Я на самом деле использую его таким образом, чтобы передать несколько других свойств (таких как cite-keys, жанр, место проведения и т. Д.), КромеCUSTOM_ID
.Я не уверен, но вам, вероятно, нужно посоветовать или даже переписать функцию экспортера. Это в Орг 8
org-latex-export-headline
.Функция получает элемент заголовка, содержимое заголовка и список дополнительных свойств. В функции экспортера вы можете получить свойства элемента (включая вашу пользовательскую метку) с помощью
org-element-property
.источник
org
экспортер не слишком много работает с советами, а скорее создаетfilter
функции для вызова на определенной стадии процесса экспорта, примерно так: `` `(eval-after -load 'ox-latex' (add-to-list 'org-export-filter-final-output-functions' my-filter-function)) `` `(Я не уверен, почему синтаксис обратной галочки не работает в комментариях?)