2

I'm trying to migrate my current blogging platform (Pelican) where I wrote the posts using Markdown to a one based in org-mode (still considering how).

One of the problems that I found is that I have used the <abbr> HTML tag in several of my articles --thanks to the Markdown Extra markup *[abbr]: definition that I could use with Pelican-- but I can not find a way in org-mode to export that tag.

Is there any way to generate this tag from org-mode?

1 Answer 1

5

I guess the simplest way is to define a macro in your orgmode file with:

#+MACRO: abbr @@html:<abbr title="$1">$2</abbr>@@

You can then add an abbr in your text with:

{{{abbr(Definition, abbreviation)}}}

Edit:

This is probably the better solution: Add a special tag for abbr:

(defun org-export-abbr (backend)
  "Replace {abbreviation|description} to <abbr> html text in
current buffer"
  (when (equal backend 'html)
    (save-excursion
      (beginning-of-buffer)
      (replace-regexp "{\\(.*?\\)|\\(.*?\\)}"
                      "@@html:<abbr title=\"\\2\">\\1</abbr>@@"))))

(add-hook 'org-export-before-parsing-hook 'org-export-abbr)

This will replace occurence of {abbreviation|description} into an abbr tag on HTML export.

6
  • 2
    #+HTML does not work in-line. For inlining the format should be @@html:<abbr>@@ according to orgmode.org/manual/Quoting-HTML-tags.html#Quoting-HTML-tags
    – Juancho
    Commented May 22, 2015 at 22:17
  • It is not as nicest as the Markdown Extra solution but it works (if we do what @Juancho mentioned) and I suppose that I could make a snippet to make it easier to use. Thanks! Commented May 22, 2015 at 22:49
  • 1
    See my second solution. Probably a lot more convenient. @Juancho Thx for the correction. Commented May 22, 2015 at 22:56
  • 1
    Well, I don't know if there is a way to avoid to replace that expression on the SRC, EXAMPLE, LaTeX, blocks, etcetera but I had to make a tweak in the regexp to avoid to replace a Jinja expression like this {% foo|bar -%} by an HTML abbr tag in a SRC block. I took the easy way to do the trick: "{[^%]\\(.*?\\)|\\(.*?\\)}" Commented May 29, 2015 at 19:10
  • 1
    Sorry, I made a mistake in the previous comment with the regexp, the right one is this "{\\([^%].*?\\)|\\(.*?\\)}" Commented May 31, 2015 at 13:46

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.