Tryb organizacji: używasz formuły tabeli poza tabelą?

11

Zastanawiam się, czy możliwe jest wyświetlanie wyniku obliczeń wykonanych na danych tabeli poza tabelą.

Załóżmy na przykład, że mam tabelę z listą nazwisk. Czy możliwe jest posiadanie zwykłego tekstu, który mówi coś w stylu „ This below list contains [ ] names.” i [ ]zawiera wynik zliczania tabeli?

Chris
źródło

Odpowiedzi:

9

Możesz użyć wbudowanego bloku kodu babel i funkcji lisp org-table-get-remote-range do uzyskania dostępu do zakresów tabel, jak w poniższym przykładzie (liczba 3 po bloku źródłowym jest tym, co powstało, gdy wykonano Cc Cc na to)

  #+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
źródło
W moich ustawieniach Emacsa [: wyniki surowe] nie pokazuje wyników, [: wyniki wartość surowe] powiodło się. Jednak za każdym razem, gdy I Cc Cc lub Cc Cv Cb, powtarzany jest ten sam nadmiar. Nie wiem dlaczego i nie mam rozwiązania dla zbędnych wyników.
RUserPassingBy
1
valuepowinno być ustawieniem domyślnym, ale wyraźne jest z pewnością bardziej poprawne. W odniesieniu do powtarzania wstawiania wyników przy każdym kolejnym wykonaniu C-c C-c, jest to nieodłączny problem, ponieważ wynik nie jest zawijany w żaden rodzaj markerów, który pozwoliłby Orgowi ustalić granice. Trzeba by było ugotować jakieś rozwiązanie za pomocą znaczników w tekście, które są niewidoczne podczas eksportu. Zgadzam się, że obecna sytuacja nie jest optymalna.
dfeich
Rozumiem, dziękuję za dokładne wyjaśnienie. Będę pamiętać o nieodłącznym problemie. Twoje rozwiązanie wbudowanego bloku jest świetne!
RUserPassingBy