From mboxrd@z Thu Jan 1 00:00:00 1970 From: Nicolas Goaziou Subject: Re: Export tables as matrices (change tbl-export function on the fly) Date: Sun, 18 Nov 2012 14:20:51 +0100 Message-ID: <878v9zdp3g.fsf@gmail.com> 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> <87ehjr6sgl.fsf@pank.eu> 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]:42456) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Ta4s3-0007pz-HW for emacs-orgmode@gnu.org; Sun, 18 Nov 2012 08:25:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Ta4s0-0002wp-F1 for emacs-orgmode@gnu.org; Sun, 18 Nov 2012 08:25:11 -0500 Received: from mail-we0-f169.google.com ([74.125.82.169]:34923) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Ta4s0-0002v5-3t for emacs-orgmode@gnu.org; Sun, 18 Nov 2012 08:25:08 -0500 Received: by mail-we0-f169.google.com with SMTP id u3so1790981wey.0 for ; Sun, 18 Nov 2012 05:25:06 -0800 (PST) In-Reply-To: <87ehjr6sgl.fsf@pank.eu> (rasmus@gmx.us's message of "Sun, 18 Nov 2012 12:50:02 +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: Rasmus Cc: emacs-orgmode@gnu.org Rasmus writes: >> 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 That's because you use "booktabs" by default. It creates horizontal rules, and the filter hence doesn't apply. > 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 = insert > $'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 Since e-latex back-end doesn't strip anything in regular LaTeX snippets or environments, it should be the same here. Switching to math mode won't happen automatically, so the user can act appropriately. >> 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). :environment value is a string. It can be set to anything. > Array needs per column configuration.=20 That's not a problem, Org handles alignment per column already: | | | | a | b | | c | d | Also, every math environment but "array" ignores column separators. >> 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 Then the backend can add the alignment as an optional argument in math mode only when the name of the environment ends with a star and the alignment string is one character long. >> 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 To circumvent the problem, org-e-latex.el can use a defconst to store table/matrix environments requiring "\cr" instead of "\\" at the end of each row. It will, as a starter, only contain "bordermatrix". Any name to suggest for it? >>> - 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". Ok. Then the sanest approach is to allow :math-mode to be set to nil, t or `inline'. When `inline', as you suggest, it replaces \[...\] with \(...\) and ignores any label. But it still uses whatever environment is provided in :environment, that is, it won't make any guess about which one to use. Also, instead of using a single `org-e-latex-default-table-environment', its value can be a plist like the following: (:table-mode "tabular" :math-mode "bmatrix" :inline-math-mode "smallmatr= ix") What do you think about it? Regards, --=20 Nicolas Goaziou