emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: "Thomas S. Dye" <tsd@tsdye.com>
To: Kai <k@limist.com>
Cc: emacs-orgmode@gnu.org
Subject: Re: Are there better ways to export wide LaTeX tables/figures?
Date: Thu, 9 Dec 2010 07:16:15 -1000	[thread overview]
Message-ID: <D9938C64-15A0-486D-9C87-4AEDD69E4A71@tsdye.com> (raw)
In-Reply-To: <4D003A01.2030802@limist.com>


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

      reply	other threads:[~2010-12-09 17:16 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [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 [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=D9938C64-15A0-486D-9C87-4AEDD69E4A71@tsdye.com \
    --to=tsd@tsdye.com \
    --cc=emacs-orgmode@gnu.org \
    --cc=k@limist.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).