Tabele i miniarkusze kalkulacyjne w Emacsie
13.04.2011 22:15
Ten wpis będzie kontynuacją rozpoczętego tematu związanego z trybem org Emacsa. W notatce Organizuj życie zwykłym tekstem opisałem sposób korzystania z org-mode, jego podstawowe przeznaczenie oraz sposób eksportowania notatek do plików HTML lub PDF. Drugi wpis pt. Statyczne strony internetowe w Emacsie jest rozwinięciem tematu eksportu do formatu html. Opisałem w nim również jak w prosty sposób umieścić zaawansowane wzory/równania na stronie korzystając (bez wiedzy użytkownika) z MathJax.
Skoro jesteśmy przy wzorach warto wspomnieć również o możliwości wykonywania obliczeń. Emacs posiada wbudowany tryb calc, ale w org-mode wygodniej jest skorzystać z formuł (podobnych do tych z Excela).
Tabele w org-mode tworzymy przy pomocy polecenia org-table-create. Komendę wpisujemy standardowo po wciśnięciu kombinacji klawiszy M-x. Następnie podajemy rozmiar tabeli:
Table size Columns x Rows [e.g. 5x2]: 3x2
Poleceń nie musimy pamiętać. Wystarczy przy wpisywaniu skorzystać z klawisza Tab dopełniającego wpisywane wyrażenie lub wyświetlającego listę podpowiedzi.
Innym sposobem jest skorzystanie z Menu Tbl.
Utwórzmy prostą tabelę zawierającą nazwy popularnych przeglądarek internetowych oraz oceny redakcji i użytkowników.
| Przeglądarka | | | |---+---+---| | | | |
UWAGA: Blog ,,psuje'' formatowanie wszystkich tabeli we wpisie. ,,Wycina'' spacje i ,,zaciemnia'' istotę org-table. Poprawnie wyświetlana wersja znajduje się w linku na końcu wpisu.
To wciśnięciu Tab (podobnie jak w Excelu) kursor przechodzi do kolejnej komórki danego wiersza. W czasie wciskania klawisza Tab następuje ,,autodopasowanie'' szerokości tabeli do zawartości komórek.
| Przeglądarka | Redakcja | | |--------------+---+---| | | | |
W rezultacje otrzymujemy:
| Przeglądarka | Redakcja | Użytkownicy | |--------------+----------+-------------| | | | |
Proces tworzenia tabeli można zaobserwować na przykładowym nagraniu. Autor filmu prezentuje tu również możliwości omówione w dalszej części wpisu. Nie wszystko co pokazuje poszło po jego myśli, ale ideę widać;)
Wypełnijmy naszą tabelę danymi.
| Przeglądarka | Redakcja | Użytkownicy | |-------------------+----------+-------------+ | Firefox | 9.5 | 8.4 | | Internet Explorer | 8.0 | 7.6 | | Google Chrome | 8.0 | 8.1 | | Opera | 9.5 | 8.4 |
Ustawmy teraz kursor w ostatniej kolumnie i dodajmy przy pomocy menu Tbl jeszcze jedną kolumnę z prawej strony. W kolumnie tej znajdą się wartości średnie obliczone na podstawie ocen redakcji i użytkowników. W wierszu, w którym chcemy otrzymać średnią wpisujemy następującą formułę:
| Przeglądarka | Redakcja | Użytkownicy | Średnia | |-------------------+----------+-------------+-----------------| | Firefox | 9.5 | 8.4 | = vmean($2..$3) | | Internet Explorer | 8.0 | 7.6 | | | Google Chrome | 8.0 | 8.1 | | | Opera | 9.5 | 8.4 | |
Wciskamy kombinację klawiszy C-c.
| Przeglądarka | Redakcja | Użytkownicy | Średnia | |-------------------+----------+-------------+---------| | Firefox | 9.5 | 8.4 | 8.95 | | Internet Explorer | 8.0 | 7.6 | | | Google Chrome | 8.0 | 8.1 | | | Opera | 9.5 | 8.4 | | #+TBLFM: $4=vmean($2..$3)
W miejscu formuły pojawia się wartość liczbowa, a sama formuła umieszczona jest pod tabelą. Aby zastosować formułę dla całej kolumny korzystamy z kombinacji klawiszy C-u C-c * lub umieszczamy kursor w linii #+TBLFM pod tabelą i wciskamy C-c C-c.
| Przeglądarka | Redakcja | Użytkownicy | Średnia | |-------------------+----------+-------------+---------| | Firefox | 9.5 | 8.4 | 8.95 | | Internet Explorer | 8.0 | 7.6 | 7.8 | | Google Chrome | 8.0 | 8.1 | 8.05 | | Opera | 9.5 | 8.4 | 8.95 | #+TBLFM: $4=vmean($2..$3)
Z pewnością każdy kto czyta ten wpis zadał sobie pytanie jak określone są współrzędne komórek i jak to sprawdzić. Aby wyświetlić współrzędne komórki, w której znajduje się kursor wciskamy kombinację C-c ?. Poza tym możemy wyświetlić oznaczenia wierszy i kolumn tabeli (podobnie jak w Excelu) korzystając z kombinacji C-c } lub wybierając z menu opcję Show Col/Row Numbers.
Ściąga:
C-c ? -- Pokaż współrzędne komórki, w której znajduje się kursor
C-c } -- Pokaż oznaczenia wierszy i kolumn
C-c -- oblicz wartość formuły w danej komórce
C-u C-c * -- zastosuj formułę do całej kolumny
Skrót C-u C-c * jest równoważny wciśnięciu C-c C-c, gdy kursor znajduje się w linii #+TBLFM.
Tym wpisem kończę serię związaną z org-mode. Może jeszcze kiedyś wrócę do tego tematu. Zainteresowanych możliwościami Emacsa odsyłam na stronę emacswiki.