Orgtbl mode has built-in translator functions: orgtbl-to-csv
(comma-separated values), orgtbl-to-tsv
(TAB-separated values),
orgtbl-to-latex
, orgtbl-to-html
, orgtbl-to-texinfo
,
orgtbl-to-unicode
and orgtbl-to-orgtbl
. They use the generic
translator, orgtbl-to-generic
, which delegates translations to
various export back-ends.
Properties passed to the function through the ‘ORGTBL SEND’ line take
precedence over properties defined inside the function. For example,
this overrides the default LaTeX line endings, \\
, with \\[2mm]
:
#+ORGTBL: SEND test orgtbl-to-latex :lend " \\\\[2mm]"
For a new language translator, define a converter function. It can be a generic function, such as shown in this example. It marks a beginning and ending of a table with ‘!BTBL!’ and ‘!ETBL!’; a beginning and ending of lines with ‘!BL!’ and ‘!EL!’; and uses a TAB for a field separator:
(defun orgtbl-to-language (table params) "Convert the orgtbl-mode TABLE to language." (orgtbl-to-generic table (org-combine-plists '(:tstart "!BTBL!" :tend "!ETBL!" :lstart "!BL!" :lend "!EL!" :sep "\t") params)))
The documentation for the orgtbl-to-generic
function shows
a complete list of parameters, each of which can be passed through to
orgtbl-to-latex
, orgtbl-to-texinfo
, and any other function using
that generic function.
For complicated translations the generic translator function could be
replaced by a custom translator function. Such a custom function must
take two arguments and return a single string containing the formatted
table. The first argument is the table whose lines are a list of
fields or the symbol hline
. The second argument is the property
list consisting of parameters specified in the ‘#+ORGTBL: SEND’ line.
Please share your translator functions by posting them to the Org
users mailing list, at emacs-orgmode@gnu.org.