Org-Modus: Tabellenformel außerhalb einer Tabelle verwenden?

11

Ich frage mich, ob es möglich ist, das Ergebnis von Berechnungen für Tabellendaten außerhalb einer Tabelle anzuzeigen.

Angenommen, ich habe eine Tabelle mit einer Liste von Namen. Ist es möglich, einfachen Text zu haben, der so etwas wie " This below list contains [ ] names." sagt und [ ]das Ergebnis des Zählens der Tabelle enthält?

Chris
quelle

Antworten:

9

Sie können einen Inline-Babel-Codeblock und die Lisp-Funktion org-table-get-remote-range verwenden , um Zugriff auf Tabellenbereiche zu erhalten, wie im folgenden Beispiel (die Nummer 3 nach dem Quellblock ist das, was bei der Ausführung von Cc Cc erzeugt wird es)

  #+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
quelle
In meinen Emacs-Einstellungen zeigt [: results raw] die Ergebnisse nicht an, [: results value raw] war erfolgreich. Jedes Mal, wenn I Cc Cc oder Cc Cv Cb, wird das redundante gleiche Ergebnis wiederholt. Ich weiß nicht warum und ich habe keine Lösung für die redundanten Ergebnisse.
RUserPassingBy
1
valuesollte die Standardeinstellung sein, aber Ihre explizite Angabe ist sicherlich korrekter. In Bezug auf die Wiederholung des Einfügens der Ergebnisse bei jeder nachfolgenden Ausführung von C-c C-cist dies ein inhärentes Problem, da das Ergebnis nicht in irgendeine Art von Markierungen eingeschlossen ist, die es Org ermöglichen würden, die Grenzen zu bestimmen. Man müsste eine Lösung mit In-Text-Markierungen erstellen, die beim Export nicht sichtbar sind. Die aktuelle Situation ist nicht optimal, da stimme ich zu.
dfeich
Vielen Dank für Ihre genaue Erklärung, ich verstehe. Ich werde das inhärente Problem im Auge behalten. Ihre Lösung Inline-Block ist großartig!
RUserPassingBy