KTUGFaq

KTUG FAQ

"\let"에 댓글 더하기

로그인:
비밀번호:
가입
The luck that is ordained for you will be coveted by others.
FrontPage › LittleTree/ReadingTeXbook/2006-03
Mar 21, 2006
\let
Submitted by 작은나무 @ 03-21 [10:06 am]
206~207쪽: TeX에서 편리하면서도 중요한 명령어 중의 하나가 바로 \let입니다. 이는 plain.tex이나 lplain.tex에서 숱하게 쓰입니다. \let은 다음과 같은 형식을 취하는데,
\let\cs=<token>
이는 \cs에 <token>이 현재 가지고 있는 의미를 부여한다는 뜻입니다. 재미있는 점은 <token>이 다른 명령어(control sequence)토큰 일때 인데, 이 때도 마찬가지로 그 명령어가 가지고 있는 기능 그대로를 \cs에게 물려줍니다. 예를들어, '\let\a=\def'라고 하고, '\a\b...{...}'라고 하면, \a가 \def의 의미와 기능을 물려받아서, 매크로 \b를 정의하는 것이 됩니다. 또, 아래의 의미는
\let\a=\b \let\b=\c \let\c=\a
명령어 \b와 \c의 의미를 바꾸는 것이 됩니다. 그리고, 다음과 같은 문장은
\outer\def\a#1.{#1:} \let\b=\a
'\outer\def\b#1.{#1:} \let\a=\b'와 완전 동일합니다.

\let에 사용된 <token>이 단일 문자(single character)이고, 그 문자가 character code와 category code의 쌍이라면, 어느 정도까지는 그 문자와 같은 역할을 하지만, 약간 차이점이 있다네요. 예를들어, '\let\zero=0'라면, \zero는 숫자 0의 의미를 갖지만, 0이 그렇듯이, \zero는 숫자 상수 안에서는 사용될 수 없습니다. 왜냐하면, TeX은 숫자 상수에 매크로가 쓰였을 경우, 그 매크로를 전개하고 나면 매크로들이 모두 숫자들로 바뀌어야 하는데, \zero는 매크로가 아니기 때문에 전개가 되지않으므로, 숫자 상수안에서는 사용될 수 없다고 합니다. 무슨 뜻인지 알듯 말듯 하지만, 저자의 말대로라면, 나중에 다시 살펴볼 기회가 있다네요. 믿어야죠.

책에 나오는 문제 하나만 풀어봅시다.
  • Q: '\let\a=\b'와 '\def\a{\b}' 둘 사이의 차이점이 있기는 있는건가요? 있다면 어떤 차이점이 있나요?
  • A: 차이가 있어도 아주 많다네요.(Yes indeed.) 첫번째의 경우의 \a는 \let이 실행되는 시점의 \b의 의미를 받고, 두번째의 경우의 \a는 매크로 이므로 \a가 사용될 때마다 전개되어 \b로 바뀝니다. 그래서 그 때의 \a는 \a가 전개되는 시점의 \b의 의미를 갖습니다.

제가 본 예 중에 제일 쉬웠던 것을 하나 예로 들어두겠습니다. 성실한 독자로서 ^^
\let\endpara\par
\def\newerpara{\par}
\def\par{\endpara\vskip2pt\hrule\vskip2pt}
\let\anotherpara\par

There are a variety of ways to create commands.
The one descriptoin given so far is to use def. \par
There are a variety of ways to create commands.
The one descriptoin given so far is to use def. \endpara
There are a variety of ways to create commands.
\let\par\endpara
The one descriptoin given so far is to use def. \anotherpara
There are a variety of ways to create commands.
The one descriptoin given so far is to use def. \newerpara
There are a variety of ways to create commands.
The one descriptoin given so far is to use def.

\bye
-- Karnes 2006-03-23 09:24:55

감사합니다. 머리에 쏙쏙들어옵니다. 아하! 제가 쓰고 있는 글에 분명히 틀린 부분이 많을 것입니다. 틀린 곳은 바로 잡아 주시고, 제 설명이 부족하다거나 모호하다 싶으시면, 이번 처럼 가르침을 주시기를 부탁드립니다. "I hope to pick your brain about TeX." :) -- Anonymous 2006-03-23 11:58:19
이름:

서명하지 않기
 

^
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2006-06-06 22:54:57
Processing time 0.0346 sec