Гиперссылки внутри блоков исходного кода org-babel?

Я хотел бы иметь несколько гиперссылок на комментарии к блоку исходного кода org-babel. Моя цель — экспортировать файл в формате html и иметь возможность отслеживать некоторые ссылки, как в следующем минимальном примере:

#+BEGIN_SRC lisp
(princ "Hello World!") ;; [[stackoverflow.com/blabla1234][Got this from SO.]]
#+END_SRC

«Проблема» в том, что ссылки не встраиваются в блоки исходного кода (что на самом деле имеет большой смысл).

Есть ли способ переопределить это поведение или альтернативный синтаксис для вставки гиперссылок в блоки src?


person dangom    schedule 18.05.2016    source источник


Ответы (1)


Вероятно, сейчас это невозможно (начиная с org-mode 8.3.4). Механизм экспорта HTML в настоящее время не имеет механизма экранирования защищенных символов. Вы должны отправить реализовать его или отправить запрос функции! (подробности)

Некоторые обходные пути:

Имитация вывода с помощью необработанного HTML

Вы можете вывести необработанный HTML-код, который в противном случае выглядел бы как исходный блок, и он будет отображаться с неповрежденной ссылкой:

#+BEGIN_HTML
<pre class="src src-sh">
(princ "Hello World!") ;; <a href="stackoverflow.com/blabla1234">Got this from SO.</a>
</pre>
#+END_HTML

Предотвратить замену Если в вашем коде нет символов больше и меньше, вы можете предотвратить их замену символами

(setq org-html-protect-char-alist '(("&" . "&amp;"))

или если это не работает:

(setq htmlize-basic-character-table
  ;; Map characters in the 0-127 range to either one-character strings
  ;; or to numeric entities.
  (let ((table (make-vector 128 ?\0)))
    ;; Map characters in the 32-126 range to themselves, others to
    ;; &#CODE entities;
    (dotimes (i 128)
      (setf (aref table i) (if (and (>= i 32) (<= i 126))
                   (char-to-string i)
                 (format "&#%d;" i))))
    ;; Set exceptions manually.
    (setf
     ;; Don't escape newline, carriage return, and TAB.
     (aref table ?\n) "\n"
     (aref table ?\r) "\r"
     (aref table ?\t) "\t"
     ;; Escape &, <, and >.
     (aref table ?&) "&amp;"
     ;;(aref table ?<) "&lt;"
     ;;(aref table ?>) "&gt;"
     ;; Not escaping '"' buys us a measurable speedup.  It's only
     ;; necessary to quote it for strings used in attribute values,
     ;; which htmlize doesn't typically do.
     ;(aref table ?\") "&quot;"
     )
    table))

Обратите внимание, что оба являются хаками, которые просто не избегают самих разделителей тегов HTML. Если подсветка синтаксиса применяется к каким-либо символам, результирующая ссылка HTML будет разорвана вставкой <span>.

person ebpa    schedule 24.05.2016