|
| From: | Max Nikulin |
| Subject: | Re: Raw Org AST snippets for "impossible" markup |
| Date: | Wed, 8 Dec 2021 20:09:29 +0700 |
| User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.14.0 |
On 06/12/2021 22:45, Juan Manuel Macías wrote:
I understand that with this method the emphases could be nested, which it seems also very productive. I like it. I would suggest, however, not to use the term 'italics', since is a 'typographic' term, but a term that is agnostic of format and typography, something like as 'emphasis' or 'emph'. For example, in a format agnostic environment like Org, which is concerned only with structure, an emphasis is always an emphasis. But in a typographic environment that emphasis may or may not be be in italics. That is why in LaTeX you can write constructions like:
As you have guessed, It is not my choice, it is interface of ox.el and org-element.el.
However if you strongly want to use proper terminology in markup, you may try to trade it for +your soul+ compatibility and portability issues. The following almost works:
#+begin_src elisp :results silent
(defun orgia-link (link-data desc info)
(let* ((backend-struct (plist-get info :back-end))
(backend-name (org-export-backend-name backend-struct)))
(or
(org-export-custom-protocol-maybe link-data desc backend-name info)
(let* ((parent (org-export-backend-parent backend-struct))
(transcoders-alist (org-export-get-all-transcoders parent))
(link-transcoder (alist-get 'link transcoders-alist)))
(if link-transcoder
(funcall link-transcoder link-data desc info)
desc)))))
(defun evilatex-emph (_emph content info)
;; I have no idea yet why newline is appended.
(format "\\textit{%s}%%" content))
(org-export-define-derived-backend 'evilatex 'latex
:translate-alist '((emph . evilatex-emph)
(link . orgia-link)))
#+end_src
#+begin_src elisp
(let ((org-export-with-broken-links 'mark))
(org-export-string-as
"An [[orgia:(italic () \"ex\")]]ample of <orgia:(emph ()
\"inter\")>word and [[http://te.st][link]] [[unknown:prefix][desc]]!"
'evilatex t))
#+end_src
#+RESULTS:
: An \emph{ex}ample of \textit{inter}%
: word and \href{http://te.st}{link} [BROKEN LINK: unknown:prefix]!
Actually, I believe that something like orgia-link code should be added
by `org-exprot-define-derived-backend' if "link" is missed in
translate-alist. I suspect that `org-export-get-all-transcoders' may be
avoided.
(setq org-export-global-macros
'(("emph" . "(eval (my-macro-emph $1))")))
Sorry, I have not prepared better variant to solve comma in macro problem yet.
| [Prev in Thread] | Current Thread | [Next in Thread] |