Режим организации: Использование формулы таблицы вне таблицы?

11

Мне интересно, можно ли отобразить результат вычислений, выполненных на табличных данных, вне таблицы.

Например, предположим, у меня есть таблица со списком имен. Можно ли иметь простой текст, который говорит что-то вроде " This below list contains [ ] names." и [ ]содержит результат подсчета таблицы?

Крис
источник

Ответы:

9

Вы можете использовать встроенный блок кода Babel и функцию lisp org-table-get-remote-range для получения доступа к диапазонам таблиц, как показано в следующем примере (число 3 после исходного блока - это то, что было создано при выполнении Cc Cc Это)

  #+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
источник
В моих настройках Emacs [: сырье результатов] не показывает результаты, [: сырье результатов] успешно. Однако каждый раз, когда я Cc Cc или Cc Cv Cb, один и тот же результат повторяется. Я не знаю почему, и у меня нет решения для лишних результатов.
RUserPassingBy
1
valueдолжен быть настройкой по умолчанию, но если вы сделаете это явно, то, безусловно, правильнее. Что касается повторения вставки результатов при каждом последующем выполнении C-c C-c, это является неотъемлемой проблемой, поскольку результат не заключен в какие-либо маркеры, которые позволили бы Оргу определить пределы. Можно было бы придумать какое-то решение, используя текстовые маркеры, которые не видны при экспорте. Нынешняя ситуация не оптимальна, я согласен.
dfeich
Спасибо за ваше точное объяснение, я понимаю. Я буду иметь в виду внутреннюю проблему. Ваше решение в линейном блоке отлично!
RUserPassingBy