emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Stefan Vollmar <vollmar@nf.mpg.de>
To: "Thomas S. Dye" <tsd@tsdye.com>,
	Sebastien Vauban <wxhgmqzgwmuf@spammotel.com>,
	Achim Gratz <Stromeko@Nexgo.DE>,
	Nicolas Goaziou <n.goaziou@gmail.com>
Cc: Org Mode Mailing List <emacs-orgmode@gnu.org>
Subject: Re: #+call split into multiple lines?
Date: Fri, 29 Mar 2013 09:24:19 +0100	[thread overview]
Message-ID: <3741EDEB-8A94-4402-85D3-D74236811F97@nf.mpg.de> (raw)
In-Reply-To: <m1obe3w5vc.fsf@poto.westell.com>

[-- Attachment #1: Type: text/plain, Size: 3985 bytes --]

Dear Thomas,
dear Sebation,
dear Achim,
dear Nicolas,

maybe a misunderstanding: the original idea is to produce a "personal homepage" for members of our institute, with one file per person - here is a better example http://www.nf.mpg.de/cv-howto/ex3-en.org and here some background information http://www.nf.mpg.de/cv-howto/cv-en.html.

As you can see, we used MACROs for our hcard-HTML templates - this currently does not work unless all arguments are written in one line. We need 10+ arguments and using named arguments is a much better strategy anyway.

The problem is quite general, I think, and a common solution I quite like is a key-value structure (preferably with optional comments), one key-value pair per line. 

Using a table for a key-value assignment is, of course, possible. Here again your example: 

#+name: card-table
| cname                   | gname      | photo                 | etc.|
| Dr. Stefan Vollmar      | Stefan     | stefan-vollmar.jpg    | ... |

Editing a table with many columns is awkward (not everybody uses Emacs for our templates). Much easier (to edit) is the transposed version:

#+name: card-table
| cname | Dr. Stefan Vollmar |
| gname | Stefan             |
| photo | stefan-vollmar.jpg |
...

This might work reasonably well - if (1) I could prevent the table from being exported to HTML, (2) (probably more difficult) if this kind of thing would work:

#+call: hcard(v=card-table) :results html

with

...
<h1>$v["cname"]</h1>
<p><b>Given Name:</b> $v["gname"]</p>
...

inside the hcard-babel-block (org) to reference the named values.

My feeling is (please correct me if I am wrong) that maybe we would want two Babel blocks: one for setting a set of variables/an array (elisp?) and one for filling the template?

Could I fill a suitable structure/array/set of variables within an elisp block and then reference it/them in the org template that only requires replacing placeholders?

Many thanks in advance!

Warm regards,
 Stefan


On 28.03.2013, at 22:51, Thomas S. Dye wrote:

> 
> 
> Aloha Seb,
> 
> "Sebastien Vauban"
> <wxhgmqzgwmuf-geNee64TY+gS+FvcfC7Uqw@public.gmane.org> writes:
> 
>> Hi Thomas,
>> 
>> Thomas S. Dye wrote:
>>> In this situation I often put the arguments in a named Org table and
>>> then write the Babel source code block to take a single argument--the
>>> table name--and parse the information passed in that way.  
>>> 
>>> #+name: card-table
>>> | cname                   | gname      | photo                 | etc.|
>>> | Dr. Stefan Vollmar      | Stefan     | stefan-vollmar.jpg    | ... |
>>> | Dr. Stefan Vollmar, Jr. | Stefan Jr. | stefan-vollmar-jr.jpg | ... |
>>> 
>>> 
>>> #+call: mhead-hcard(card=card-table[0,]) for Stefan
>>> 
>>> #+call: mhead-hcard(card=card-table[1,]) for Stefan Jr.
>>> 
>>> If you don't mind writing some extra code for the Babel function, then
>>> 
>>> #+call: mhead-hcard(card=card-table,gname="Stefan")
>>> 
>>> etc.
>> 
>> And do you eventually have a way to write a "for-loop" for all the lines of
>> the tables, not being forced to write as many calls as the number of lines you
>> do have?
>> 
>> I don't see (immediately) how to do such, but that would really allow to
>> promote such a use case!
> 
> Not sure I understand your question.  Perhaps I misunderstood Stefan's
> use case?
> 
> There are several languages supported by Babel that have loop
> constructs.  I was assuming that Stefan would use one of these when I
> suggested the possibility of writing some extra code.
> 
> All the best,
> Tom
> 
> -- 
> Thomas S. Dye
> http://www.tsdye.com
> 
> 

-- 
Dr. Stefan Vollmar, Dipl.-Phys.
Head of IT group
Max-Planck-Institut für neurologische Forschung
Gleueler Str. 50, 50931 Köln, Germany
Tel.: +49-221-4726-213  FAX +49-221-4726-298
Tel.: +49-221-478-5713  Mobile: 0160-93874279
E-Mail: vollmar@nf.mpg.de   http://www.nf.mpg.de









[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 4490 bytes --]

  reply	other threads:[~2013-03-29  8:24 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-03-28 20:49 #+call split into multiple lines? Stefan Vollmar
2013-03-28 21:17 ` Thomas S. Dye
2013-03-28 21:27   ` Sebastien Vauban
2013-03-28 21:51     ` Thomas S. Dye
2013-03-29  8:24       ` Stefan Vollmar [this message]
2013-03-29  9:25         ` Achim Gratz
2013-03-29  9:34         ` feng shu
2013-03-29  2:33     ` Eric Abrahamsen
2013-03-29  2:43       ` Thomas S. Dye
2013-03-29  3:14         ` Eric Abrahamsen
2013-03-29  7:18 ` Achim Gratz

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=3741EDEB-8A94-4402-85D3-D74236811F97@nf.mpg.de \
    --to=vollmar@nf.mpg.de \
    --cc=Stromeko@Nexgo.DE \
    --cc=emacs-orgmode@gnu.org \
    --cc=n.goaziou@gmail.com \
    --cc=tsd@tsdye.com \
    --cc=wxhgmqzgwmuf@spammotel.com \
    /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).