emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] small caps


From: Thomas S . Dye
Subject: Re: [O] small caps
Date: Thu, 29 Oct 2015 06:55:18 -1000
User-agent: mu4e 0.9.12-1c98835; emacs 24.5.1

Aloha Matt,

Nicolas Goaziou <address@hidden> writes:

> Hello,
>
> Matt Price <address@hidden> writes:
>
>> do we have a syntax for the "small caps" text attribute in Org?
>
> No, we don't.
>

I've been using this export filter, written by Eric Schulte.  It works
fine for my uses.

**** Eric Schulte's filter for HTML small caps

#+name: es-small-caps
#+begin_src emacs-lisp
;;; "sc" links for the \sc{} latex command
(defun org-export-html-small-caps (string backend channel)
  (when (org-export-derived-backend-p backend 'html)
    (let ((rx "{\\\\sc ")
          (fmt "<span style=\"font-variant:small-caps;\">%s</span>"))
      (with-temp-buffer
        (insert string)
        (goto-char (point-min))
        (while (re-search-forward rx nil t)
          (let* ((start (match-beginning 0))
                 (end (progn (goto-char start)
                             (forward-sexp)
                             (point)))
                 (content (buffer-substring (+ start 5) (- end 1))))
            (delete-region start end)
            (goto-char start)
            (insert (format fmt content))))
        (buffer-string)))))

(add-to-list 'org-export-filter-final-output-functions
             'org-export-html-small-caps)

(defun org-export-latex-sc (tree backend info)
  "Handle sc: links for latex export."
  (org-element-map tree 'link
    (lambda (object)
      (when (equal (org-element-property :type object) "sc")
        (org-element-insert-before
         (cond
          ((org-export-derived-backend-p backend 'latex)
           (list 'latex-fragment
                 (list :value (format "{\\sc %s}"
                                      (org-element-property :path object))
                       :post-blank (org-element-property
                                    :post-blank object))))
          ((org-export-derived-backend-p backend 'html)
           (list 'export-snippet
                 (list :back-end "html"
                       :value
                       (format "<span class=\"sc\">%s</span>"
                               (org-element-property :path object))
                       :post-blank
                       (org-element-property :post-blank object))))
          (:otherwise
           (error "unsupported backend for `org-export-latex-sc'")))
         object)
        (org-element-extract-element object))))
  tree)

(org-add-link-type "sc")

(add-hook 'org-export-filter-parse-tree-functions
          'org-export-latex-sc)

#+end_src

hth,
Tom

-- 
Thomas S. Dye
http://www.tsdye.com



reply via email to

[Prev in Thread] Current Thread [Next in Thread]