Matt Price <mopto...@gmail.com> writes: > do we have a syntax for the "small caps" text attribute in Org? If not, > should we? It is available in odt, html, and latex, and is used in some
I use the following filter(s) (second one is not essential). Example input: CO_2 fOO Fo1O /FoO/ Example output: \textsc{co}\(_{\text{2}}\) f\textsc{oo} \textsc{f}o1\textsc{o} \emph{\textsc{f}o\textsc{o}} For emph to play nice with textsc in latex use the slantsc package. (defun rasmus/org-guess-textsc (content backend info) "Automatically downcase and wrap all-caps words in textsc. The function is a bit slow... TODO: Make the function work with headlines, but without doing it on subsequent text. TODO: Add ODT support." (if (org-export-derived-backend-p backend 'latex 'html) (let* (case-fold-search (latexp (org-export-derived-backend-p backend 'latex)) (wrap (if latexp "\\textsc{%s}" "<span class=\"small-caps\">%s</span>"))) (replace-regexp-in-string "\\w+" (lambda (str) (if (or (string-equal str (downcase str)) (string-equal str (capitalize str))) str (replace-regexp-in-string "[[:upper:]]+" (lambda (x) (format wrap (downcase x))) str t t))) content t t)) content)) (add-to-list 'org-export-filter-plain-text-functions 'rasmus/org-guess-textsc) (defun rasmus/org-guess-textsc-html-cleanup-title (content backend info) (when (org-export-derived-backend-p backend 'html) (replace-regexp-in-string "<title>\\(.*\\)</title>" (lambda (str0) (format "<title>%s</title>" (replace-regexp-in-string "<span class=\"small-caps\">\\(.*?\\)</span>" (lambda (str) (upcase (match-string 1 str))) (match-string 1 str0)))) content))) -- ⠠⠵