emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Jambunathan K <kjambunathan@gmail.com>
To: mail@christianmoe.com
Cc: Orgmode Mailing List <emacs-orgmode@gnu.org>,
	Gary Oberbrunner <garyo@oberbrunner.com>
Subject: Re: ODT export custom link colors?
Date: Thu, 15 Dec 2011 13:11:46 +0530	[thread overview]
Message-ID: <81d3bqjn7p.fsf@gmail.com> (raw)
In-Reply-To: <4EE90935.7010402@christianmoe.com> (Christian Moe's message of "Wed, 14 Dec 2011 21:38:13 +0100")

Christian Moe <mail@christianmoe.com> 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	other threads:[~2011-12-15  7:42 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-12-14 17:34 ODT export custom link colors? Gary Oberbrunner
2011-12-14 20:38 ` Christian Moe
2011-12-15  7:41   ` Jambunathan K [this message]
2011-12-15  9:03     ` Christian Moe
2011-12-20 22:01       ` Gary Oberbrunner

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=81d3bqjn7p.fsf@gmail.com \
    --to=kjambunathan@gmail.com \
    --cc=emacs-orgmode@gnu.org \
    --cc=garyo@oberbrunner.com \
    --cc=mail@christianmoe.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).