| Submitter | Christophe Rhodes |
|---|---|
| Date | 2011-11-29 17:44:26 |
| Message ID | <87fwh6escl.fsf@cantab.net> |
| Download | mbox | patch |
| Permalink | /patch/1061/ |
| State | New |
| Headers | show |
Comments
Hi Christophe, Could you provide us with a minimal example of how this new functionality can be used? I am trying to test it and see if there are any conflicts with my patch of late to supports the booktabs package @ http://patchwork.newartisans.com/patch/1016/ (aside from one of the two patches not applying without some minor human intervention around line 1998). Besides that, it would in general be good to have an example for documentation purposes. On Tue, Nov 29, 2011 at 6:44 PM, Christophe Rhodes <csr21@cantab.net> wrote: > Carsten Dominik <carsten.dominik@gmail.com> writes, a long time ago: > > > On May 19, 2011, at 2:34 PM, Christophe Rhodes wrote: > > > >> To produce documents in something approaching my organization's house > >> style, I need to be able to style the headers of tables. It's nice that > >> orgtbl has the functionality for this, but the call to orgtbl-to-latex > >> has a hard-coded list of parameters with no possibility for extension. > >> With the attached patch, I am able to put e.g. > >> > >> #+BIND: org-export-latex-tables-orgtbl-extra-parameters (:hfmt > "\\multicolumn{1}{c}{\\bf\\color{white}\\cellcolor{blue}%s}") > >> > >> in the header of my document, and tables throughout the document all > >> pick up this style. > >> > >> I daresay that this is not the optimal way of doing things; while this > >> solves my immediate problem there is likely to be a more general way of > >> doing things. > > > > would it be better to be able to set these parameters on a per-table > basis with ATTR_LaTeX ? > > Would you like to try to prepare a patch to this effect? > > Find attached a patch to this effect. It is the combination of two > changes which I consider tiny: one is the support for hfmt itself as an > ATTR_LaTeX attribute; the other is the consolidation of the > word-matching on the attributes into local macros, which I needed > because my use case (as above) includes the string "multicolumn", which > was otherwise confusing the attribute parser into thinking that I needed > a table* LaTeX environment. > > Please let me know if this suits better. > > > > Christophe > >
Niels Giesen <niels.giesen@gmail.com> writes: > Could you provide us with a minimal example of how this new functionality > can be used? Sure, sorry. Here we go: --- start here --- #+TITLE: Example of using hfmt #+AUTHOR: Christophe Rhodes * Introduction This document shows the use of the =hfmt= tag in =#+LaTeX_ATTR= lines to customize table headings. Analgous functionality is available in HTML export by customizing the style of =th= tags. * Example table #+ATTR_LaTeX: hfmt=\multicolumn{1}{c}{\textbf{%s}} | table | headings | |-------------+-----------| | body | cells | | have | unchanged | | formatting. | | --- end here --- > I am trying to test it and see if there are any conflicts with my patch of > late to supports the booktabs package @ > http://patchwork.newartisans.com/patch/1016/ (aside from one of the two > patches not applying without some minor human intervention around line > 1998). Apart from the code conflict itself, I don't see why it shouldn't work: this patch only changes the export of individual cells, while the booktabs one alters the export of lines :-). Your patch took the approach I originally took too, with a customization variable; Carsten (in May, aeons ago) suggested that an attribute might be preferable, which is why I've reworked it in this way. (It might be sensible for my patch to have a configuration variable so that there could be a document-wide default, too; I don't know whether it would be sensible for yours to be customizeable using ATTR_LaTeX... > Besides that, it would in general be good to have an example for > documentation purposes. I hope this helps, Christophe
Hi, Christophe Rhodes <csr21@cantab.net> writes: > Carsten Dominik <carsten.dominik@gmail.com> writes, a long time ago: > >> >> would it be better to be able to set these parameters on a per-table >> basis with ATTR_LaTeX ? Would you like to try to prepare a patch to >> this effect? > > Find attached a patch to this effect. Is there anything else that I can do to encourage this patch into the upstream org-mode? Thanks, Christophe
Christophe Rhodes <csr21@cantab.net> writes: > Christophe Rhodes <csr21@cantab.net> writes: > >> Carsten Dominik <carsten.dominik@gmail.com> writes, a long time ago: >> >>> >>> would it be better to be able to set these parameters on a per-table >>> basis with ATTR_LaTeX ? Would you like to try to prepare a patch to >>> this effect? >> >> Find attached a patch to this effect. > > Is there anything else that I can do to encourage this patch into the > upstream org-mode? Again, is there anything more I can do to get this functionality (customizing header lines of tables in LaTeX export, in case everyone has lost the context) into org-mode? Best, Christophe
Hi Christophe, Christophe Rhodes <csr21@cantab.net> writes: > Again, is there anything more I can do to get this functionality > (customizing header lines of tables in LaTeX export, in case everyone > has lost the context) into org-mode? I saw your patch, thanks for it. I'm willing to apply it, but I will do when I have a good idea of how it interacts with Niels proposal, and maybe a generalization of Niels idea, where it would be possible to set a default #+ATTR for tables, images, etc. Best,
Patch
From aba08346276e558fd7f6aa635e6f1e5081a2d3c3 Mon Sep 17 00:00:00 2001
From: Christophe Rhodes <csr21@cantab.net>
Date: Tue, 29 Nov 2011 17:30:14 +0000
Subject: [PATCH] hfmt table attribute in LaTeX export
* org-latex.el (org-export-latex-tables):
- new word-match and attr-match local macros to reduce
boilerplate. (This is a tiny, mechanical change)
- support hfmt LaTeX_ATTR attribute, and if given pass
it through to orgtbl-to-latex. (This is a tiny change)
---
lisp/org-latex.el | 28 ++++++++++++++--------------
1 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/lisp/org-latex.el b/lisp/org-latex.el
index 2ec347a..aebfda5 100644
--- a/lisp/org-latex.el
+++ b/lisp/org-latex.el
@@ -1891,7 +1891,10 @@ The conversion is made depending of STRING-BEFORE and STRING-AFTER."
"\\end{verbatim}\n")))
(apply 'delete-region (list beg end))
(insert (org-export-latex-protect-string tbl)))
- (progn
+ (macrolet ((word-match (string haystack)
+ `(string-match ,(format "\\(?:\\`\\|\\s-\\)%s\\(?:\\'\\|\\s-\\)" string) ,haystack))
+ (attr-match (string)
+ `(and attr (stringp attr) (word-match ,string attr))))
(setq caption (org-find-text-property-in-string
'org-caption raw-table)
shortn (org-find-text-property-in-string
@@ -1901,26 +1904,22 @@ The conversion is made depending of STRING-BEFORE and STRING-AFTER."
label (org-find-text-property-in-string
'org-label raw-table)
longtblp (and attr (stringp attr)
- (string-match "\\<longtable\\>" attr))
- tblenv (if (and attr (stringp attr)
- (or (string-match (regexp-quote "table*") attr)
- (string-match "\\<multicolumn\\>" attr)))
+ (word-match "longtable" attr))
+ tblenv (if (or (attr-match (regexp-quote "table*"))
+ (attr-match "multicolumn"))
"table*" "table")
tabular-env
- (if (and attr (stringp attr)
- (string-match "\\(tabular.\\)" attr))
+ (if (attr-match "\\(tabular.\\)")
(match-string 1 attr)
org-export-latex-tabular-environment)
- width (and attr (stringp attr)
- (string-match "\\<width=\\([^ \t\n\r]+\\)" attr)
+ width (and (attr-match "width=\\(\\S-+\\)")
(match-string 1 attr))
- align (and attr (stringp attr)
- (string-match "\\<align=\\([^ \t\n\r]+\\)" attr)
+ align (and (attr-match "align=\\(\\S-+\\)")
(match-string 1 attr))
+ hfmt (and (attr-match "hfmt=\\(\\S-+\\)")
+ (match-string 1 attr))
floatp (or caption label (string= "table*" tblenv))
- placement (if (and attr
- (stringp attr)
- (string-match "[ \t]*\\<placement=\\(\\S-+\\)" attr))
+ placement (if (attr-match "placement=\\(\\S-+\\)")
(match-string 1 attr)
(concat
"[" org-latex-default-figure-position "]")))
@@ -1999,6 +1998,7 @@ The conversion is made depending of STRING-BEFORE and STRING-AFTER."
(orgtbl-to-latex
lines
`(:tstart nil :tend nil
+ ,@(and hfmt `(:hfmt ,hfmt))
:hlend ,(if longtblp
(format "\\\\
\\hline
--
1.7.7.1