* 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).