[Top][All Lists]

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

Re: [O] Patch: default CSS class for SVG images in HTML export

From: Nicolas Goaziou
Subject: Re: [O] Patch: default CSS class for SVG images in HTML export
Date: Mon, 25 Jul 2016 11:37:53 +0200


Jarmo Hurri <address@hidden> 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
                 ;; 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 ...))


Nicolas Goaziou

reply via email to

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