История изменений
Исправление theNamelessOne, (текущая версия) :
С запятой помог этот ответ: внутри code или verbatim окружаешь запятую ZERO WIDTH SPACE. Увы, тильду внутри code так ввести не получится.
Однако, следующий ответ в той же теме натолкнул на лучшее решение: можно написать фильтр, который будет преобразовывать entities при экспорте:
(require 'ox)
(require 'ox-ascii)
(require 'rx)
(defconst PtiCa:entity-regex
(rx "\\"
(group (one-or-more word))
(or "{}" word-boundary)))
(defvar PtiCa:backend-entity-position-alist
'((latex . 1)
(html . 3)
(ascii . 4)
(latin1 . 5)
(utf-8 . 6)))
(defun PtiCa:export-entities-in-code/verbatim (contents backend info)
(when (eq backend 'ascii)
(setf backend (or (plist-get info :ascii-charset)
org-ascii-charset)))
(let* ((pos (cdr (assq backend PtiCa:backend-entity-position-alist)))
(rep (lambda (match)
(let* ((entity (match-string 1 match))
(entity-spec (assoc entity org-entities))
(replacement (nth pos entity-spec)))
(or replacement match)))))
(replace-regexp-in-string PtiCa:entity-regex rep contents t t)))
(add-to-list 'org-export-filter-code-functions
#'PtiCa:export-entities-in-code/verbatim)
(add-to-list 'org-export-filter-verbatim-functions
#'PtiCa:export-entities-in-code/verbatim)
Особо не проверял, но этот код должен работать для html-, ascii-, latex-бэкендов + его можно расширить для кастомных бэкендов, модифицируя PtiCa:backend-entity-position-alist
и org-entities
.
Исходная версия theNamelessOne, :
С запятой помог этот ответ: внутри code или verbatim окружаешь запятую ZERO WIDTH SPACE. Увы, тильду внутри code так ввести не получится.
Однако, следующий ответ в той же теме натолкнул на лучшее решение: можно написать фильтр, который будет преобразовывать entities при экспорте:
(require 'ox)
(require 'ox-ascii)
(require 'rx)
(defconst PtiCa:entity-regex
(rx "\\"
(group (one-or-more word))
(or "{}" word-boundary)))
(defvar PtiCa:backend-entity-position-alist
'((latex . 1)
(html . 3)
(ascii . 4)
(latin1 . 5)
(utf-8 . 6)))
(defun PtiCa:export-entities-in-code/verbatim (contents backend info)
(when (eq backend 'ascii)
(setf backend (or (plist-get info :ascii-charset)
org-ascii-charset)))
(let* ((pos (cdr (assq backend PtiCa:backend-entity-position-alist)))
(rep (lambda (match)
(let* ((entity (match-string 1 match))
(entity-spec (assoc entity org-entities))
(replacement (nth pos entity-spec)))
(message "%s | %S" replacement replacement)
(or replacement match)))))
(replace-regexp-in-string PtiCa:entity-regex rep contents t t)))
(add-to-list 'org-export-filter-code-functions
#'PtiCa:export-entities-in-code/verbatim)
(add-to-list 'org-export-filter-verbatim-functions
#'PtiCa:export-entities-in-code/verbatim)
Особо не проверял, но этот код должен работать для html-, ascii-, latex-бэкендов + его можно расширить для кастомных бэкендов, модифицируя PtiCa:backend-entity-position-alist
и org-entities
.