Mode organisationnel: utiliser une formule de table en dehors d'une table?

11

Je me demande s'il est possible d'afficher le résultat des calculs effectués sur des données de table, en dehors d'une table.

Par exemple, supposons que j'ai une table avec une liste de noms. Est-il possible d'avoir du texte en clair qui dit quelque chose comme " This below list contains [ ] names." et d'avoir [ ]le résultat du comptage du tableau?

Chris
la source

Réponses:

9

Vous pouvez utiliser un bloc de code babel en ligne et la fonction lisp org-table-get-remote-range pour obtenir l'accès aux plages de table comme dans l'exemple suivant (le numéro 3 après le bloc source est ce qu'il a produit lorsque Cc Cc est exécuté sur il)

  #+TBLNAME: table1
  | Name    | Points |
  |---------+--------|
  | Andreas |      5 |
  | Barbara |      8 |
  | Carl    |      7 |
  |---------+--------|
  | Total   |     20 |
  #+TBLFM: @5$2=vsum(@I..@II)

  Now I insert in the text the number of names in the above table: 
  src_emacs-lisp[:results raw]{(length (org-table-get-remote-range "table1" "@I$1..@II$1" ))} 3
dfeich
la source
Dans mes paramètres Emacs, [: results raw] n'affiche pas les résultats, [: results value raw] a réussi. Cependant à chaque fois que I Cc Cc, ou Cc Cv Cb, le même résultat redondant est répété. Je ne sais pas pourquoi et je n'ai pas de solution pour les résultats redondants.
RUserPassingBy
1
valuedevrait être le paramètre par défaut, mais le rendre explicite est certainement plus correct. En ce qui concerne la répétition de l'insertion des résultats à chaque exécution ultérieure de C-c C-c, il s'agit d'un problème inhérent, car le résultat n'est enveloppé dans aucun type de marqueurs qui permettraient à Org de déterminer les limites. Il faudrait préparer une solution à l'aide de marqueurs de texte invisibles à l'exportation. La situation actuelle n'est pas optimale, je suis d'accord.
dfeich
Merci pour votre explication précise, je comprends. Je garderai à l'esprit le problème inhérent. Votre bloc de solution en ligne est génial!
RUserPassingPar