Hi, >> Perhaps something like the following would be OK? Nicholas? >> >> #+ATTR_HTML: :mode latex >> #+ATTR_LATEX: :mode math :environment pmatrix :math-prefix \mathbf{H}= >> | \vdots | 0 | \vdots | >> | \vdots | H | \vdots | >> | \vdots | 0 | \vdots | >> >> This would tell ox-html.el to transcode the table via ox-latex-tabel >> and feed the string via org-html-format-latex (assuming latex-frag is >> a string). > > FWIW, I think it's worth trying. I'm Cc'ing Rick Frankel for his > opinion. > >> Of course ox-html could also check out ATTR_LATEX but this >> would lead to a spurious solution since LaTeX ≠ HTML IMO. > > I agree. > >> Nicholas, if you want I can look into this. > > Certainly. Thank you.
I have attached a rough proof-of-concept that will export the above table correctly with mathjax. But I guess it will also have to handle it correctly in the case of static png images. I'm not sure how to handle captions. I guess the most natural way is to let org-latex-table handle is. Let me know if something like this is OK in which case I can polish it up and add documentation. –Rasmus -- . . . It begins of course with The Internet. A Net of Peers.
>From 036c06fc9f577b3d17e9caf7db366267bb4d28de Mon Sep 17 00:00:00 2001 From: Rasmus <w...@pank.eu> Date: Sat, 18 Jan 2014 20:48:28 +0100 Subject: [PATCH] latex-html output tables as latex --- lisp/ox-html.el | 105 +++++++++++++++++++++++++++++++------------------------- 1 file changed, 58 insertions(+), 47 deletions(-) diff --git a/lisp/ox-html.el b/lisp/ox-html.el index 8ea9e65..80ce53c 100644 --- a/lisp/ox-html.el +++ b/lisp/ox-html.el @@ -3286,54 +3286,65 @@ contextual information." (table.el (org-html-table--table.el-table table info)) ;; Case 2: Standard table. (t - (let* ((label (org-element-property :name table)) - (caption (org-export-get-caption table)) - (number (org-export-get-ordinal - table info nil 'org-html--has-caption-p)) - (attributes - (org-html--make-attribute-string - (org-combine-plists - (and label (list :id (org-export-solidify-link-text label))) - (and (not (org-html-html5-p info)) - (plist-get info :html-table-attributes)) - (org-export-read-attribute :attr_html table)))) - (alignspec - (if (and (boundp 'org-html-format-table-no-css) - org-html-format-table-no-css) - "align=\"%s\"" "class=\"%s\"")) - (table-column-specs - (function - (lambda (table info) - (mapconcat - (lambda (table-cell) - (let ((alignment (org-export-table-cell-alignment - table-cell info))) - (concat - ;; Begin a colgroup? - (when (org-export-table-cell-starts-colgroup-p - table-cell info) - "\n<colgroup>") - ;; Add a column. Also specify it's alignment. - (format "\n%s" - (org-html-close-tag - "col" (concat " " (format alignspec alignment)) info)) - ;; End a colgroup? - (when (org-export-table-cell-ends-colgroup-p - table-cell info) - "\n</colgroup>")))) - (org-html-table-first-row-data-cells table info) "\n"))))) - (format "<table%s>\n%s\n%s\n%s</table>" - (if (equal attributes "") "" (concat " " attributes)) - (if (not caption) "" - (format (if org-html-table-caption-above - "<caption class=\"t-above\">%s</caption>" - "<caption class=\"t-bottom\">%s</caption>") + (let ((mode (member :mode (org-export-read-attribute :attr_html table)))) + (cond + ((member-ignore-case "latex" mode) + (org-html-table--as-latex table contents info)) + (t + (let* ((label (org-element-property :name table)) + (caption (org-export-get-caption table)) + (number (org-export-get-ordinal + table info nil 'org-html--has-caption-p)) + (attributes + (org-html--make-attribute-string + (org-combine-plists + (and label (list :id (org-export-solidify-link-text label))) + (and (not (org-html-html5-p info)) + (plist-get info :html-table-attributes)) + (org-export-read-attribute :attr_html table)))) + (alignspec + (if (and (boundp 'org-html-format-table-no-css) + org-html-format-table-no-css) + "align=\"%s\"" "class=\"%s\"")) + (table-column-specs + (function + (lambda (table info) + (mapconcat + (lambda (table-cell) + (let ((alignment (org-export-table-cell-alignment + table-cell info))) (concat - "<span class=\"table-number\">" - (format (org-html--translate "Table %d:" info) number) - "</span> " (org-export-data caption info)))) - (funcall table-column-specs table info) - contents))))) + ;; Begin a colgroup? + (when (org-export-table-cell-starts-colgroup-p + table-cell info) + "\n<colgroup>") + ;; Add a column. Also specify it's alignment. + (format "\n%s" + (org-html-close-tag + "col" (concat " " (format alignspec alignment)) info)) + ;; End a colgroup? + (when (org-export-table-cell-ends-colgroup-p + table-cell info) + "\n</colgroup>")))) + (org-html-table-first-row-data-cells table info) "\n"))))) + (t (format "<table%s>\n%s\n%s\n%s</table>" + (if (equal attributes "") "" (concat " " attributes)) + (if (not caption) "" + (format (if org-html-table-caption-above + "<caption class=\"t-above\">%s</caption>" + "<caption class=\"t-bottom\">%s</caption>") + (concat + "<span class=\"table-number\">" + (format (org-html--translate "Table %d:" info) number) + "</span> " (org-export-data caption info)))) + (funcall table-column-specs table info) + contents))))))))) + +(defun org-html-table--as-latex (table contents info) + "Transcode TABLE into LaTeX code. +Suitable for transcoding Org tables into math matrices. " + (require 'ox-latex) + (org-latex-table table contents info)) ;;;; Target -- 1.8.5.3