emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: "Cook, Malcolm" <MEC@stowers.org>
To: "'Charles C. Berry'" <ccberry@ucsd.edu>
Cc: "'emacs-orgmode@gnu.org'" <emacs-orgmode@gnu.org>
Subject: Re: seeking good practices for writing about org using org
Date: Thu, 4 Aug 2016 20:56:18 +0000	[thread overview]
Message-ID: <a8c7d9d291ca44948c3280e9ecda8a00@exchsrv2.sgc.loc> (raw)
In-Reply-To: <alpine.OSX.2.20.1608040856300.2055@charles-berrys-macbook.local>


[-- Attachment #1.1: Type: text/plain, Size: 6126 bytes --]

Hi Charles,



> On Wed, 3 Aug 2016, Cook, Malcolm wrote:

>

 > > Thanks.  Much closer.  Still some issues.  Mind taking another

> > gander....  (hoping the attached jpeg of the webpage rendered comes

> > through as an attachment)....

> >

> > If my emacs buffer holds...

> > ----------------------------------------------

> > #+BEGIN_SRC org :exports both :results value ascii

>

 > ...............................................^^^^^

>

 > what is the `ascii' doing?

>

 > Can you provide a link to documentation in the manual or a

> docstring describing its function?



I cannot!  I learned this from reading the code.  In ob-org.el we find provision for this  as well as `html' and `latex'



(defun org-babel-execute:org (body params)

  "Execute a block of Org code with.

This function is called by `org-babel-execute-src-block'."

  (let ((result-params (split-string (or (cdr (assoc :results params)) "")))

                (body (org-babel-expand-body:org

                       (replace-regexp-in-string "^," "" body) params)))

    (cond

     ((member "latex" result-params)

      (org-export-string-as (concat "#+Title: \n" body) 'latex t))

     ((member "html" result-params) (org-export-string-as  body 'html t))

     ((member "ascii" result-params) (org-export-string-as body 'ascii t))

     (t body)

     )))





This is all undocumented.  I think it is a 'nod in the direction' of what I am trying to accomplish, allowing to see as "results" the org markup transcoded into the markup of a backend.  See below for my hack extension on this idea.



>

 > Why don't you have 'replace' in the :results args?



Oops.  Of course.  While trying to understand all this, I had done this to similar effect instead:



(setq  org-babel-default-header-args:org nil) ; fix bug? NOT silent





> >

> > ,* Acknowledgments

>

 > This bit behaves as you might expect in plain text export, markdown, and

> latex export:

>

 > >  [[mailto:mywife@example.com][my wife]]

>

 > but in html it does create `<a href="mailto:...'.

>

 > That is because of what `org-babel-exp-code-template' leads

> `org-html-src-block' to do. You might try dropping `%lang' from the

> template, but a better solution is to rewrite `org-html-src-block' and

> create a derived exporter.

>

 >

 > >

> > ,* Chapter one

> >

> > Fa la la ls

> >

> > ,* Chapter two

> >

> > La di di

> >

> > ,* Finally, here is a table of contents!

> >

> > ,#+TOC:

>

 > What does this idiom do?

>

 > Precisely, where does the documentation say what

>

 > #+TOC:

>

 > read as "<hash> <plus> T O C <colon> <newline>"

>

 > should create??



I though (apparently incorrectly) it was the same as `#+TOC: headlines 2' which does contrive to relocate a Table of Contents to that location.



> ---

>

 > Re your next post, I suggest spending some time reading

>

 > (info "(org) results")

>

 > to grasp what the various options actually do. It is probably a good idea

> to execute src blocks to see the RESULTS before you try to export them.

>

 > Reading

>

 > (info "(org) wrap")

>

 > might also help and certainly a quick breeze thru

>

 > (info "(org) Specific header arguments")

>

 > to remind yourself of what all the possibilities are is something I have

> to do from time to time.



Thanks for these suggestions.  I have had better results after doing so.



I played with extending org-babel-execute:org to allow including MULTIPLE transcoded markdown results using screwy variant syntax of `:results  +ascii +html +latex` with some success.



For example, `:results +ascii +latex' exported html which renders as:

[cid:image001.png@01D1EE68.BBAEA750]





I now think perhaps I want additional options on a source block allowing to be included in the exported RESULTS:

  1) transcoded markdown, appropriately escaped for the current backend

  1) the source block itself (including the #+BEGIN/END directives)  (as distinct from :results code, which omits the directives)



Injecting this kind of logic into org-babel-execute:org  as I did is mis-placing the logic and only muddles further my thinking about this.



FWIW - here is the re-definition, if you care to play with or critique it.



(defun org-babel-execute:org (body params)

  "Execute a block of Org code with.

This function is called by `org-babel-execute-src-block'."

  (let* ((result-params (split-string (or (cdr (assoc :results params)) "")))

                (body (org-babel-expand-body:org

                                (replace-regexp-in-string "^," "" body) params))

                (val (cond

                       ((member "latex" result-params)

                                (org-export-string-as (concat "#+Title: \n" body) 'latex t))

                       ((member "html" result-params) (org-export-string-as  body 'html t))

                       ((member "ascii" result-params) (org-export-string-as body 'ascii t))

                       (t body)

                       )))

    ;; HACK: output protected versions of each of latex,html,ascii,md transcoded markup as requested with +{latex,html,ascii,md} in header-args

    (when (member "+latex" result-params)

      (setq val (format "#+BEGIN_EXAMPLE\n%s\n#+END_EXAMPLE\n%s" (org-export-string-as  body 'latex t) val)))

    (when (member "+html" result-params)

      (setq val (format "#+BEGIN_EXAMPLE\n%s\n#+END_EXAMPLE\n%s" (org-export-string-as  body 'html t) val)))

    (when (member "+ascii" result-params)

      (setq val (format "#+BEGIN_EXAMPLE\n%s\n#+END_EXAMPLE\n%s" (org-export-string-as  body 'ascii t) val)))

    (when (member "+md" result-params)

      (setq val (format "#+BEGIN_EXAMPLE\n%s\n#+END_EXAMPLE\n%s" (org-export-string-as  body 'md t) val)))

    val)

)



Cheers,



Malcolm



>

 > HTH,

>

 > Chuck

[-- Attachment #1.2: Type: text/html, Size: 18445 bytes --]

[-- Attachment #2: image001.png --]
[-- Type: image/png, Size: 57004 bytes --]

  reply	other threads:[~2016-08-04 20:56 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-08-03 23:50 seeking good practices for writing about org using org Cook, Malcolm
2016-08-04  2:15 ` Charles C. Berry
2016-08-04  2:47   ` Cook, Malcolm
2016-08-04 16:24     ` Charles C. Berry
2016-08-04 20:56       ` Cook, Malcolm [this message]
2016-08-05  3:05         ` Charles C. Berry
2016-08-04  2:54   ` Cook, Malcolm

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=a8c7d9d291ca44948c3280e9ecda8a00@exchsrv2.sgc.loc \
    --to=mec@stowers.org \
    --cc=ccberry@ucsd.edu \
    --cc=emacs-orgmode@gnu.org \
    /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).