From mboxrd@z Thu Jan 1 00:00:00 1970 From: Rasmus Subject: Re: Export tables as matrices (change tbl-export function on the fly) Date: Sun, 18 Nov 2012 12:50:02 +0100 Message-ID: <87ehjr6sgl.fsf@pank.eu> References: <877gpojl2s.fsf@pank.iue.private> <87y5i4yx2w.fsf@gmail.com> <87sj888in4.fsf@pank.eu> <87haoont2g.fsf@gmail.com> <87d2zc84nk.fsf@pank.eu> <87fw48lyoj.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([208.118.235.92]:47042) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Ta3O5-0001Xf-VN for emacs-orgmode@gnu.org; Sun, 18 Nov 2012 06:50:12 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Ta3O2-0004tn-AH for emacs-orgmode@gnu.org; Sun, 18 Nov 2012 06:50:09 -0500 Received: from mailout-eu.gmx.com ([213.165.64.43]:40573) by eggs.gnu.org with smtp (Exim 4.71) (envelope-from ) id 1Ta3O2-0004qG-1M for emacs-orgmode@gnu.org; Sun, 18 Nov 2012 06:50:06 -0500 In-Reply-To: <87fw48lyoj.fsf@gmail.com> (Nicolas Goaziou's message of "Sun, 18 Nov 2012 09:53:22 +0100") List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: n.goaziou@gmail.com Cc: emacs-orgmode@gnu.org Nicolas, Thanks for your reply. > I meant: what is the exact problem with my code (with examples and > expected output if possible)? It shouldn't be hard to fix. They are not caught by the regexp. And I wasn't able to find a regexp which could correctly identify all cases. I have a sample in the footnote= =C2=A0=C2=B9=20 > Forget the lisp translation function. At this level, the function > operates on parsed data. It doesn't use any orgtbl-to-* function. Also, > even if the ATTR_LATEX keyword applies on the table, it also affects how > `table-row' elements and `table-cell' objects are transcoded. OK, thanks for pointing out. > I suggest to use a :math-mode t. With this mode, all cells are > treated as raw math code (no transformation is made on any cell). Sounds good to me. However, should $'s be stripped? Say I have an org-table which I'm indecisive about. In one sell I might have a \frac{=C2=B7}{=C2=B7} in a cell; so in a normal table export I'd have to in= sert $'s, but in :math-mode I wouldn't. It could thus be expensive to go from :math mode to nil math mode. Hence, stripping $ might be appropriate > A global variable can also set it `org-export-latex-table-math-mode' > (default to nil). Nil by default for sure. > Then, the :environment keyword can be set to "tabular", "longtable", > "tabularx", "tabulary", "bmatrix", "pmatrix", "vmatrix", "kbordermatrix" > or "qbordermatrix". "bordermatrix", "array"... It would default to > `org-e-latex-default-table-environment' (default to "tabular"). and Bmatrix ({matrix}) and Vmatrix ( ||matrix||) and matrix (no decoration). Array needs per column configuration.=20 > What is the variable ALIGN? You mean :align keyword? Do matrix > environments accept alignment? Also I haven't heard about starred > version of these. What do they do? They allow you to align a matrix to [rlc] (and maybe others?) They are defined in mathtools. Here's an example (unrelated to tables): #+BEGIN_SRC latex \documentclass{article} \usepackage{amsmath,mathtools} \begin{document} $\max_{x}f(x)\quad\text{s.t. }\left\{\begin{matrix*}[r]g(x)\geq0\\h(x)+h(y)= \geq k\end{matrix*}\right.$ \end{document} #+END_SRC > From the syntax perspective, I see no difference between bordered > matrices and the others: they just use a different environment, which > can be provided through :environment keyword. Am I missing something? No. But they are typically macros. Note the use of cr which sometimes needs to be used in the bordermatrix (from TeX). It's not the case in kbordermatrix (which I use) and presumably qbordermatrix. #+BEGIN_SRC latex \documentclass{article} \begin{document} $\bordermatrix{&a&b&c\cr a&1&0&0\cr b&0&1&0\cr c&0&0&1}$ \end{document} #+END_SRC > The backend never adds any usepackage automatically. It is a can of > worms (incompatibilities, order of packages...). It's the responsibility > of the user to do so. I agree.=20=20 >> - Potentially: an :inline exists s.t. if inline is t the >> matrix is typeset inline [i.e. with \(\)]. Perhaps, it >> should be smart and use the small verison of >> org-export-latex-tables-matrix-default-type. I.e. if >> bmatrix use bsmallmatrix. This could be set via >> org-export-latex-tables-matrix-inline-small. > > Do all matrix environments accept a small counterpart? amsmath provides:=20 smallmatrix from which all variants be generated using appropriated \left "bracket" \right "bracket" mathtools provides: smallmatrix* psmallmatrix=20 psmallmatrix* bsmallmatrix=20 bsmallmatrix* Bsmallmatrix=20 Bsmallmatrix* vsmallmatrix=20 vsmallmatrix* Vsmallmatrix=20 Vsmallmatrix* smallmatrix* so I think it covers all variants except "small bordermatrix" and "small arrary". Thanks, Rasmus Footnotes:=20 =C2=A0=C2=B9 Adding the function function in the second post, the followi= ng examples all translates to tables #+BEGIN_SRC org #+NAME: t1 | my table | with rows | |----------+-----------| | a | 2 | | 5 | 3 | matrix | 1 | 2 | | 3 | 4 | #+NAME:t2 | 1 | 2 | | 3 | 4 | #+END_SRC and output (note in dirty Emacs [not -q]) #+BEGIN_SRC LaTeX \begin{table}[htb] \label{t1} \begin{center} \begin{tabular}{lr} \toprule my table & with rows\\ \midrule a & 2\\ 5 & 3\\ \bottomrule \end{tabular} \end{center} \end{table} matrix \begin{center} \begin{tabular}{rr} \toprule 1 & 2\\ 3 & 4\\ \bottomrule \end{tabular} \end{center} \begin{table}[htb] \label{t2} \begin{center} \begin{tabular}{rr} \toprule 1 & 2\\ 3 & 4\\ \bottomrule \end{tabular} \end{center} \end{table} #+END_SRC --=20 A page of history is worth a volume of logic