From: "Eric Schulte" <schulte.eric@gmail.com>
To: "Thomas S. Dye" <tsd@tsdye.com>
Cc: emacs-orgmode@gnu.org
Subject: Re: Re: latex export and booktabs tables
Date: Wed, 30 Jun 2010 11:54:36 -0700 [thread overview]
Message-ID: <87tyokz6z7.fsf@gmail.com> (raw)
In-Reply-To: <87vd91aexy.fsf@gmail.com> (Eric Schulte's message of "Tue, 29 Jun 2010 10:10:18 -0700")
This booktabs function has now been added to the library of babel.
Cheers -- Eric
"Eric Schulte" <schulte.eric@gmail.com> writes:
> Hi Tom,
>
> How about the following proposed library of babel function which
> constructs a booktabs environment using a toprule, (conditionally) a
> midrule, and a bottomrule.
>
> *** booktabs
> This block can be used to wrap a table in the latex =booktabs=
> environment, it takes the following arguments -- all but the first two
> are optional.
> | arg | description |
> |-------+--------------------------------------------|
> | table | a reference to the table |
> | align | optional alignment string |
> | env | optional environment, default to "tabular" |
> | width | optional width specification string |
>
> #+srcname: booktabs
> #+begin_src emacs-lisp :var table='((:head) hline (:body)) :var align='() :var env="tabular" :var width='() :noweb yes :results latex
> (flet ((to-tab (tab)
> (orgtbl-to-generic
> (mapcar (lambda (lis)
> (if (listp lis)
> (mapcar (lambda (el)
> (if (stringp el)
> el
> (format "%S" el))) lis)
> lis)) tab)
> (list :lend " \\\\" :sep " & " :hline "\\hline"))))
> (org-fill-template
> "
> \\begin{%env}%width%align
> \\toprule
> %table
> \\bottomrule
> \\end{%env}\n"
> (list
> (cons "env" (or env "table"))
> (cons "width" (if width (format "{%s}" width) ""))
> (cons "align" (if align (format "{%s}" align) ""))
> (cons "table"
> ;; only use \midrule if it looks like there are column headers
> (if (equal 'hline (second table))
> (concat (to-tab (list (first table)))
> "\n\\midrule\n"
> (to-tab (cddr table)))
> (to-tab table))))))
> #+end_src
>
> once loaded it can be applied as here
>
> ** booktabs
> #+tblname: months
> | num | Abbrev. |
> |-----+---------|
> | 1 | Jan. |
> | 2 | Feb. |
> | 3 | Mar. |
>
> #+call: booktabs(table=months, align="r|l") :results latex :exports results
>
> Also, note that the longtable function currently in the library-of-babel
> does allow for replacing the global default hline value.
>
> I'm sure the above isn't perfect, however hopefully it is close enough
> that you could recommend how to get the rest of the way there.
>
> Thanks -- Eric
>
> "Thomas S. Dye" <tsd@tsdye.com> writes:
>
>> Hi Eric,
>>
>> This is neat, but it doesn't directly address the problem posed by the
>> OP.
>>
>> Currently, the LaTeX exporter uses \hline for all the horizontal rules
>> in a table. Booktabs defines three rules of different thickness for
>> use at the top of the table, after the column heads, and at the bottom
>> of the table. So, one would want a function that let each of the
>> rules take a different value. The default for each could be hline,
>> giving the current behavior of the exporter. Francesco Pizzolante set
>> this out nicely a while back:
>> http://www.mail-archive.com/emacs-orgmode@gnu.org/msg18311.html in a
>> message that Seb Vauban brought up in a slightly different context.
>>
>> All the best,
>> Tom
>>
>> On Jun 27, 2010, at 7:09 PM, Eric Schulte wrote:
>>
>>> One way to deal with this without adding even more complexity to the
>>> core of org-mode could be through the use of "Library of Babel"
>>> functions.
>>>
>>> The attached org-mode file provides a function for exporting to the
>>> longtable environment with some example usage. If this looks
>>> generally
>>> useful it (and maybe similar functions) could be added to the
>>> library of
>>> babel distributed w/Org-mode.
>>>
>>> What do you think? -- Eric
>>>
>>> <longtable.org>
>>> Sébastien Vauban <wxhgmqzgwmuf@spammotel.com> writes:
>>>
>>>> Hi Erik,
>>>>
>>>> Erik Butz wrote:
>>>>> I found a very old thread on the list about using the booktabs
>>>>> package to
>>>>> have nicer tables in latex export.
>>>>>
>>>>> I found that, making the changes below I can use the booktab
>>>>> package to
>>>>> export tables, and using standard tables only, this seems to work
>>>>> fine.
>>>>>
>>>>> Can anyone advice on whether this kind of change is meaningful or
>>>>> if this is
>>>>> likely to introduce difficulties elsewhere which I did not
>>>>> experience due to
>>>>> the limited scope of usage? It should be said that I did not at
>>>>> all look
>>>>> into longtables so far.
>>>>
>>>> While trying to improve this, I think one could extend it so that
>>>> the table
>>>> environment can be changed as well, from `tabular' to `array',
>>>> tabular*',
>>>> `tabularx' or any other.
>>>>
>>>> There was a discussion on this, a while ago, by Francesco
>>>> Pizzolante. Have a
>>>> read at:
>>>> http://www.mail-archive.com/emacs-orgmode@gnu.org/msg18311.html
>>>> .
>>>>
>>>> Best regards,
>>>> Seb
>>> _______________________________________________
>>> 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
prev parent reply other threads:[~2010-06-30 18:54 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-06-22 21:36 latex export and booktabs tables Erik Butz
2010-06-22 23:03 ` Thomas S. Dye
2010-06-23 8:23 ` Sébastien Vauban
2010-06-28 5:09 ` Eric Schulte
2010-06-28 6:05 ` Carsten Dominik
2010-06-28 8:45 ` Sébastien Vauban
2010-06-28 15:16 ` Eric Schulte
2010-06-28 20:07 ` Erik Butz
2010-06-28 20:14 ` Sébastien Vauban
2010-06-29 8:00 ` Thomas S. Dye
2010-06-29 17:10 ` Eric Schulte
2010-06-30 3:01 ` Thomas S. Dye
2010-06-30 18:54 ` Eric Schulte [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=87tyokz6z7.fsf@gmail.com \
--to=schulte.eric@gmail.com \
--cc=emacs-orgmode@gnu.org \
--cc=tsd@tsdye.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).