org-mode 스프레드시트로 사용하기
Emacs에는 org-mode란 도구가 있다. 할 일 목록, 일정, 작업 로그를 정리할 때 유용하다. 행열 추가/삭제, 행열 이동 등 기본 표 편집도 가능하며, 표 안에서 간단한 계산도 가능하다. 여기서는 표 계산 방법을 간단히 살펴보려 한다. 이 글은 Org as a spreadsheet system: a short introduction을 참고해 정리한 것이다.
테이블 생성
org-mode로 표 계산을 하려면 면서 표를 삽입해야 한다. 현재 버퍼가 org-mode라면 메뉴에 Org관련 항목이 표시된다. Tbl > Create
를 선택해 표를 넣을 수도 있지만, 일반 Emacs 사용자라면 M-x org-table-create
를 실행하는 쪽을 선호할 것이다. org-mode에서 표는 그냥 텍스트로 되어 있고 열 구분자로 |
를 사용하므로 별도 명령을 실행시킬 필요 없이 |
로 행을 시작하면 바로 표를 만들 수 있다.
| Name | English | Math | Science |
|--------+---------+------+---------|
| Apple | 88 | 75 | 90 |
| Orange | 77 | 65 | 55 |
| Banana | 90 | 95 | 88 |
셀 참조
| Name | English | Math | Science | Total |
|--------+---------+------+---------+-----------|
| Apple | 88 | 75 | 90 | [Forumla] |
| Orange | 77 | 65 | 55 | |
| Banana | 90 | 95 | 88 | |
위 표에서 [Formula]
위치에 English, Math, Science 점수 합계를 계산해 넣어려 한다. 수식을 넣으려면 다른 셀의 데이터를 참조해야 하므로 셀 참조 방법을 알아야 한다. 커서를 [Formula]
셀에 놓고 C-c ?
를 누르면 미니버퍼에 line: 2, col: 5, ref: @2$5 or E2
가 표시된다. 따라서 이 셀은 @2$5
또는 E2
로 참조할 수 있지만, 수식을 계산하면 참조가 @2$5
와 같은 형식으로 바뀌므로, 그냥 org-mode 형식에 익숙해지는 게 좋겠다.
표 안에 커서가 있는 상태에서 C-c }
를 누르면 다음과 같이 표에 행과 열 번호가 표시된다.
1| Name | English | Math | Science | Total |
I*1|$1------+$2-------+$3----+$4-------+$5---------|
2| Apple | 88 | 75 | 90 | [Forumla] |
3| Orange | 77 | 65 | 55 | |
3| Banana | 90 | 95 | 88 | |
수식 입력
위 표에서 [Formula]
위치에 :=vsum($2..$4)
를 입력한다. 수식은 현재 행에서 $2
부터 $4
까지 열의 숫자를 더하라는 뜻이다. 그리고 커서가 수식에 있는 상태에서 C-c C-c
를 누르면 수식이 계산 결과로 바뀌고, 테이블 밑에 #+TBLFM
으로 시작하는 행이 추가되는 것을 볼 수 있다.
열 수식, 셀 수식
위에서 Apple 학생의 과목 점수 합계를 구했는데, 다른 학생에 대해서도 같은 작업을 하고 싶다. 즉 열의 모든 셀에 같은 수식을 적용하고 싶다. 이때 열 수식을 사용할 수 있다. 열 수식을 입력하려면 수식을 입력할 때 :=
로 시작하는 대신 =
로 시작하면 된다.
C-c C-c
를 누르면 수식을 입력한 셀만 계산 값으로 바뀐다. 열 전체에 계산 결과를 넣으려면 C-u C-c *
를 누르면 된다. 커서가 #+TBLFM
행 위에 있으면 C-c C-c
를 눌러도 모든 수식을 다시 계산한다.
| Name | English | Math | Science | Total |
|--------+---------+------+---------+-------|
| Apple | 88 | 75 | 90 | 253 |
| Orange | 77 | 65 | 55 | 197 |
| Banana | 90 | 95 | 88 | 273 |
#+TBLFM: $5=vsum($2..$4)
셀 수식이었을 때는 #+TBLFM
에 수식이 @2$5=vsum($2..$4)
로 표현되었는데, 열 수식으로 바꾸니 $5=vsum($2..$4)
로 바뀌었다. 셀 수식이었을 때는 @2$5
셀에 계산 결과가 반영되었지만 열 수식에서는 $5
열 전체에 계산 결과가 적용된다.
대화형 수식 편집
지금까지는 셀에 직접 :=
또는 =
를 입력해 셀 수식 또는 열 수식을 입력했다. 취향에 따라C-u C-c =
또는 C-c =
를 눌러 미니버퍼에서 셀 수식 또는 열 수식을 입력할 수도 있다. 그러나 C-c '
를 누르면 전용 버퍼에서 수식을 편집할 수 있다. 수식 편집 시 커서가 참조 위에 있으면 해당 참조 영역이 표에서 하이라이트 된다. S-<left/right/up/down>
으로 참조 영역을 선택할 수도 있다.
맺음말
지금까지 org-mode에서 표 계산 사용 방법을 간단히 살펴 보았다. 이 정도면 웬만한 스트레드시트가 부럽지 않다. 표가 아주 크다든가 복잡한 계산이 필요한 경우, 차트를 그려야 하는 경우라면 구글 스프레드시트를 사용하겠지만, 간단한 표 계산이 필요한 경우라면 매우 유용하게 사용할 수 있다.
참고
- org-mode 줄여서 Org라고도 한다. org-mode 홈페이지에서도 Org와 org-mode를 섞어 사용한다.
- Org as a spreadsheet system: a short introduction