emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Nicolas Goaziou <mail@nicolasgoaziou.fr>
To: Jarmo Hurri <jarmo.hurri@iki.fi>
Cc: emacs-orgmode@gnu.org
Subject: Re: Patch: default CSS class for SVG images in HTML export
Date: Mon, 25 Jul 2016 11:37:53 +0200	[thread overview]
Message-ID: <87eg6ivz0u.fsf@saiph.selenimh> (raw)
In-Reply-To: <87h9bep8s4.fsf@iki.fi> (Jarmo Hurri's message of "Mon, 25 Jul 2016 08:48:59 +0300")

Hello,

Jarmo Hurri <jarmo.hurri@iki.fi> writes:

> The attached patch
> - adds a default CSS class org-svg to SVG images embedded in exported
>   HTML if no other class is set for the image using attr_html
> - documents the existence of this class.

Thank you.

> If this patch is ok,

It looks so, barring minor issues suggested below.

> then what is missing are the default CSS settings for the new class
> org-svg in constant org-html-style-default. I simply did not know what
> to put there. The manual says that this constant has basic settings
> for _all_ defined CSS entities. Either defaults need to be set for the
> new class, or the text in the manual needs to be changed. Or we have
> to accept that the manual is not logically coherent. :-)

The Manual is the Truth!

What setting would equivalent to the current one?

> @@ -11750,6 +11750,7 @@ div.footnotes       @r{footnote section headline}
>  p.footnote          @r{footnote definition paragraph, containing a footnote}
>  .footref            @r{a footnote reference number (always a <sup>)}
>  .footnum            @r{footnote number in footnote definition (always <sup>)}
> +.org-svg            @r{default class for a linked SVG image}

The manual would use @samp{svg}, but I think @file{.svg} would be more
accurate, per (info "(texinfo @file)").

>  (defun org-html--svg-image (source attributes info)
>    "Return \"object\" appropriate for embedding svg file SOURCE
> -with assoicated ATTRIBUTES. INFO is a plist used as a
> +with associated ATTRIBUTES. INFO is a plist used as a
>  communication channel.

The docstring was incorrect before your patch; this is a good time to
fix it. In particular:

- first line must stand on its own, i.e., it must be one or more
  complete sentences;

- Sentences have to be separated with two spaces.

Could you reword it?

>  The special attribute \"fallback\" can be used to specify a fallback
> -image file to use if the object embedding is not supported."
> +image file to use if the object embedding is not supported.
> +
> +CSS class \"org-svg\" is assigned as the class of the object
> +unless a different class is specified with an attribute."
>    (let ((fallback (plist-get attributes :fallback))
> +	(css-class (plist-get attributes :class))
>  	(attrs (org-html--make-attribute-string
>  		(plist-put attributes :fallback nil))))
> -  (format "<object type=\"image/svg+xml\" data=\"%s\" %s>\n%s</object>"
> -	  source attrs
> +  (format "<object type=\"image/svg+xml\" data=\"%s\" %s %s>\n%s</object>"
> +	  source
> +	  attrs
> +	  (if css-class
> +	      ""
> +	    "class=\"org-svg\"")

This would ignore ":class nil", which probably means no class at all.

You can do instead:

  (let ((fallback (plist-get attributes :fallback))
        (attrs (org-html--make-attribute-string
                (org-combine-plists
                 ;; Remove fallback attribute, which is not meant to
                 ;; appear directly in the attributes string, and
                 ;; provide a default class if none is set.
                 '(:class "org-class") attributes '(:fallback nil)))))
    (format ...))
  

Regards,

-- 
Nicolas Goaziou

  parent reply	other threads:[~2016-07-25  9:38 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-07-25  5:48 Patch: default CSS class for SVG images in HTML export Jarmo Hurri
2016-07-25  9:28 ` Christian Moe
2016-07-25  9:37 ` Nicolas Goaziou [this message]
2016-07-25 18:34   ` Jarmo Hurri
2016-07-25 20:36     ` Nicolas Goaziou
2016-07-26  8:21       ` Jarmo Hurri
2016-07-26  8:39         ` Nicolas Goaziou

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=87eg6ivz0u.fsf@saiph.selenimh \
    --to=mail@nicolasgoaziou.fr \
    --cc=emacs-orgmode@gnu.org \
    --cc=jarmo.hurri@iki.fi \
    /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).