WYSIWIG 편집기와 LaTeX

1. 위지위그 편집기

거의 대부분의 사람들은 컴퓨터에서 문서를 작성할 때 마이크로소프트 워드와 같은 프로그램을 쓸 것이다. 워드 같은 프로그램을 아시다시피 위지위그(WYSIWYG, What You See Is What You Get) 편집기라 한다. 실제 종이로 출력될 문서와 같은 (아니면 거의 흡사한) 형태를 직접 보면서 편집하는 툴이다. 초등학교 시절이었던 1989년, 금성사(…)의 장원이라는 워드프로세서가 있었는데 그건 위지위그 방식이 아니었다. 게다가 텍스트 화면에서 편집하는 프로그램이었다. 그러다가 1991년 정도에 접한 새로운 워드프로세서가 있었는데 바로 아래아 한글.

아래아 한글은 그래픽으로 작업을 해서 거기서부터 주는 충격이 대단했다. 그리고 위지위그 편집이 가능했다. 한글에서 편집한 문서를 엄청난 소음과 함께 출력되던 도트 프린터로 출력해서 본 기억이 아직도 난다.

 

2. 위지위그 편집기

위지위그 에디터와 대비되는 대표적인 문서 편집 도구로 LaTeX (레이텍)이 있다. LaTeX은 Knuth 선생이 만든 TeX라는 조판 언어에 기반한다. 이걸 전산학계에서 매우 유명하신 Lamport 선생이 개선한 것이다. 전산학자가 만든 문서 편집 프로그램이니 지극히 프로그래밍적으로 접근한다.

LaTeX는 위지위그와는 판이하게 다르게 마치 HTML을 날로 코딩하듯이 특수 조판 기호를 이용해 소스 코드를 작성한다. 그리고 이 소스 파일을 ‘컴파일’한다. 맞다. 코딩할 때 그 컴파일 바로 그것이다. 그러면 이 문서 소스 코드는 DVI, PS(Post Script), PDF 포맷으로 출력된다. 소스 코드에 오류가 있으면 컴파일 에러도 뜬다. 컴파일 경고도 있다. 리눅스에서 작업한다면 Makefile로 컴파일할 수 있다.

위키피디아에 있는 LaTeX의 예를 한 번 보자.

\documentclass[12pt]{article}
\usepackage{amsmath}
\title{\LaTeX}
\date{}
\begin{document}
  \maketitle
  \LaTeX{} is a document preparation system for the \TeX{}
  typesetting program. ... 생략 ....  \LaTeXe.
 
  % This is a comment; it will not be shown in the final output.
  % The following shows a little of the typesetting power of LaTeX:
  \begin{align}
    E &= mc^2                              \\
    m &= \frac{m_0}{\sqrt{1-\frac{v^2}{c^2}}}
  \end{align}
\end{document}

HTML 날 코딩 해보신 분이라면 그렇게 이상하게 보이지 않을 것이다. \usepackage는 마치 C/C++의 #include, Python의 import와 흡사하다. 키워드/매크로를 사용하고 있으며 무엇보다 복잡한 수식을 명령어로 섞어 표기하는 것이 가장 큰 특징이자 장점이다. 위 소스 코드를 컴파일하면 다음의 출력물이 나온다.

처음에는 도대체 LaTeX 이거 뭔가 욕하다가 컴파일-출력물 보기에 중독 되기도 한다.

Latex이 위지위그에 비해 가지는 장점이 여럿 있다.

  • 많은 장 수가 있는 문서 편집에 강하다. 소스 파일은 그냥 텍스트 파일이므로 편집에는 시스템 부담이 없다. 특히 100장이 넘는 큰 문서 작업 시 여러 소스 파일에서 작업한 뒤 하나의 PDF로 컴파일 할 수 있다. 프로그래밍과 너무 닮았다.
  • 상호참조가 많은 경우, 예를 들어, 그림/표/수식 번호를 자주 참조해야 할 때, 워드 같은 프로그램보다 상당히 편리하다. (워드에서도 직접 그림 번호를 치지 않고 상호참조를 쓸 수는 있으나 상당히 불편하다.) 참고문헌 역시 Bibtex라는 프로그램과 함께 쓰면 편리하게 작업할 수 있다.
  • 수식 편집이 강력하다. TeX 자체가 Knuth가 자신의 책의 수식이 아름답게 출판되지 못해 만든 프로그램이니 어찌 보면 당연한 얘기. 강력할 뿐만 아니라 아름답게 출력된다. 수식 외에도 문서의 세밀한 부분을 조절할 수 있다. 예를 들어, 문단 사이의 간격을 정밀하게 조절할 수 있다.
  • 여러 사람과 공동 작업이 편리하다. 텍스트 파일에서 작업이 이루어지므로 개발 협업에서 쓰는 SVN/GIT을 그대로 써서 협업할 수 있다. 역시 텍스트 파일에서 이루어지니 매크로/스크립트의 사용이 쉽다.

이러한 이유로 LaTeX은 특히 논문을 써야 하는 대학원/교수 사이에서 많이 사용된다. 수식이 많은 물리/수학/통계 분야는 당연하고 솔직히 수식도 별로 없는 전통적인 전산학 분야에서도 LaTeX은 논문 편집이 표준이다. 물론 전산학에서도 수식이 많이 나오는 머신 러닝 쪽은 거의 필수이지만. 그런데 다른 전공은 LaTeX을 안 쓰는 경우도 많다. 생물학만 하더라도 (수식이 별로 없으니) 거의 쓰지 않는다고 한다.

하지만 LaTeX도 불편한 점도 많다. 마치 vim과 워드와 같은 차이라고 볼 수 있다. 워드는 전혀 사용법을 몰라도 시간이 지나면 터득이 되지만 vim은 공부를 하지 않으면 아예 전혀 사용할 수도 없다. 누군가 그러지 않았는가. 랜덤 문자열을 얻으려면 vim이나 emacs를 초보자에게 주고 종료시키도록 하면 된다고. LaTeX도 그러하다. 초기 진입 장벽이 상당히 있다.

한편, 위에서 장점이라고 언급한 것도 양날의 검처럼 단점이 동시에 있다.

  • 큰 문서 편집에 강점은 있으나 100장이 넘는 대량의 문서를 컴파일하면 부담이 심하다. 특히 LaTeX 컴파일러는 incremetal하게 되지 않아 글자 하나만 고쳐도 전체 문서를 몽땅 재컴파일 한다. Rebuild All! 그래서 현재 편집하는 장만 추려서 작업할 수밖에 없다. 10장 정도의 논문 역시 막판 장 수를 맞추기 위해 세밀한 편집을 할 때는 매우 빈번하게 컴파일과 미리 보기를 해야 하는데 너무너무 피곤하고 지루한 과정이다.
  • 상호참조는 LaTeX에서 각 객체에 label을 주고 그걸 \ref{객체이름}으로 쓴다. 편리하다. 10여장의 논문은 큰 불편함이 없지만 100장이 넘는 박사 논문 같은 경우 수 많은 그림/도표/수식을 체계적으로 정리하기가 간단하지는 않다. 다행히 대부분의 전용 LaTeX 편집기는 Visual Studio 같은 자동완성 기능을 제공한다.
  • 수식 편집이 강력하나 초보자는 명령어를 다 못 외우니 삽질이 심하다. 그래서 WYSIWIG로 수식을 입력하면 LaTeX 코드로 바꿔주는 툴도 있다.
  • LaTeX로 정밀한 문서 편집이 가능은 하나 이걸 하기가 쉽지 않다. 예를 들어, 도표의 한 셀의 테두리 모양을 바꾸고 싶다면 워드에서는 클릭-우클릭-세팅 설정으로 된다. 그러나 LaTeX에서 이걸 하려면 너무 괴롭다. 마우스로 한 방에 될 것을 검색을 해서 다시 코드를 고쳐야 하는 수고를 해야 한다.

 

3. LaTeX와 위지위그의 편리함을 합친다면?

이렇게 LaTeX와 위지위그 에디터는 그 장단점이 너무나 뚜렷하다. 분명 어느 한 쪽이 완전히 우세하다고 말 할 수 없다. 그렇다면 자연스럽게 이 두 방식의 절충점을 찾고 싶을 것이다. 

아직까지 아래아 한글 수식 편집기의 명령어가 외워지고 있다니. 수식이 이게 맞던가..

아래아 한글의 수식 편집기는 위 그림처럼 LaTeX를 연상케 하는 코드로 수식을 편집할 수 있게 한다. 학부 주전공은 물리/역학 수업이 많아서 수식 편집을 많이 했다. 나는 여전히 15년 전에 쓴 아래아 한글의 수식 편집이 손에 익다. 마우스를 손에 거의 댈 필요가 없다. 워드 2007/2010의 수식은 위지위그 방식으로 편리는 하지만 지나치게 마우스 클릭을 많이 해야 해서 대량의 수식이라면 너무 피로하다. 하지만 아래아 한글은 입력 방식은 훌륭하나 정작 출력/인쇄 과정에서 문제를 많이 일으켰던 기억이 난다.

 

LaTeX의 매우 불편한 재컴파일-미리보기 과정을 진정 위지위그화한 편집기도 있다. 이름이 굉장히 기괴한데 BaKoMa TeX라는 상용 툴이 있다. 러시아계 사람 같은 1인 개발자가 10년 넘게 혼자 만들어서 파는 프로그램이다. 홈페이지 디자인도 너무나 촌스러워 신뢰가 안 가는데 써보면 충격과 공포 그 자체다. 정말 레이텍을 상당한 수준의 위지위그로 만들었다. 글씨를 치면 바로 incremental 컴파일을 해서 진짜 결과물을 보여준다.

주 편집 창에서 편집을 하면 왼쪽 하단에 있는 LaTeX 소스 파일도 알맞게 코드가 생성된다. 반대로 소스 코드를 직접 고쳐도 명시적인 컴파일 없이 즉각 화면에 반영된다. 평가판으로 써보고 너무 좋아서 지금은 구입해서 사용 중이다. 안타깝게도 자잘한 버그가 많아서 불편한 점이 꽤 있으나 문제점을 메일로 보내면 거의 개발자가 24시간 내에 직접 고쳐주고 진단해주기도 한다(...) 진정 장인의 숨결이 느껴지는 소프트웨어이다. 그러나 이런 노력에도 불구 원초적으로 LaTeX가 가지는 한계점으로 정말 워드처럼 편리하게 쓰는 느낌은 들지 않는다. 복잡한 논문을 바로 여기서 작업하기에는 쉽지 않을 수 있다. 그 보다는 이미 작성된 레이텍 파일을 후편집할 때 매우 편리하다. 하지만 이러한 장애를 극복하고 이 정도 수준의 소프트웨어를 만든 것도 대단하다. LaTeX으로 논문 많이 쓰는 사람에겐 무조건 강력 추천한다.

 

LaTeX의 종결자는 프리젠테이션 파일과 그래프도 LaTeX으로 만드는 것이라고 한다. 각종 실험 그래프도 스크립트를 이용해 LaTeX 혹은 다른 벡터 그래픽 언어로 그릴 수 있다. 나는 그렇게 대량의 데이터를 수집하는 실험을 많이 하지 않아 엑셀 노가다로 해결이 되지만, 스크립트로 결과를 파싱해 프로그래밍적으로 그래프를 그린 뒤 PDF로 뽑아서 보는 친구도 있다. 자명하게 이에 대응되는 위지위그 방식은 파워포인트/엑셀일 것이다. 파워포인트는 대부분의 경우 편리하고 직관적이나 위지위그 방식이 너무나 불편할 때가 종종 있다.

사실.. 이 글을 쓰게 된 것도 지금 발표용 슬라이드를 만들고 있는데, 위 그림처럼 복잡한 에니메이션을 넣다가 사람 환장할 것 같아 충동적으로 쓰고 있다. 간단한 애니메이션은 우아하게 클릭 클릭으로 해결된다. 그런데 개체가 날라 다니고 텍스트 내용이 바뀌고 등등의 복잡한 애니메이션을 클릭으로 하기란 너무나 고통스럽다. 고치기도 너무 어렵고 몇 픽셀 차이로 어긋나는 것도 잡기가 너무 어렵다. 이럴 때 이런 에니메이션을 스크립트로 처리할 수 있으면 얼마나 좋을까?

그런데 이론적으로는 가능하다. 거의 10년 전인, 2003 년, 회사에서 해야 했던 일이 딱 파워포인트 같은 편집 툴을 만드는 것. 핵심은 undo/redo가 지원되는 C++ 컴포넌트 아키텍처 + GUI 인터페이스를 만드는 것. 처음에는 갈피를 못 잡다가 파워포인트를 열심히 파고 드니 파워포인트의 각 개체가 프로그래밍적으로 접근이 가능함을 알았다. 우리가 눈에 보는 것은 마우스와 키보드의 위지위그지만 실제 내부는 프로그래밍적으로 문서를 만들고 개체를 넣고 수정하고 그런 것이 되는 것이다. 컴포넌트를 조작하는 엔진과 그 엔진에게 명령을 전달하는 GUI 껍데기의 확실한 구분이었다. 이런 접근 방식을 보자마자 어려워 보이던 문제가 쉽게 풀릴 수 있었다.

위 그림을 보면 각 개체마다 이름이 다 있다. 그러니 얼마든지 애니메이션을 프로그래밍 형식으로 제어할 수 있을 것이다. 다만 마이크로소프트가 이런 인터페이스를 노출 안 시킬 뿐. 마찬가지로 워드도 복잡하고 큰 문서를 작성하면 비슷한 난관에 봉착한다. 역시 이럴 때 LaTeX 처럼 편집할 수 있는 모드도 있으면 얼마나 좋을까?

 

4. 무한한 시간과 돈이 있다면

나는 Visual C++를 15년 넘게 쓰고 있는 사람이다. 그런데 리눅스도 많이 쓸 수밖에 없어 vim + Makefile로도 작업을 5-6년간 꽤 했다. 이 판이하게 다른 개발 환경을 보고 있자면 (물론 리눅스에서 이클립스가 있긴 하지만) 너무나 위지위그와 LaTeX의 차이점이 떠오른다. (아 그렇다고 Visual C++을 클릭클릭하는 RAD 툴로 생각하면 큰 오산!) 여기서 어느 방법이 좋다/나쁘다를 논하고 싶지는 않다. 할 말이 너무 많아서…

그러나 하나 확실한 것은 위에서 얘기한 LaTeX와 위지위그의 차이처럼 양 개발 방법론도 매우 뚜렷한 장단점이 있고 어느 한 쪽이 완전히 다른 한 쪽을 제압할 수 있는 것이 아니다. 각 방법론의 장점을 모은다면 분명 나은 개발 환경을 만들 수 있을 것이다. 그런데 각 진영의 사람은 자신의 방식에만 너무 매몰되어있는지 서로의 장점을 잘 모은 도구가 나오지 않고 있다. 너무 아쉬울 뿐이다.

정말 나에게 무한한 시간과 돈이 있다면 소개한 BaKoMa TeX의 1인 개발자처럼 혼자서 Visual Studio + Makefile의 장점을 합친 개발 환경이나 만들고 싶다.

 

 

p.s. 윈도우에서의 추천 LaTeX 환경: MiKTeX (윈도우 용 LaTeX 배포) + TeXnicCenter (GUI 편집기) + Sumatra PDF (PDF 뷰어). (PDF 뷰어로 일반 Acrobat을 쓰면 매우 불편한 점이 있다. 편집 중인 PDF가 아크로뱃이 열고 있는 도중에 재컴파일을 하면 아크로뱃은 다시 로딩을 하지 못하거나 컴파일 자체가 잠겨있는 파일이라고 안 된다. 반면, Sumatra PDF 뷰어는 공유 모드로 파일을 읽어서 자동 갱신이 되어 LaTeX 작업에 안성맞춤.)

by 김민장 | 2012/05/17 15:11 | 컴퓨터 | 트랙백 | 덧글(11)
<< 이전 페이지 다음 페이지 >>





by 김민장 2008 이글루스 TOP 100
최근 등록된 덧글
워드의 docx, 파워포인트..
by 나인테일 at 05/19
쓸 때마다, '차라리 이런 게..
by Raymundo at 05/18
LaTeX 쓰면서 ”.toc나 *..
by 아라크넹 at 05/18
지금 회사 전산팀에 있을대 ..
by 김아람 at 05/18
TeXworks, TeXstudio ..
by 김민장 at 05/18
LyX가 위지위그 스타일이라..
by 김민장 at 05/18
LyX는 어떤가요? 요즘 공..
by 길가던 공대생 at 05/18
얼마전에 KTUG에서 ko.t..
by 死海文書 at 05/17
최근 등록된 트랙백
visual studio 최적화 옵션
by Joygram's snippet
모든 건 일장 일단
by 幻想鄕.flamboyance
메뉴릿
이글루 파인더

website counter

Add to Google

rss

skin by 이글루스