Hi all, I'm experimenting with `org-link-set-parameters' to create multilingual quotes (chunks of text) inside paragraphs. Although I focus mainly on the export to LaTeX with babel and csquotes packages, I also want extend support for HTML and odt output. I leave here some sketches.
For the `:face' parameter I use for laziness a face already defined in Magit :-). `:display' with the value 'full can be removed. First, we have the LaTeX babel command \foreignlanguage{lang}{chunk of text}. The language can be expressed by abbreviation ("de" for German; here I reuse `org-latex-babel-language-alist') or explicitly preceded by a "!": "!german" (the reason for the latter is that in babel we can define new languages): [[lang:de][some text in German]] or [[lang:!german][some text in German]] The code: (org-link-set-parameters "lang" :display 'full :face 'magit-header-line-key :export (lambda (target desc format) (cond ((eq format 'latex) (let ((langs org-latex-babel-language-alist)) (concat "\\foreignlanguage{" (if (string-match-p "!" target) (replace-regexp-in-string "!" "" target) (cdr (assoc target langs))) "}{" desc "}"))) ;; TODO ((or (eq format 'html) (eq format 'odt)) (format "%s" desc))))) We also have this command from the csquotes package for foreign quoted texts (loads only the hyphenation rules for the language and sets the text between quotation marks): \hyphentextquote{lang}{quoted text}. For this I have defined a new link "qlang": (org-link-set-parameters "qlang" :display 'full :face 'magit-header-line-key :export (lambda (target desc format) (cond ((eq format 'latex) (let ((langs org-latex-babel-language-alist)) (concat "\\hyphentextquote{" (if (string-match-p "!" target) (replace-regexp-in-string "!" "" target) (cdr (assoc target langs))) "}{" desc "}"))) ((or (eq format 'html) (eq format 'odt)) ;; TODO (use here the proper quotes) (format "«%s»" desc))))) We can even make the citations come out in color when we are in draft mode, thanks to the LaTeX ifdraft package: (org-link-set-parameters "qlang" :display 'full :face 'magit-header-line-key :export (lambda (target desc format) (cond ((eq format 'latex) (let ((langs org-latex-babel-language-alist)) (concat "{\\ifdraft{\\color{teal}}{}\\hyphentextquote{" (if (string-match-p "!" target) (replace-regexp-in-string "!" "" target) (cdr (assoc target langs))) "}{" desc "}}"))) ((or (eq format 'html) (eq format 'odt)) ;; TODO (format "«%s»" desc))))) Best regards, Juan Manuel