KTUGFaq

KTUG FAQ

LittleTree/ReadingTeXbook/2006-09 (rev. 1.9)

로그인:
비밀번호:
가입
Your mind understands what you have been taught; your heart, what is true.
FrontPage › LittleTree/ReadingTeXbook/2006-09
Nov 17, 2006
연분수 매크로
Submitted by 작은나무 @ 11-17 [11:51 am]
218~219쪽: 참, 오랜만에 적어봅니다. 요즘 텍공부가 좀 뜸한 관계로... :)

최근에 우연히 연분수(continued fraction)이라는 것을 알게되어서 텍으로 매크로를 만들어보면 재밌겠다 싶어서 작성해봤습니다. 꼬리 재귀(tail recursion)를 이용합니다. 처음에는 저의 블로그에 적었는데, 그곳보다는 여기가 적당하다 싶어서 옮깁니다.

\newcount\m % 분자 \newcount\n % 분모 \newcount\t % t = m mod n \newcount\s % s = m / n \def\cf#1#2{\m=#1 \n=#2 \t=\m \divide\m by\n \s=\m \multiply\m by\n \advance\t by-\m \ifnum0=\t \number\s \else \number\s+{\strut 1\hfill\over\displaystyle\cf{\n}{\t}}\fi} \def\cfrac#1#2{{#1\over#2}=\cf{#1}{#2}}
아래와 같이 사용합니다.

$$\cfrac{421}{73}$$ $$\cfrac{103}{24}$$



Sep 01, 2006
엉터리지만 동작한다
Submitted by 작은나무 @ 09-01 [12:00 pm]
213쪽: \expandafter

1부터 \n 까지의 합을 구하는 루틴입니다.




\loop...\repeat 또는 재귀문을 사용하지 않고 변수를 1개만 사용하는 루틴을 만드려고 해보았는데, 엉터리 코드지만 동작합니다. 이상합니다.

\newcount\n \def\square{\multiply\n\n} \def\divtwo{\divide\n2} \def\summation#1{\n=#1 \def\add{\advance\n#1} \expandafter\expandafter\expandafter\square\expandafter\add\divtwo The sum from 1 to #1 is \number\n.} \summation{97} \summation{98} \summation{99} \summation{100}
결과




expandafter를 남발함으로써 골머리를 썩게 하고 민심을 흉흉하게 한 허물, 결코 가볍다 할 수 없으리라 사료됩니다.^^ expandafter를 싹 걷어내고 컴파일해 봤더니 얼레~ 결과는 동일하더군요 -.-;; -- DohyunKim 2006-09-01 14:12:59

그러니 이상하다는거 아닙니까...^^; 위에 사용한 방식이 책대로라면 전개 순서를 역으로 한다는 건데요... 이거 뭐 잘못된거 아닌가요? ㅎㅎㅎ -- 작은나무 2006-09-01 15:08:40

TeXbyTopic 12.3.1을 보면 개념이 나와있습니다. One step expansion: \expandafter -- DohyunKim 2006-09-01 16:14:17

아... 제가 이해력이 떨어져서 엄청난 착각을 하고 있던것 같습니다... 전개(expansion) 순서만 바뀌는 것이고, 실행되는 순서는 유지되는 것이군요. 언제나 이처럼 잘못된 것을 지적해주시고 한 수 가르쳐주셔서 감사하게 생각하고 있습니다. -- 작은나무 2006-09-01 16:32:46

^
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2006-11-24 23:37:54
Processing time 4.4341 sec