* ox-html HOWTO? exporting #+RESULTS inside div
@ 2015-10-21 23:12 Cook, Malcolm
2015-10-22 2:18 ` Charles C. Berry
0 siblings, 1 reply; 7+ messages in thread
From: Cook, Malcolm @ 2015-10-21 23:12 UTC (permalink / raw)
To: emacs-orgmode@gnu.org
Hi,
I would like to contrive for the contents of results blocks to be embedded in a new div with a common class of org-results-container.
Can this be accomplished through configuring ox-html somehow? Or must I contrive to modify ox-html.el source? Or is this "Just A Bad Idea" (tm).
My use case is to be able to be able to hide all (or selected) results blocks using javascript in service of an html presentation used as a tutorial where RESULTS are revealed when clicking on, say, the previous source code block.
Thanks,
Malcolm Cook
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: ox-html HOWTO? exporting #+RESULTS inside div
2015-10-21 23:12 ox-html HOWTO? exporting #+RESULTS inside div Cook, Malcolm
@ 2015-10-22 2:18 ` Charles C. Berry
2015-10-22 6:13 ` Cook, Malcolm
0 siblings, 1 reply; 7+ messages in thread
From: Charles C. Berry @ 2015-10-22 2:18 UTC (permalink / raw)
To: Cook, Malcolm; +Cc: emacs-orgmode@gnu.org
On Wed, 21 Oct 2015, Cook, Malcolm wrote:
> Hi,
>
> I would like to contrive for the contents of results blocks to be
> embedded in a new div with a common class of org-results-container.
Try this:
--8<---------------cut here---------------start------------->8---
#+BEGIN_SRC shell :exports both :wrap org-results-container
echo "org results here"
#+END_SRC
--8<---------------cut here---------------end--------------->8---
which html export renders as
--8<---------------cut here---------------start------------->8---
<div class="org-results-container">
<p>
org results here
</p>
</div>
--8<---------------cut here---------------end--------------->8---
You can add a special-block filter if the <p> ... </p> is unwanted.
HTH,
Chuck
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: ox-html HOWTO? exporting #+RESULTS inside div
2015-10-22 2:18 ` Charles C. Berry
@ 2015-10-22 6:13 ` Cook, Malcolm
2015-11-05 0:02 ` Cook, Malcolm
0 siblings, 1 reply; 7+ messages in thread
From: Cook, Malcolm @ 2015-10-22 6:13 UTC (permalink / raw)
To: Charles C. Berry; +Cc: emacs-orgmode@gnu.org
Charles,
Excellent - that is precisely what I needed.
Additionally, I can avoid having to include the :wrap keyword on every header by specifying a single buffer-wide header arguments, such as
#+PROPERTY: header-args :wrap org-results-container
Thanks,
~ malcolm_cook@stowers.org
________________________________________
From: Charles C. Berry <ccberry@ucsd.edu>
Sent: Wednesday, October 21, 2015 9:18 PM
To: Cook, Malcolm
Cc: emacs-orgmode@gnu.org
Subject: Re: ox-html HOWTO? exporting #+RESULTS inside div
On Wed, 21 Oct 2015, Cook, Malcolm wrote:
> Hi,
>
> I would like to contrive for the contents of results blocks to be
> embedded in a new div with a common class of org-results-container.
Try this:
--8<---------------cut here---------------start------------->8---
#+BEGIN_SRC shell :exports both :wrap org-results-container
echo "org results here"
#+END_SRC
--8<---------------cut here---------------end--------------->8---
which html export renders as
--8<---------------cut here---------------start------------->8---
<div class="org-results-container">
<p>
org results here
</p>
</div>
--8<---------------cut here---------------end--------------->8---
You can add a special-block filter if the <p> ... </p> is unwanted.
HTH,
Chuck
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: ox-html HOWTO? exporting #+RESULTS inside div
2015-10-22 6:13 ` Cook, Malcolm
@ 2015-11-05 0:02 ` Cook, Malcolm
2015-11-05 4:08 ` Charles C. Berry
0 siblings, 1 reply; 7+ messages in thread
From: Cook, Malcolm @ 2015-11-05 0:02 UTC (permalink / raw)
To: Charles C. Berry; +Cc: emacs-orgmode@gnu.org
Charles,
Thanks again for you suggestion.
Alas, using 'header-args :wrap org-results-container' has the unforeseen (by me) side effect of masking my use of `#+ATTR_HTML :class dataTable` on selected exported tables (which I use to allow for search/sortable/scrollable tables).
Now, the ':class dataTable' attribute is placed on the new <div> instead of the <table> with undesired outcome.
Do you have any thoughts on how to accomplish both my goals (apply :class table to selected results, and making ALL results be addressable using javascript. FYI - My application is to hide all source blocks on html open. Clicking on a source block caption shows the source. This provides an HTML view that hides the source until desired. My recipients of such analysis write-ups really like this.
Thanks,
Malcolm
PS: as an Example of the issue, the following exports the table with :class of dataTable. However, when I uncomment the :wrap directive, and re-eval the block, and export, then :class is now on the div...
#+HTML_HEAD: <script src="http://code.jquery.com/jquery-1.11.2.min.js"></script>
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="http://cdn.datatables.net/1.10.9/css/jquery.dataTables.min.css">
#+HTML_HEAD: <script src="http://cdn.datatables.net/1.10.9/js/jquery.dataTables.js"></script>
#
# #+PROPERTY: header-args :wrap org-results-container
#
#+CAPTION: Contrive to display mtcars
#+BEGIN_SRC R :exports both :results value :colnames yes
mtcars
#+END_SRC
#+ATTR_HTML: :class dataTable
#+RESULTS:
| mpg | cyl | disp | hp | drat | wt | qsec | vs | am | gear | carb |
|------+-----+-------+-----+------+-------+-------+----+----+------+------|
| 21 | 6 | 160 | 110 | 3.9 | 2.62 | 16.46 | 0 | 1 | 4 | 4 |
| 21 | 6 | 160 | 110 | 3.9 | 2.875 | 17.02 | 0 | 1 | 4 | 4 |
| 22.8 | 4 | 108 | 93 | 3.85 | 2.32 | 18.61 | 1 | 1 | 4 | 1 |
| 21.4 | 6 | 258 | 110 | 3.08 | 3.215 | 19.44 | 1 | 0 | 3 | 1 |
| 18.7 | 8 | 360 | 175 | 3.15 | 3.44 | 17.02 | 0 | 0 | 3 | 2 |
| 18.1 | 6 | 225 | 105 | 2.76 | 3.46 | 20.22 | 1 | 0 | 3 | 1 |
| 14.3 | 8 | 360 | 245 | 3.21 | 3.57 | 15.84 | 0 | 0 | 3 | 4 |
| 24.4 | 4 | 146.7 | 62 | 3.69 | 3.19 | 20 | 1 | 0 | 4 | 2 |
| 22.8 | 4 | 140.8 | 95 | 3.92 | 3.15 | 22.9 | 1 | 0 | 4 | 2 |
| 19.2 | 6 | 167.6 | 123 | 3.92 | 3.44 | 18.3 | 1 | 0 | 4 | 4 |
| 17.8 | 6 | 167.6 | 123 | 3.92 | 3.44 | 18.9 | 1 | 0 | 4 | 4 |
| 16.4 | 8 | 275.8 | 180 | 3.07 | 4.07 | 17.4 | 0 | 0 | 3 | 3 |
| 17.3 | 8 | 275.8 | 180 | 3.07 | 3.73 | 17.6 | 0 | 0 | 3 | 3 |
| 15.2 | 8 | 275.8 | 180 | 3.07 | 3.78 | 18 | 0 | 0 | 3 | 3 |
| 10.4 | 8 | 472 | 205 | 2.93 | 5.25 | 17.98 | 0 | 0 | 3 | 4 |
| 10.4 | 8 | 460 | 215 | 3 | 5.424 | 17.82 | 0 | 0 | 3 | 4 |
| 14.7 | 8 | 440 | 230 | 3.23 | 5.345 | 17.42 | 0 | 0 | 3 | 4 |
| 32.4 | 4 | 78.7 | 66 | 4.08 | 2.2 | 19.47 | 1 | 1 | 4 | 1 |
| 30.4 | 4 | 75.7 | 52 | 4.93 | 1.615 | 18.52 | 1 | 1 | 4 | 2 |
| 33.9 | 4 | 71.1 | 65 | 4.22 | 1.835 | 19.9 | 1 | 1 | 4 | 1 |
| 21.5 | 4 | 120.1 | 97 | 3.7 | 2.465 | 20.01 | 1 | 0 | 3 | 1 |
| 15.5 | 8 | 318 | 150 | 2.76 | 3.52 | 16.87 | 0 | 0 | 3 | 2 |
| 15.2 | 8 | 304 | 150 | 3.15 | 3.435 | 17.3 | 0 | 0 | 3 | 2 |
| 13.3 | 8 | 350 | 245 | 3.73 | 3.84 | 15.41 | 0 | 0 | 3 | 4 |
| 19.2 | 8 | 400 | 175 | 3.08 | 3.845 | 17.05 | 0 | 0 | 3 | 2 |
| 27.3 | 4 | 79 | 66 | 4.08 | 1.935 | 18.9 | 1 | 1 | 4 | 1 |
| 26 | 4 | 120.3 | 91 | 4.43 | 2.14 | 16.7 | 0 | 1 | 5 | 2 |
| 30.4 | 4 | 95.1 | 113 | 3.77 | 1.513 | 16.9 | 1 | 1 | 5 | 2 |
| 15.8 | 8 | 351 | 264 | 4.22 | 3.17 | 14.5 | 0 | 1 | 5 | 4 |
| 19.7 | 6 | 145 | 175 | 3.62 | 2.77 | 15.5 | 0 | 1 | 5 | 6 |
| 15 | 8 | 301 | 335 | 3.54 | 3.57 | 14.6 | 0 | 1 | 5 | 8 |
| 21.4 | 4 | 121 | 109 | 4.11 | 2.78 | 18.6 | 1 | 1 | 4 | 2 |
> -----Original Message-----
> From: emacs-orgmode-bounces+mec=stowers.org@gnu.org [mailto:emacs-
> orgmode-bounces+mec=stowers.org@gnu.org] On Behalf Of Cook, Malcolm
> Sent: Thursday, October 22, 2015 1:14 AM
> To: Charles C. Berry <ccberry@ucsd.edu>
> Cc: emacs-orgmode@gnu.org
> Subject: Re: [O] ox-html HOWTO? exporting #+RESULTS inside div
>
> Charles,
>
> Excellent - that is precisely what I needed.
>
> Additionally, I can avoid having to include the :wrap keyword on every header
> by specifying a single buffer-wide header arguments, such as
>
> #+PROPERTY: header-args :wrap org-results-container
>
> Thanks,
>
> ~ malcolm_cook@stowers.org
>
> ________________________________________
> From: Charles C. Berry <ccberry@ucsd.edu>
> Sent: Wednesday, October 21, 2015 9:18 PM
> To: Cook, Malcolm
> Cc: emacs-orgmode@gnu.org
> Subject: Re: ox-html HOWTO? exporting #+RESULTS inside div
>
> On Wed, 21 Oct 2015, Cook, Malcolm wrote:
>
> > Hi,
> >
> > I would like to contrive for the contents of results blocks to be
> > embedded in a new div with a common class of org-results-container.
>
> Try this:
>
> --8<---------------cut here---------------start------------->8---
> #+BEGIN_SRC shell :exports both :wrap org-results-container
> echo "org results here"
> #+END_SRC
> --8<---------------cut here---------------end--------------->8---
>
> which html export renders as
>
> --8<---------------cut here---------------start------------->8---
> <div class="org-results-container">
> <p>
> org results here
> </p>
>
> </div>
> --8<---------------cut here---------------end--------------->8---
>
> You can add a special-block filter if the <p> ... </p> is unwanted.
>
> HTH,
>
> Chuck
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: ox-html HOWTO? exporting #+RESULTS inside div
2015-11-05 0:02 ` Cook, Malcolm
@ 2015-11-05 4:08 ` Charles C. Berry
2015-11-06 19:45 ` Cook, Malcolm
0 siblings, 1 reply; 7+ messages in thread
From: Charles C. Berry @ 2015-11-05 4:08 UTC (permalink / raw)
To: Cook, Malcolm; +Cc: emacs-orgmode@gnu.org
On Wed, 4 Nov 2015, Cook, Malcolm wrote:
> Charles, Thanks again for you suggestion. Alas, using 'header-args
>:wrap org-results-container' has the unforeseen (by me) side effect
>of masking my use of `#+ATTR_HTML :class dataTable` on selected
>exported tables (which I use to allow for search/sortable/scrollable
>tables). Now, the ':class dataTable' attribute is placed on the new
><div> instead of the <table> with undesired outcome.
> Do you have any thoughts on how to accomplish both my goals (apply
> :class table to selected results, and making ALL results be
> addressable using javascript. FYI - My application is to hide all
> source blocks on html open. Clicking on a source block caption
> shows the source. This provides an HTML view that hides the source
> until desired. My recipients of such analysis write-ups really like
> this.
[snip]
> # #+PROPERTY: header-args :wrap org-results-container
> #
This creates a special block and attributes on the results will apply
to it - not its contents.
What you want can be obtained by creating a different special block
and then applying a filter. So, wrap like this
#+PROPERTY: header-args :wrap org-results-container-to-filter
and add a filter to `org-export-filter-special-block-functions' that
strips the 'to-filter' and adds the `dataTable' where it is needed.
HTH,
Chuck
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: ox-html HOWTO? exporting #+RESULTS inside div
2015-11-05 4:08 ` Charles C. Berry
@ 2015-11-06 19:45 ` Cook, Malcolm
2015-11-06 21:01 ` Charles C. Berry
0 siblings, 1 reply; 7+ messages in thread
From: Cook, Malcolm @ 2015-11-06 19:45 UTC (permalink / raw)
To: 'Charles C. Berry'; +Cc: emacs-orgmode@gnu.org
> > Charles, Thanks again for you suggestion. Alas, using 'header-args
> >:wrap org-results-container' has the unforeseen (by me) side effect
> >of masking my use of `#+ATTR_HTML :class dataTable` on selected
> >exported tables (which I use to allow for search/sortable/scrollable
> >tables). Now, the ':class dataTable' attribute is placed on the new
> ><div> instead of the <table> with undesired outcome.
>
> > Do you have any thoughts on how to accomplish both my goals (apply
> > :class table to selected results, and making ALL results be
> > addressable using javascript. FYI - My application is to hide all
> > source blocks on html open. Clicking on a source block caption
> > shows the source. This provides an HTML view that hides the source
> > until desired. My recipients of such analysis write-ups really like
> > this.
>
> [snip]
>
> > # #+PROPERTY: header-args :wrap org-results-container
> > #
>
> This creates a special block and attributes on the results will apply
> to it - not its contents.
>
> What you want can be obtained by creating a different special block
> and then applying a filter. So, wrap like this
>
> #+PROPERTY: header-args :wrap org-results-container-to-filter
>
> and add a filter to `org-export-filter-special-block-functions' that
> strips the 'to-filter' and adds the `dataTable' where it is needed.
Hi Charles - ok - you've got me looking at ox aspects I've not yet explored.... good!
If I understand your suggestion, the filter you propose would need to somehow "know" which tables I desire to be adorned with `class :dataTable`.
How do you reckon I might declare that?
Upon reflection, I wonder if following source block header syntax might rather be considered "in the spirit of things" and worthy of implementation:
#+begin_src R :exports value table :prefix '#+attr_html :class dataTable'
which would be interpreted by ob-sbe (somehow) to emit and
#+attr_html :class dataTable
Immediately prior to the #+results, all of which might be further :wrapped.
Or am I putting the cart before the horse?
Reminder (in part to self): my goal is two-fold
(a) declare to the ox-html exporter a :class (i.e. dataTable) to adorn selected exported results tables
(b) have a means of addressing the exported html results of a code block allowing to conditionally hide or expose it (i.e. toggle exposure when user click on the export source code. This is what "> #+PROPERTY: header-args :wrap org-results-container" provided for me, except that the introduction of the new <div> was blocking my means of doing (a)
Cheers,
Malcolm
>
> HTH,
>
> Chuck
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: ox-html HOWTO? exporting #+RESULTS inside div
2015-11-06 19:45 ` Cook, Malcolm
@ 2015-11-06 21:01 ` Charles C. Berry
0 siblings, 0 replies; 7+ messages in thread
From: Charles C. Berry @ 2015-11-06 21:01 UTC (permalink / raw)
To: Cook, Malcolm; +Cc: emacs-orgmode@gnu.org
On Fri, 6 Nov 2015, Cook, Malcolm wrote:
>>> Charles, Thanks again for you suggestion. Alas, using 'header-args
> > >:wrap org-results-container' has the unforeseen (by me) side effect
> > >of masking my use of `#+ATTR_HTML :class dataTable` on selected
> > >exported tables (which I use to allow for search/sortable/scrollable
> > >tables). Now, the ':class dataTable' attribute is placed on the new
> > ><div> instead of the <table> with undesired outcome.
> >
> > > Do you have any thoughts on how to accomplish both my goals (apply
> > > :class table to selected results, and making ALL results be
> > > addressable using javascript. FYI - My application is to hide all
> > > source blocks on html open. Clicking on a source block caption
> > > shows the source. This provides an HTML view that hides the source
> > > until desired. My recipients of such analysis write-ups really like
> > > this.
> >
> > [snip]
> >
> > > # #+PROPERTY: header-args :wrap org-results-container
> > > #
> >
> > This creates a special block and attributes on the results will apply
> > to it - not its contents.
> >
> > What you want can be obtained by creating a different special block
> > and then applying a filter. So, wrap like this
> >
> > #+PROPERTY: header-args :wrap org-results-container-to-filter
> >
> > and add a filter to `org-export-filter-special-block-functions' that
> > strips the 'to-filter' and adds the `dataTable' where it is needed.
>
> Hi Charles - ok - you've got me looking at ox aspects I've not yet explored.... good!
>
> If I understand your suggestion, the filter you propose would need to
> somehow "know" which tables I desire to be adorned with `class
> :dataTable`.
>
Make a really dumb filter that just wraps a special block with something
like
`special-block>>>' ... `<<<special-block'
and export a document that has :wrap as above. Take a look at what you
got. With luck you can fashion args for replace-regex-in-string and call
it once or twice to convert whatever was between those markers to what you
want. Then turn those calls into a filter.
> How do you reckon I might declare that?
>
> Upon reflection, I wonder if following source block header syntax might
> rather be considered "in the spirit of things" and worthy of
> implementation:
>
> #+begin_src R :exports value table :prefix '#+attr_html :class dataTable'
>
> which would be interpreted by ob-sbe (somehow) to emit and
> #+attr_html :class dataTable
> Immediately prior to the #+results, all of which might be further :wrapped.
The trouble is it will not be wrapped in the right place, and you are back
to where you were when you started this thread.
>
> Or am I putting the cart before the horse?
>
I'd say so.
> Reminder (in part to self): my goal is two-fold (a) declare to the
> ox-html exporter a :class (i.e. dataTable) to adorn selected exported
> results tables
Of course there are other ways to solve this. You could create a derived
backend and define a new kind of export block for it and a suitable
transcoder. But that might seems like overkill to me.
> (b) have a means of addressing the exported html results of a code block
> allowing to conditionally hide or expose it (i.e. toggle exposure when
> user click on the export source code. This is what "> #+PROPERTY:
> header-args :wrap org-results-container" provided for me, except that
> the introduction of the new <div> was blocking my means of doing (a)
Right. So you use replace-regex-in-string to fix that.
HTH,
Chuck
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2015-11-06 21:01 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-10-21 23:12 ox-html HOWTO? exporting #+RESULTS inside div Cook, Malcolm
2015-10-22 2:18 ` Charles C. Berry
2015-10-22 6:13 ` Cook, Malcolm
2015-11-05 0:02 ` Cook, Malcolm
2015-11-05 4:08 ` Charles C. Berry
2015-11-06 19:45 ` Cook, Malcolm
2015-11-06 21:01 ` Charles C. Berry
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).