본문 바로가기
Topos Uranos

요약

이 강의에서는 자신만의 명령과 환경을 정의하고, 그것들을 다시 쓸 수 있는 프리앰블로 모으는 방법을 배운다. 겉모습을 되풀이해 쓰는 대신 텍스트의 기능에 이름을 붙이는 편이 나은 이유를 설명하고, 필수 인자를 받는 \newcommand와 기본값이 있는 선택 인자를 받는 \newcommand, \renewcommand와 \providecommand, 그리고 이름이 이미 있을 때 생기는 오류를 소개한다. LaTeX 커널에 들어 있는 현대적 인터페이스인 \NewDocumentCommand를 간단히 보여 주고, 인자 없는 명령 뒤에서 사라지는 공백을 분석한다. \newenvironment로 환경을 시작 코드와 끝 코드와 함께 정의한다. 끝으로 프리앰블을 별도의 파일, 곧 \input으로 읽는 파일이나 .sty 패키지로 옮기는 방법을, 패키지를 불러오는 순서와 전체의 간결함에 유의하며 배운다.

학습 목표

  1. 자신만의 명령을 정의하는 근거를 입력의 수고를 더는 데가 아니라 그 명령이 이름 붙이는 기능에서 찾는다.
  2. 필수 인자를 받는 명령과 선택 인자를 받는 명령을 정의하고, 각 사용 형태의 결과를 예측한다.
  3. \newcommand, \renewcommand, \providecommand를 구별하고, 이미 쓰이고 있는 이름이 일으키는 오류를 해석한다.
  4. 인자 없는 명령 뒤에서 공백이 사라지는 것을 예견하고 피한다.
  5. 인자를 받는 환경을 정의하고, 정의의 어느 부분이 인자를 쓸 수 있는지 알아본다.
  6. 자신만의 프리앰블을 별도의 파일이나 패키지로 구성하고, 어느 쪽이 알맞은지 판단하며, 패키지를 불러오는 순서를 정리한다.

왜 자신만의 명령을 정의하는가

의미 있는 서식을 다룬 강의에서 핵심 생각을 보았다. 서식 표시는 모두 텍스트의 어떤 기능에 대응해야 하며, 자신만의 명령은 그 기능에 이름을 붙이고, 프리앰블에 한 번만 쓴 그 정의가 겉모습을 정한다. 이 강의에서는 그 구조를 자세히 살펴본다. 그에 앞서 무엇을 얻는지를 분명히 해 두자. 명령을 정의할 가치가 언제 있고 언제 없는지가 그것에 달려 있기 때문이다.

얻는 것은 세 가지이다. 첫째는 의미이다. \gaenyeom{존재자}는 그 낱말이 무엇인지를 말하지만, \textbf{존재자}는 어떻게 보이는지만 말한다. 그래서 원본은 조판 지시의 목록이 아니라 주석이 달린 텍스트처럼 읽힌다. 둘째는 일관성이다. 벡터를 언제나 \vect로 쓰면, 부주의로 어떤 것은 굵게, 어떤 것은 화살표로 나오는 일이 생길 수 없다. 셋째는 규약을 한 곳에서 바꿀 수 있다는 점이다. 심사 위원회나 학술지나 지도 교수가 다른 표기를 요구하면 프리앰블의 한 줄만 고치면 되고, 그 변경은 문서 전체에 미친다. 여기서 기준이 나온다. 알아볼 수 있는 기능을 하고 되풀이되는 것은 자신만의 명령을 가질 만하다. 한 번뿐인 조정은 그 자리에 쓰면 되고 되풀이되지 않으므로 명령을 가질 만하지 않다.