On Dec 17, 2010, at 10:01 PM, Eric Schulte wrote:
Ah! you caught me :) I've just pushed up documentation. -- Eric
Thank you, Eric. - Carsten
Carsten Dominik <carsten.domi...@gmail.com> writes:This is great, I like it. Maybe a change to the manual would be appropriate? Best wishes - Carsten On Dec 17, 2010, at 9:39 PM, Eric Schulte wrote:Hi Tom,Thanks for all you help on this front. I've just pushed up the patchwith your suggested syntax (which is much better than my original). It allows the following behavior. The following org #+begin_src org #+CAPTION: A wide table with tabulary #+LABEL: tbl:wide #+ATTR_LaTeX: table* tabulary width=\textwidth align=l|lp{3cm}r|l | 1 | 2 | 3 | | 4 | 5 | 6 | #+CAPTION: A normal table with tabularx #+LABEL: tbl:wide #+ATTR_LaTeX: table tabularx width=\textwidth align=l|lp{3cm}r|l | 1 | 2 | 3 | | 4 | 5 | 6 | and now a simple table | 1 | 2 | 3 | | 4 | 5 | 6 | #+end_src exports to the following tex #+begin_src latex \begin{table*}[htb] \caption{A wide table with tabulary} \label{tbl:wide} \begin{center} \begin{tabulary}{\textwidth}{l|lp{3cm}r|l} 1 & 2 & 3 \\ 4 & 5 & 6 \\ \end{tabulary} \end{center} \end{table*} \begin{table}[htb] \caption{A normal table with tabularx} \label{tbl:wide} \begin{center} \begin{tabularx}{\textwidth}{l|lp{3cm}r|l} 1 & 2 & 3 \\ 4 & 5 & 6 \\ \end{tabularx} \end{center} \end{table} and now a simple table \begin{center} \begin{tabular}{rrr} 1 & 2 & 3 \\ 4 & 5 & 6 \\ \end{tabular} \end{center} #+end_src Thanks -- Eric "Thomas S. Dye" <t...@tsdye.com> writes:Hi Eric,A syntax like this, with a width attribute, seems most like Org- modeto me: #+ATTR_LaTeX table* tabularx width=\textwidth align=llXrl If that isn't a reasonable possibility, then, yes, the square bracketsshould be changed. These represent optional arguments in LaTeX. The width argument is required by tabularx and tabulary, not optional, soit looks like an error from a LaTeX point of view. Changing the square brackets to curly brackets in this case would have the advantage of looking a lot like the underlying LaTeX. All the best, Tom On Dec 16, 2010, at 2:57 PM, Eric Schulte wrote:Hi Tom,Thanks for the pointer, how about this revised version of the patch.It takes the following inputs #+begin_src org #+CAPTION: A wide table with tabulary #+LABEL: tbl:wide #+ATTR_LaTeX: table* tabulary[\textwidth] align=l|lp{3cm}r|l | 1 | 2 | 3 | | 4 | 5 | 6 | #+CAPTION: A normal table with tabularx #+LABEL: tbl:wide #+ATTR_LaTeX: table tabularx[\textwidth] align=l|lp{3cm}r|l | 1 | 2 | 3 | | 4 | 5 | 6 | #+end_src and yields the following output #+begin_src latex \begin{table*}[htb] \caption{A wide table with tabulary} \label{tbl:wide} \begin{center} \begin{tabulary}{\textwidth}{l|lp{3cm}r|l} 1 & 2 & 3 \\ 4 & 5 & 6 \\ \end{tabulary} \end{center} \end{table*} \begin{table}[htb] \caption{A normal table with tabularx} \label{tbl:wide} \begin{center} \begin{tabularx}{\textwidth}{l|lp{3cm}r|l} 1 & 2 & 3 \\ 4 & 5 & 6 \\ \end{tabularx} \end{center} \end{table} #+end_src I'm not sure about the square bracket syntax, maybe curly would be preferable. Definitely open to suggestions. Should this be applied? Are there any obvious areas for improvement? Thanks -- Eric diff --git a/lisp/org-latex.el b/lisp/org-latex.el index a261171..af0a15d 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,16 @@ 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") + org-export-latex-tabular-environment + (progn + (message "attr:%s" attr) + (if (and attr (stringp attr) + (string-match "\\(tabular.*\\)\\[\\(.+\\)\\]" attr)) + (list (match-string 1 attr) (match-string 2 attr)) + org-export-latex-tabular-environment)) align (and attr (stringp attr) (string-match "\\<align=\\([^ \t\n\r]+\ \)" attr) (match-string 1 attr)) @@ -1821,7 +1831,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" @@ -1832,8 +1843,15 @@ The conversion is made depending of STRING- BEFORE and STRING-AFTER." (if (and org-export-latex-tables-centered (not longtblp)) "\\begin{center}\n") (if (not longtblp) - (format "\\begin{%s}{%s}\n" - org-export-latex-tabular-environment align)) + (if (listp org-export-latex-tabular-environment) + (apply + #'format + (append + (list "\\begin{%s}{%s}{%s}\n") + org-export-latex-tabular-environment + (list align))) + (format "\\begin{%s}{%s}\n" + org-export-latex-tabular-environment align))) (orgtbl-to-latex lines `(:tstart nil :tend nil@@ -1847,12 +1865,14 @@ The conversion is made depending of STRING-BEFORE and STRING-AFTER." nil))) (if (not longtblp) (format "\n\\end{%s}" - org-export-latex-tabular-environment)) + (if (listp org-export-latex-tabular-environment) + (car org-export-latex-tabular-environment) + org-export-latex-tabular-environment))) (if longtblp "\n" (if org-export-latex- tables-centered "\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 () "Thomas S. Dye" <t...@tsdye.com> writes:Hi Eric,The syntax for tabularx and tabulary includes a width specificationthat is a required argument: \begin{tabulary}{<width>}{<align>} ... \end{tabulary} \begin{tabularx}{<width>}{<align>} ... \end{tabularx} This is typically set to something like \linewidth, \colwidth, or\textwidth, but might also take an absolute length like 250pt, 5in,etc. All the best, Tom On Dec 16, 2010, at 4:43 AM, Eric Schulte wrote:The attached patch implements the behavior described previously, so for example the following org #+begin_src org #+CAPTION: A wide table with tabulary #+LABEL: tbl:wide #+ATTR_LaTeX: table* tabulary align=l|lp{3cm}r|l | 1 | 2 | 3 | | 4 | 5 | 6 | #+CAPTION: A normal table with tabularx #+LABEL: tbl:wide #+ATTR_LaTeX: table tabularx align=l|lp{3cm}r|l | 1 | 2 | 3 | | 4 | 5 | 6 | #+end_src exports to the following latex #+begin_src latex \begin{table*}[htb] \caption{A wide table with tabulary} \label{tbl:wide} \begin{center} \begin{tabulary}{l|lp{3cm}r|l} 1 & 2 & 3 \\ 4 & 5 & 6 \\ \end{tabulary} \end{center} \end{table*} \begin{table}[htb] \caption{A normal table with tabularx} \label{tbl:wide} \begin{center} \begin{tabularx}{l|lp{3cm}r|l} 1 & 2 & 3 \\ 4 & 5 & 6 \\ \end{tabularx} \end{center} \end{table} #+end_srcDoes this behavior and patch look reasonable? If I don't hear bythe end of the day I will apply this patch, I just wanted to check first on list as the export mechanisms aren't my personal area of expertise. Thanks -- Eric diff --git a/lisp/org-latex.el b/lisp/org-latex.el index a261171..66541de 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 longtblptblenv tblrenv) (if org-export-latex-tables-verbatim (let* ((tbl (concat "\\begin{verbatim}\n" raw-table "\\end{verbatim}\n")))@@ -1758,6 +1758,15 @@ 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") + org-export-latex-tabular-environment + (if (and attr (stringp attr) + (string-match (regexp-quote "tabularx") attr)) + "tabularx" + (if (string-match (regexp-quote "tabulary") attr) + "tabulary" org-export-latex-tabular-environment)) align (and attr (stringp attr)(string-match "\\<align=\\([^ \t\n\r] +\\)" attr) (match-string 1 attr))@@ -1821,7 +1830,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 +1862,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 () "Eric Schulte" <schulte.e...@gmail.com> writes:Hi Tom, Thanks for the informative list. I had no idea LaTeX supported so manytable options. How about I update the patch so that is supportsthe 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_srcThen the next question would be how to insert a =figure*= insteadof a simple =figure= environment. Thanks -- Eric Thomas S. Dye <t...@tsdye.com> 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 **** tabularylike tabularx, but tries harder to come up with optimal columnwidths **** supertabular extended tabular environment that breaks across pages, includes caption **** supertabular* like supertabular, but for wide tables in a multicolumn page layout **** mpsupertabularlike 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 theoutput that LaTeX determines appropriate, probably not where itoccurs 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 generalsolution for different types of table environments? Currently only longtable issupported. Also, is there already a way to do this that I havemissed? 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-sequenceorg-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. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode_______________________________________________ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
_______________________________________________ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode