emacs-orgmode
[Top][All Lists]
Advanced

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

Re: [Orgmode] allow table* specification with #+ATTR_LaTeX:


From: Eric Schulte
Subject: Re: [Orgmode] allow table* specification with #+ATTR_LaTeX:
Date: Thu, 16 Dec 2010 06:16:25 -0700
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux)

Hi Tom,

Thanks for the informative list.  I had no idea LaTeX supported so many
table options.  How about I update the patch so that is supports the
following sets of mutually exclusive options...
- longtable :: wraps the table in a longtable with no table or tabular
               wrappers -- already implemented
- table* :: replaces =table= wrapper with =table*= wrapper, contains an
            inner tabular wrapper
- tabular[xy] :: specifies the inner tabular wrapping environment, only
                 one can be specified

so for example, the following

#+begin_src org
  #+CAPTION: A wide table
  #+LABEL: tbl:wide
  #+ATTR_LaTeX: table* tabulary align=l|lp{3cm}r|l
  | ... | ... |
  | ... | ... |
#+end_src

results in the following

#+begin_src latex
  \begin{table*}[htb]
  \caption{A wide table} \label{tbl:wide}
  \begin{center}
  \begin{tabulary}{l|lp{3cm}r|l}
   1  &  2  &  3  \\
   4  &  5  &  6  \\
  \end{tabulary}
  \end{center}
  \end{table*}
#+end_src

Then the next question would be how to insert a =figure*= instead of a
simple =figure= environment.

Thanks -- Eric

Thomas S. Dye <address@hidden> writes:

> Hi Eric,
>
> It would be great to have a more general solution.  Tables are hard to
> typeset, so it might take a while to come up with a good
> specification.  Here is what I know about the LaTeX side of things.
>
> ** LaTeX destinations for an Org-mode table
> *** Environments for typesetting a table
>     - table placed in the output where it occurs in the input
>     - all of these environments can be used on their own
> **** tabular
>      standard LaTeX environment, doesn't break across pages, no caption
> **** tabularx
>      extended environment that can automatically calculate column
>      widths and wrap text within table cells, doesn't break across
>      pages, no caption
> **** tabulary
>      like tabularx, but tries harder to come up with optimal column
> widths
> **** supertabular
>      extended tabular environment that breaks across pages, includes
>      caption
> **** supertabular*
>      like supertabular, but for wide tables in a multicolumn page
>      layout
> **** mpsupertabular
>      like supertabular, but also handles footnotes within the table
> **** mpsupertabular*
>      like mpsupertabular, but for multicolumn page layouts
> **** longtable
>      extended tabular environment that breaks across pages and
>      includes a caption, but can't be used in a multicolumn page
>      layout
> *** Environment for floating a table and adding a caption
>     floats a table typeset by some other environment to a place in the
>     output that LaTeX determines appropriate, probably not where it
>     occurs in the input
> **** =table=, single column document
>      typically wraps a =tabular=, =tabularx=, or =tabulary= environment
> **** =table*=, multi-column document
>      typically wraps a =tabular=, =tabularx=, or =tabulary= environment
> *** "Typical" uses
>     In our report production work we regularly use seven setups:
>     - table or table* wrapped around tabularx or tabular
>     - longtable
>     - tabular or tabularx on their own
>
> hth,
> Tom
> On Dec 15, 2010, at 11:33 AM, Eric Schulte wrote:
>
>> Hi,
>>
>> The attached patch allows the use of table* latex tables from within
>> Org
>> mode documents using the attr_latex lines, for example
>>
>> #+CAPTION: A wide table
>> #+LABEL: tbl:wide
>> #+ATTR_LaTeX: table* align=l|lp{3cm}r|l
>> | ... | ... |
>> | ... | ... |
>>
>> Should this be added, or should we put together a more general
>> solution
>> for different types of table environments?  Currently only longtable
>> is
>> supported.  Also, is there already a way to do this that I have
>> missed?
>>
>> Thanks -- Eric
>>
>> diff --git a/lisp/org-latex.el b/lisp/org-latex.el
>> index a261171..b7f48d3 100644
>> --- a/lisp/org-latex.el
>> +++ b/lisp/org-latex.el
>> @@ -1741,7 +1741,7 @@ The conversion is made depending of STRING-
>> BEFORE and STRING-AFTER."
>>              (org-table-last-column-widths (copy-sequence
>>                                             org-table-last-column-
>> widths))
>>              fnum fields line lines olines gr colgropen line-fmt align
>> -             caption shortn label attr floatp placement longtblp)
>> +             caption shortn label attr floatp placement longtblp
>> tblenv)
>>         (if org-export-latex-tables-verbatim
>>             (let* ((tbl (concat "\\begin{verbatim}\n" raw-table
>>                                 "\\end{verbatim}\n")))
>> @@ -1758,6 +1758,9 @@ The conversion is made depending of STRING-
>> BEFORE and STRING-AFTER."
>>                          'org-label raw-table)
>>                   longtblp (and attr (stringp attr)
>>                                 (string-match "\\<longtable\\>" attr))
>> +              tblenv (if (and attr (stringp attr)
>> +                              (string-match (regexp-quote "table*") attr))
>> +                         "table*" "table")
>>                   align (and attr (stringp attr)
>>                              (string-match "\\<align=\\([^ \t\n\r]+\
>> \)" attr)
>>                              (match-string 1 attr))
>> @@ -1821,7 +1824,8 @@ The conversion is made depending of STRING-
>> BEFORE and STRING-AFTER."
>>                        (concat
>>                         (if longtblp
>>                             (concat "\\begin{longtable}{" align "}\n")
>> -                          (if floatp (format "\\begin{table}%s\n"
>> placement)))
>> +                          (if floatp
>> +                          (format "\\begin{%s}%s\n" tblenv placement)))
>>                         (if floatp
>>                             (format
>>                              "\\caption%s{%s} %s"
>> @@ -1852,7 +1856,7 @@ The conversion is made depending of STRING-
>> BEFORE and STRING-AFTER."
>>                                               "\n\\end{center}\n"
>> "\n"))
>>                         (if longtblp
>>                             "\\end{longtable}"
>> -                          (if floatp "\\end{table}"))))
>> +                          (if floatp (format "\\end{%s}" tblenv)))))
>>                       "\n\n"))))))))
>>
>> (defun org-export-latex-convert-table.el-table ()
>> _______________________________________________
>> Emacs-orgmode mailing list
>> Please use `Reply All' to send replies to the list.
>> address@hidden
>> http://lists.gnu.org/mailman/listinfo/emacs-orgmode



reply via email to

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