emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] ODT export custom link colors?


From: Jambunathan K
Subject: Re: [O] ODT export custom link colors?
Date: Thu, 15 Dec 2011 13:11:46 +0530
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.92 (windows-nt)

Christian Moe <address@hidden> writes:

> Hi,
>
> I'm not sure about this, because I don't really know the ODT spec, 

LibreOffice is my friend.

> For instance, in the LibreOffice Styles and Formatting window, choose
> the Character styles tab, right-click on Default, select New. Name
> your style (e.g.) "Bgcolor red". Right-click it, select Modify, in the
> Background tab give it a red background.

I usually put the cursor on the text that I am interested in, press F11
and switch to char styles or whatever category. The right style would be
highlighted which you can directly inherit from.

> Repeat for other colors you use, e.g. "Bgcolor blue", "Bgcolor yellow"...
>
> Now, modify your custom link code as follows:
>
>> (org-add-link-type
>> "bgcolor"  nil
>>    (lambda (path desc format)
>>     (cond
>>      ((eq format 'html)
>>       (format"<span style=\"background-color:%s;\">%s</span>"  path desc))
>>      ((eq format 'latex)
>>       (format"\\colorbox{%s}{%s}"  path desc))
>     ((eq format 'odt)
>      (format "<text:span text:style-name=\"Bgcolor
> %s\">%s</text:span>" path desc))
>>      (t
>>       (format"BGCOLOR LINK (%s): {%s}{%s}"  format path desc)))))
>>

The exact scenario you describe here is documented in the manual.

(info "(org) Creating one-off styles")
                                      ^ C-x C-e here 
Look at item 1.

The same node is here:
http://orgmode.org/org.html#Creating-one_002doff-styles

Instead of using an inline markup you can do something like this. 

#+begin_src emacs-lisp
(org-odt-format-fontify "This text is in red" "red-style")
#+end_src

It will mark the text in "red-style". You can similarly use this or this
for marking text in bold.

#+begin_src emacs-lisp
(org-odt-format-fontify "This text is in red" 'bold)
#+end_src

I believe you get the drift now.

Note: There are lot more convenience functions that start with
org-odt-format-* that I use internally to emit OpenDocument tags on the
go.

If you look at OrgOdtStyles.xml (C-h v org-odt-styles-dir) and you can
see a bunch of styles marked as "Org Agenda Styles". These are used for
marking TODO in red and DONE in green etc.

Copy & paste those styles, fix the name and background color and you are
done.

> (You can change the style-name in the format string to follow whatever
> naming convention you've adopted for your styles. If you want to call
> them simply "red", "blue" and so on, it would be
> text:style-name=\"%s\".)
>
> (Judging from the manual, if you have space in your style names, like
> above, you should perhaps escape the spaces with _20_, but the
> "Bgcolor %s" above seems to work fine.)
>
> Please report back if this works for you. If so, and depending on what
> Jambunathan might have to add, I'll look into updating the Worg
> examples.
>
>> (By the way, before I added my 't' case above, it returned nil, which
>> caused the odt exporter to blow up with an unhelpful error.  Would a
>> patch for that be considered too much of a corner-case?  I'd be happy
>> to submit one.)
>
> I don't know what others think, but I think the habit of always
> providing one's custom links with an explicit fallback should be
> encouraged, if necessary by rude reminders from failing exporters...
> :-)
>
> hth,
> Christian
>
>

-- 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]