emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Are there better ways to export wide LaTeX tables/figures?
       [not found] <20101208142507.D67F6C400B0@mx8.webfaction.com>
@ 2010-12-09  2:08 ` Kai
  2010-12-09 17:16   ` Thomas S. Dye
  0 siblings, 1 reply; 2+ messages in thread
From: Kai @ 2010-12-09  2:08 UTC (permalink / raw)
  To: emacs-orgmode

  Hi all,

After spending a few hours experimenting with orgmode's exporting of 
tables to LaTeX, I've got three problems to do with wide tables/figures, 
which I'm hoping have smarter solutions that what I could find:

1) When one has a table of even moderate width it will "run off the 
page" by default when exported to LaTeX and then pdf-published, since by 
default LaTeX will not automatically fit the column sizes to the page 
width, nor wrap text within cells to fit.  As far as I can tell, within 
orgmode, one has to do manual tweaking in the +ATTR_LaTeX line of the 
table like:

#+ATTR_LaTeX: tabular width=\textwidth 
align=|p{1.8cm}|p{1.5cm}|p{1.5cm}|p{1.3cm}|

...and set the column widths manually (in the example above, manually 
set four column widths).  Is there a better way to do this from within 
orgmode?



2) Now after one does all that hand-tweaking and trial and error of 
setting the LaTeX table column widths manually, the printed table may 
finally fit on the page, BUT still be wider than \textwidth, and appear 
off-center (it will be aligned on the left, but extend past the right 
margin).  I found this technique of centering the over-wide table/figure 
using \makebox:
http://texblog.net/latex-archive/layout/centering-figure-table/
...which basically involves wrapping the LaTeX table code with  
"\noindent\makebox[\textwidth]{%" and a closing curly brace, "}".  But I 
could not find a way to specify that within orgmode; if I have something 
like the following it will not work, the table does not end up being 
exported:

#+LaTeX: \noindent\makebox[\textwidth]{%

#+CAPTION: A wide table.
#+LABEL: tbl:wide_table
#+ATTR_LaTeX: tabular width=\textwidth 
align=|p{1.8cm}|p{1.5cm}|p{1.5cm}|p{1.3cm}|p{2cm}|p{2.25cm}|p{1.7cm}|
| Technology | Stack Efficiency | System Efficiency | Lifetime [years] | 
Degradation [microV/h] | Estimated High-volume manufacturing cost [2007 
Euros/kW] | Target Sale Price [2007 Euros/kW] |
|------------+------------------+-------------------+------------------+------------------------+----------------------------------------------------------+-----------------------------------|
| AFC        |         0.43-0.5 |         0.27-0.32 |          0.5-1.1 
|                  10-30 
|                                                  325-675 
|                           120-230 |

#+LaTeX: %}

Is there any way to specify from the orgmode file that the (too wide) 
exported LaTeX table should be absolutely centered in the page, so as to 
avoid manual fixes per table in the tex file after exporting?  Same 
question applies to large images that one wants wider than \textwidth, 
yet centered within the page - is there a way to do it cleanly?



3) Finally, is there a way to specify a smaller text size for tables 
consistently?  e.g. within the exported LaTex file, one could manually 
specify \footnotesize table text like:

\begin{table}[htb]\footnotesize

But is there a way to specify that from orgmode, and avoid post-export 
manual fixes in the tex file?


Thanks in advance, any and all help appreciated!

K

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: Are there better ways to export wide LaTeX tables/figures?
  2010-12-09  2:08 ` Are there better ways to export wide LaTeX tables/figures? Kai
@ 2010-12-09 17:16   ` Thomas S. Dye
  0 siblings, 0 replies; 2+ messages in thread
From: Thomas S. Dye @ 2010-12-09 17:16 UTC (permalink / raw)
  To: Kai; +Cc: emacs-orgmode


[-- Attachment #1.1: Type: text/plain, Size: 5277 bytes --]

Aloha Kai,

I've just pushed one solution to the problem of wide tables up to http://orgmode.org/worg/org-tutorials/org-latex-export.php 
.  Here it is for your convenience:

The LaTeX exporter is currently able to export tabular and longtable
environments. In situations where the width of the table needs to be
specified, the tabularx package is a good solution, but this isn't
supported by the exporter.  You can get the tabularx environment with
the proper setup and calling a handy function in the Library of Babel.

First, load the tabularx and booktabs packages:

=#+LATEX_HEADER: \usepackage{tabularx,booktabs}=

Then, give your table a name, e.g., =#+tblname: test-table= and put it
somewhere the LaTeX exporter won't see.

Finally, create a LaTeX source block something like this:

: #+source: tabularx-export
: #+begin_src latex :exports results :results latex
:   \begin{table}[htb!]
:   \centering
:   \footnotesize
:   \caption{A table to test the tabularx environment}
:   \label{tab:test-table}
:   <<booktabs(table=test-table,align="lX",env="tabularx",width="\ 
\textwidth")>>
:   \end{table}
:  #+end_src

When you export the file to LaTeX, this code block is expanded in a
=#+results:= block and wrapped in =#+BEGIN_LaTeX= ... =#+END_LaTeX=.   
The booktabs function does most of the work.

The X alignment in the example is defined by tabularx to calculate the  
width of the column automatically and then wrap its contents.  This  
works well in most cases, but you might need to define a column type  
that sets the contents ragged right, something like this:

\newcolumntype{Y}{>{\raggedright\arraybackslash}X}

This requires the array package, so you might need a line like this,  
too:

LaTex_HEADER: \usepackage{array}

hth,
Tom

On Dec 8, 2010, at 4:08 PM, Kai wrote:

> Hi all,
>
> After spending a few hours experimenting with orgmode's exporting of  
> tables to LaTeX, I've got three problems to do with wide tables/ 
> figures, which I'm hoping have smarter solutions that what I could  
> find:
>
> 1) When one has a table of even moderate width it will "run off the  
> page" by default when exported to LaTeX and then pdf-published,  
> since by default LaTeX will not automatically fit the column sizes  
> to the page width, nor wrap text within cells to fit.  As far as I  
> can tell, within orgmode, one has to do manual tweaking in the  
> +ATTR_LaTeX line of the table like:
>
> #+ATTR_LaTeX: tabular width=\textwidth align=|p{1.8cm}|p{1.5cm}| 
> p{1.5cm}|p{1.3cm}|
>
> ...and set the column widths manually (in the example above,  
> manually set four column widths).  Is there a better way to do this  
> from within orgmode?
>
>
>
> 2) Now after one does all that hand-tweaking and trial and error of  
> setting the LaTeX table column widths manually, the printed table  
> may finally fit on the page, BUT still be wider than \textwidth, and  
> appear off-center (it will be aligned on the left, but extend past  
> the right margin).  I found this technique of centering the over- 
> wide table/figure using \makebox:
> http://texblog.net/latex-archive/layout/centering-figure-table/
> ...which basically involves wrapping the LaTeX table code with   
> "\noindent\makebox[\textwidth]{%" and a closing curly brace, "}".   
> But I could not find a way to specify that within orgmode; if I have  
> something like the following it will not work, the table does not  
> end up being exported:
>
> #+LaTeX: \noindent\makebox[\textwidth]{%
>
> #+CAPTION: A wide table.
> #+LABEL: tbl:wide_table
> #+ATTR_LaTeX: tabular width=\textwidth align=|p{1.8cm}|p{1.5cm}| 
> p{1.5cm}|p{1.3cm}|p{2cm}|p{2.25cm}|p{1.7cm}|
> | Technology | Stack Efficiency | System Efficiency | Lifetime  
> [years] | Degradation [microV/h] | Estimated High-volume  
> manufacturing cost [2007 Euros/kW] | Target Sale Price [2007 Euros/ 
> kW] |
> |------------+------------------+------------------- 
> +------------------+------------------------ 
> +---------------------------------------------------------- 
> +-----------------------------------|
> | AFC        |         0.43-0.5 |         0.27-0.32 |           
> 0.5-1.1 |                  10-30  
> |                                                  325-675  
> |                           120-230 |
>
> #+LaTeX: %}
>
> Is there any way to specify from the orgmode file that the (too  
> wide) exported LaTeX table should be absolutely centered in the  
> page, so as to avoid manual fixes per table in the tex file after  
> exporting?  Same question applies to large images that one wants  
> wider than \textwidth, yet centered within the page - is there a way  
> to do it cleanly?
>
>
>
> 3) Finally, is there a way to specify a smaller text size for tables  
> consistently?  e.g. within the exported LaTex file, one could  
> manually specify \footnotesize table text like:
>
> \begin{table}[htb]\footnotesize
>
> But is there a way to specify that from orgmode, and avoid post- 
> export manual fixes in the tex file?
>
>
> Thanks in advance, any and all help appreciated!
>
> K
>
> _______________________________________________
> 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


[-- Attachment #1.2: Type: text/html, Size: 6832 bytes --]

[-- Attachment #2: Type: text/plain, Size: 201 bytes --]

_______________________________________________
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

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2010-12-09 17:16 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <20101208142507.D67F6C400B0@mx8.webfaction.com>
2010-12-09  2:08 ` Are there better ways to export wide LaTeX tables/figures? Kai
2010-12-09 17:16   ` Thomas S. Dye

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).