emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] Export tables as matrices (change tbl-export function on the fly


From: Rasmus
Subject: Re: [O] Export tables as matrices (change tbl-export function on the fly)
Date: Sun, 18 Nov 2012 12:50:02 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.2.50 (gnu/linux)

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 ¹ 

> 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{·}{·} 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

> 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. 

> 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.  

>>      - 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: 
    smallmatrix from which all variants be generated using
    appropriated \left "bracket" \right "bracket"
 mathtools provides:
     smallmatrix*
     psmallmatrix 
     psmallmatrix*
     bsmallmatrix 
     bsmallmatrix*
     Bsmallmatrix 
     Bsmallmatrix*
     vsmallmatrix 
     vsmallmatrix*
     Vsmallmatrix 
     Vsmallmatrix*
     smallmatrix*

so I think it covers all variants except "small bordermatrix" and
"small arrary".

Thanks,
Rasmus

Footnotes: 
 ¹   Adding the function function in the second post, the following
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

-- 
A page of history is worth a volume of logic



reply via email to

[Prev in Thread] Current Thread [Next in Thread]