KTUGFaq

KTUG FAQ

·Î±×ÀÎ:
ºñ¹Ð¹øÈ£:
°¡ÀÔ
By failing to prepare, you are preparing to fail.
FrontPage › CWEB

r1.28°ú ÇöÀç ¹öÀüÀÇ Â÷ÀÌÁ¡

@@ -2,59 +2,67 @@
== CWEB ½Ã½ºÅÛ ==
$$\hbox{\tt CWEB}=\hbox{C programming language}+\hbox{\TeX}$$

¹®ÇÐÀû ÇÁ·Î±×·¡¹Ö ½Ã½ºÅÛÀ¸·Î °¡Àå ¸¹ÀÌ »ç¿ëµÇ´Â °ÍÀÌ ¾Æ¸¶ CWEBÀÏ °Í ÀÔ´Ï ÀÌ´Ù. ¹®ÇÐÀû ÇÁ·Î±×·¡¹Ö ½Ã½ºÅÛÀº ±âº»ÀûÀ¸·Î Á¶ÆǾð¾î¿Í ÄÄÇ»ÅÍÇÁ·Î±×·¡¹Ö ¾ð¾î·Î ±¸¼ºµÇ´Âµ¥, CWEBÀº °¡Àå ¸¹ÀÌ »ç¿ëµÇ´Â Á¶ÆǾð¾îÀÎ TeX°ú °¡Àå ¸¹ÀÌ »ç¿ëµÇ´Â C¾ð¾îÀÇ Á¶ÇÕÀ¸·Î ±¸¼ºµÈ ½Ã½ºÅÛ ÀÔ´Ï´Ù.
== CWEB ¼Ò°³ ==
* »ç¿ëÀÚ ¼³¸í¼­: attachment:cwebman.pdf
* Knuth ±³¼öÀÇ CWEB ÆäÀÌ Áö: [http://www-cs-faculty.stanford.edu/~uno/cweb.html Soojin Nam's Korean translation of the CWEB manual]
¾Æ·¡ÀÇ ±ÛÀº CWEB »ç¿ëÀÚ ¼³¸í¼­(cwebman)ÀÇ ''Introduction''À» Çؼ®ÇÑ ³»¿ëÀÔ´Ï´Ù.
CWEBÀÇ ¹è°æÀÌ µÇ´Â öÇÐÀº, ÀÚ½ÅÀÌ ÀÛ¼ºÇÏ°í ÀÖ´Â ÇÁ·Î±×·¥¿¡ ´ëÇؼ­ °¡´ÉÇÑ ÃÖ»óÀÇ ¹®¼­¸¦ Á¦°øÇÏ°íÀÚ ÇÏ´Â ÇÁ·Î±×·¡¸Ó´Â
¹®¼­ Á¶ÆÇÀ» À§Çؼ­ TeX°ú °°Àº ¾ð¾î¿Í ÇÁ·Î±×·¡¹ÖÀ» À§Çؼ­ C ¾ð¾î¿Í °°Àº µÎ °¡Áö µµ±¸°¡ µ¿½Ã¿¡ ÇÊ¿äÇÏ´Ù´Â °ÍÀÔ´Ï´Ù.
ÀÌ µÎ °¡Áö ¾ð¾î Áß ¾î´À ÇÑ °¡Áö¸¸ °¡Áö°í´Â ÃÖ»óÀÇ ¹®¼­¸¦ Á¦°øÇÒ ¼ö ¾ø½À´Ï´Ù. ÇÏÁö¸¸ ÀÌ µÎ °¡Áö ¾ð¾î¸¦ ÀûÀýÈ÷ Á¶ÇÕÇϸé,
°¢°¢ÀÇ ¾ð¾î°¡ Á¦°øÇÒ ¼ö ÀÖ´Â ±â´Éº¸´Ù ´õ¿í À¯¿ëÇÑ ±â´ÉÀ» °®Ãá ½Ã½ºÅÛÀ» ±¸¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.

¼ÒÇÁÆ®¿þ¾î ÇÁ·Î±×·¥ == CWEB ¼³¸í¼­ ==
CWEB ½Ã½ºÅÛÀÇ ±¸Á¶´Â ³»ºÎÀûÀ¸·Î ¸¹ °³³ä°ú »ç¿ë¹æ¹ýÀº ÀÛÀº ºÎºÐµéÀÌ ¼­·Î ±ä¹ÐÈ÷ ¿¬°áµÇ¾î ÀÖ´Â "À¥(web)¡± À̶ó ¸Þ´º¾óÀ» Âü°í »ý°¢ÇÒ ¼ö
ÀÖ½À´Ï ÇÑ´Ù : [http://faq. ±×·¯ ktug.or.kr/faq/SampleDocument?action=download&value=cwebman.pdf ÇÑ ÇÁ·Î±×·¥À» ¹®¼­È­Çϱâ Çϱâ À§Çؼ­ ±× À¥À» ±¸¼ºÇÏ´Â °¢°¢ÀÇ °³º°ÀûÀÎ ºÎºÐµéÀ» ±ÛCWEB¼³¸í ÇÏ°í, ±× ºÎºÐµéÀÌ ¼­]
±×ÀÇ ÀÌ¿ôµé°ú ¾î¶° == ÇÑ ¿¬°üÀÌ ÀÖ´ÂÁö¸¦ ±Û(UTF-8) CWEB ¼³ ¸íÇÏ´Â °ÍÀÌ ÁÁÀº Ä¡ ¹æ¹ý ÀÏ °ÍÀÔ´Ï´Ù. TeXÀ¸·Î Á¦°øµÇ´Â Á¶ÆÇ µµ±¸´Â °¢ ºÎºÐÀ» ==
Àбâ ÁÁ°Ô ÇØ ÁÜÀ¸·Î½á ±× º»·¡ÀÇ ±¸Á¶ CWEB ½Ã½ºÅÛÀº ÇÑ ±ÛÀÚ¸¦ ½±°Ô ÆÄ¾Ç ÇÒ ¼ö 1¹ÙÀÌÆ® Áï 8ºñÆ®¸¦ »ç¿ëÇÏ´Â ¿µ¾î±Ç¿¡ ¸ÂÃß¾îÁ® ÀÖ °Ô ÇØÁÖ°í ±â¶§¹®¿¡, C ¾ð¾î·Î Á¦°øµÇ´Â ÇÁ·Î±×·¡¹Ö µµ±¸´Â ¾Ë°í¸®Áòµé CWEB ½Ã½ºÅÛÀ»
º¸´Ù ¼ö ÇÐÀûÀ¸·Î ¸íÈ® Á¤ÇÏ °Ô ±â¼úÇÒ ¼ö ÀÖ°Ô ÇØÁÝ´Ï´Ù. ÀÌ·¯ÇÑ µÎ °¡Áö µµ±¸¸¦ Á¶ÇÕÇÔ À¸·Î¼­, ¼ÒÇÁÆ®¿þ¾îÀÇ º¹À⠾ʰí´Â UTF-8 ÀÎÄÚµùµÈ ÇÑ ±¸Á¶¸¦
½±°Ô ÆÄ¾Ç ÇÒ ¼ö ÀÖµµ·ÏÇÏ´Â ±Û ÇÁ·Î±×·¡¹ÖÀÌ ºÒ°¡´É ÇÕ´Ï ÇÏ´Ù. µ¿ ÀÌ´Â CWEB ½Ã ¿¡ ±× ¹®¼­È­µÈ ÇÁ·Î±×·¥Àº ±â°è ½ºÅÛÀÌ ³»ºÎÀûÀ¸·Î ¼ÒÇÁÆ®¿þ¾î »ç¿ëÇÏ´Â ¹öÆÛÀÇ Å©±â°¡ ³Ê¹« À۱⠶§¹®ÀÌ´Ù. º»·¡ÀÇ ½Ã½ºÅÛÀ¸·Î
º¯È¯µÇ¾î ½ÇÇà ½Ã½ºÅÛ ÇÑ±Û cweb ÆÄÀÏÀ» ÀÌ¿ëÇϸé, ´ÙÀ½°ú °°Àº ¿¡·¯ ¸Þ½ÃÁö¸¦ ¸¸ µé ¼ö ÀÖ½À´Ï ³ª°ÔµÈ´Ù .
{{{
! Input line too long. (l. 387)
}}}
ÀÌ ¹®Á¦Á¡À» ÇØ°áÇÏÀÚ.

1. CWEB ½Ã½ºÅÛ Àº CWEAVE ¿Í CTANGLE À̶ó°í ºÒ¸®´Â µÎ °³ÀÇ ÇÁ·Î±×·¥À¸·Î ±¸¼ºµÇ¾î ÀÖ½À´Ï´Ù ¼Ò½º¸¦ [ftp://ftp. CWEB ÇÁ·Î±×·¡¹ÖÀ» ÇÒ
¶§´Â, CWEB ÆÄÀÏ À̶ó°í ºÒ¸®´Â ÇϳªÀÇ ÆÄÀÏ cs.stanford.edu/pub/cweb/cweb.tar.gz cweb.tar.gz] ¿¡ C ÄÚµå¿Í ¹®¼­ È­¸¦ À§ÇÑ Äڵ带 µ¿½Ã¿¡ ÀÛ¼ºÇÏ°í ¹Þ¾Æ¼­, ÀϹÝÀû ´çÇÑ °÷¿¡ ¾ÐÃàÀ» Ǭ´Ù.
1. make ¸í·ÉÀ¸·Î something ÇöÀç µð·ºÅ丮¿¡ ctangle ½ÇÇàÆÄÀÏÀ» ¸¸µç´Ù. w
°ú °°ÀÌ {{{
make
}}}
1. comm-utf8.ch ¶ó´Â À̸§ Áþ½À´Ï À¸·Î ÆÄÀÏÀ» Çϳª ¸¸µç´Ù. ±× ³»¿ëÀº ´ÙÀ½°ú °° Àº ¸í·É¾î ¡®cweave something¡¯´Â something ´Ù. tex ÆÄÀÏÀ» »ý¼ºÇÏ°í, ÀÌ ÆÄÀÏÀº TEX
À» ÅëÇÏ¿© something {{{
@x
char *buffer_end=buffer+buf_size-2; /* end of |buffer| */
@y
char *buffer_end=buffer+long_buf_size-2; /* end of |buffer| */
@z
}}}
1. w MakefileÀ» ÆäÀÌÁö ·¹À̾ƿô°ú ÇÁ·Î±×·¥ÀÇ µé¿©¾²±â, ±×¸®°í ¿¹¾à ¿­¾î ³ª º¯¼ö¸í ȤÀº ¼öÇÐ ±âÈ£µé ¼­ 44¹ø° ÁÙÀ» °¢°¢
´Ù ¸¥ ÆùÆ®·Î Ç¥ÇöÇÏ´Âµî ¿ì¸®µé À½°ú °°ÀÌ ½±°Ô ÀÐÀ» ¼ö ÀÖµµ·Ï ¸ÚÁø Ãâ·Â¹°·Î Á¤ÇÏ¿©, ¹æ±Ý Àü¿¡ ¸¸ µé¾î ³À´Ï µç comm-utf8.ch ÆÄÀÏÀ» Àû¿ëÇÑ´Ù. ÀÌ Ãâ·Â¹°¿¡´Â cweave
{{{
CCHANGES= comm-utf8.ch
}}}
1. make cautiously ¶õ ¸í·É ¾î°¡ ÀÚ
µ¿ÀûÀ¸·Î comm-utf8.ch °¡ Àû¿ëµÈ ctangleÀ» ¸¸ µé¾î ³½ »öÀεµ Æ÷ÇÔµË´Ï µç´Ù. ºñ½ÁÇÏ°Ô
{{{
make cautiously
}}}
±×·¯¸é, ¡® ÇöÀç ÀÛ¾÷ÇÏ°í ÀÖ´Â µð·ºÅ丮¿¡ ctangle something¡¯ ÀÌ ¶õ ¸í·ÉÀ» ¶ó´Â ½ÇÇà Çϸé something.c¶õ À̸§ÀÇ
C ÆÄÀÏ ÀÌ »ý°åÀ» ¾òÀ» ¼ö ÀÖ°í, °ÍÀÌ ÆÄÀÏ ´Ù.
1. ÀÌÁ¦ »õ·Î¿î CWEB ½Ã½ºÅÛÀ» ¸¸µé ¸ðµç Áغñ°¡ µÇ¾ú´Ù. ´ÙÀ½°ú °°Àº ¼ø¼­·Î ÄÄÆÄÀÏ À» ÅëÇÏ ¿© ½ÇÇà ÆÄÀÏÀ» °í ÀνºÅçÇÑ´Ù.
{{{
make all
make install
}}}
1. »ç¿ë¼³¸í¼­¸¦ ¾ò À» ¼ö ÀÖ½À´Ï °íÀÚ ÇÑ´Ù¸é, ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù.
{{{
make manual
¶Ç´Â,
make fullmanual
}}}

== ÇÑ±Û CWEB Àº C ÇÁ·Î±× ·¡¹Ö¿¡ ´Ü¼øÈ÷ ¹®¼­È­ µµ±¸¸¦ Á¦°ø ·¥ ÀÛ¼º ¹æ¹ý ==
CWEBÀÇ ÇÑ ´Ù´Â °Í ¿Ü¿¡, C ¾ð¾î¸¦ º¸´Ù °­ ±ÛÈ­ ½ÃÅ°´Â Ãø¸é DohyunKim´ÔÀÌ ÀÖ½À´Ï´Ù ÀÛ¼ºÇϽŠkotexplain. Áï
º¸ÅëÀÇ C ÇÁ·Î±×·¡¹Ö¿¡¼­´Â ºÒ°¡´ÉÇÑ tex, Àüü ÇÁ·Î±×·¥À» ¿©·¯ ÀÛÀº Á¶°¢µé·Î ³ª´©°í ±× Á¶°¢µéÀ» ¿©±âÀú±â »õ·Ó°Ô ¹èÄ¡ÇÒ ¼ö
ÀÖ½À´Ï´Ù hangulcweb. ÀÌ·¸°Ô ÇÔÀ¸·Î ÇÁ·Î±×·¥ texÀ» ¼øÂ÷ÀûÀ¸·Î ¼³¸íÇÏ´Â °ÍÀÌ ¾Æ´Ï¶ó, ¾Ë°í¸®Áò ȤÀº ÀÚ·á ±¸Á¶ÀûÀ¸·Î ÀǹÌÀûÀ¸·Î °ü·ÃÀÖ´Â
ºÎºÐµéÀ» ¼½¼ÇÀ̶ó´Â À̸§À¸·Î ÇÑ °÷¿¡ ¹èÄ¡ ¿ëÇؼ­ ÀÚ¼¼È÷ ¼³¸íÇÔÀ¸·Î½á °¢ ¼½¼ÇÀ» ÀÚ¼¼È÷ ¼³¸í °¡´ÉÇÏ °í, ±×·¯ÇÑ ¼½¼ÇµéÀÇ
¿¬°ü °ü°è¸¦ ¼³¸íÇÔÀ¸·Î Àüü ÇÁ·Î±×·¥À» º¸´Ù ÀÌÇØÇϱ⠽±°Ô ¼³¸íÇÒ ¼ö ÀÖ½À´Ï´Ù. CTANGLE ÇÁ·Î±×·¥Àº ÀÌó·³ C
¹®¹ý¿¡ ¾î±ß³­ ¹æ½ÄÀ¸·Î ÀÛ¼ºµÈ CWEB ÇÁ·Î±×·¥À» C ¾ð¾î ¹®¹ý¿¡ ¸Â°Ô ´Ù½Ã Àç¹èÄ¡ Çϱ⠶§¹® ½ºÅÛ¿¡ ctangle À̶ó´Â À̸§À» ¾ò°Ô
µÇ¾ú½À´Ï´Ù. CWEB À¸·Î ÇÁ·Î±×·¡¹ÖÇÏ¸é ¾òÀ» ¼ö ÀÖ´Â ÀÕÁ¡ ¼­ TeXÀº °¢ ¼½¼ÇÀ» °³º° ±âº»ÀûÀ¸·Î ¼³¸íÇÒ ¼ö ÀÖ´Ù´Â °Í Plain TeXÀ» ÀÌ¿ë ÇØ Çϴµ¥, kotexplain.texÀÌ Plain TeX¿¡¼­
ÇÁ·Î±×·¥¿¡ »ç¿ëµÈ ¾Ë°í¸®ÁòµéÀ» ÀÌ·¯ÇÑ ¼½¼Çµé ±ÛÀ» ÀÌ »ç¿ë ÇÏ¿© ¹­¾î¼­ ÇÑ °÷¿¡¼­ ¡°untangle¡±ÀÇ ÇüÅ·ΠǥÇöÇÒ ¼ö ÀÖ ´Ù µµ·Ï ÇØÁÖ´Â
Á¡ÀÔ´Ï ¸ÅÅ©·ÎÀÌ´Ù. CWEAVE ÇÁ·Î±×·¥Àº CWEB hangulcweb.tex ÆÄÀÏ À» ÀÔ·Â ¹Þ¾Æ¼­ °¢ ¼½¼ÇÀ» ±¸¼ºÇÏ´Â TeX ºÎºÐ°ú C ºÎºÐÀ» ¼­·Î ¿«Àº ÈÄ¿¡
(intertwine) ±× CWEBÀÇ ¿©·¯ °¡Áö ¿µ¹® ¸Þ½ÃÁö¸¦ ÇÑ sectionµé ±Û·Î ±¸¼ºµÈ Á÷¹°(fabric)·ÎºÎÅÍ ÇϳªÀÇ ±¸Á¶È­µÈ ¹®¼­ ¹Ù²Û °ÍÀÌ°í, ´õ¿íÀÌ pdf¸¦ Â¥³»±â(weave) ÀÌ¿ëÇÒ ¶§ ¹®¿¡ cweave ¶ó´Â
À̸§À» ¾ò¾ú½À´Ï´Ù.(ÀÌÇØ , ÇÑ±Û ºÏ¸¶Å©¸¦ °¡ µÇ½Ê´Ï±î?) ¿µ¾î ´Ü¾î ¡°weave¡±¿¡ ÇØ´ç ´ÉÇÏ ´Â µ¶ÀÏ ´Ü¾î°¡ ''webe''ÀÌ°í, ±×¿¡ °Ô ÇØ ´çÇÏ´Â ¶óƾ¾î°¡
''texe'' ¶ó´Â °Í¿¡´Â ¾Æ¸¶µµ ÀÏÁ¾ÀÇ ±íÀº ¿¬°üÀ» °ÍÀÔ´Ï ÁØ´Ù.

¿©·¯ºÐÀÌ CWEBÀ» »ç¿ëÇÏ°íÀÚ ÇÑ´Ù¸é, ¹Ýµå½Ã C ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡ Àͼ÷ÇØ¾ß ÇÒ °ÍÀÔ´Ï´Ù. ÃÖ¼ÒÇÑÀÇ TeX¿¡ ´ëÇÑ Áö½Äµµ
ÀÖÀ¸¸é ÁÁ°ÚÁö¸¸, CWEB ÇÁ·Î±×·¡¹ÖÀ» Çϸ鼭 TeX¿¡ ´ëÇÑ Áö½Ä À§ µÎ ÆÄÀÏÀº ÀÚµ¿ÀûÀ¸·Î ¾ò°Ô µÉ °ÍÀÔ´Ï´Ù ¸ðµÎ http://cvs.ktug.or.kr/viewcvs/ko. ÀÌ´Â TeX /macro/plain ¿¡¼­ »ç¿ëµÇ´Â
´Ü¼øÇÑ ÅؽºÆ®´Â TeX¿¡ ´ëÇÑ Áö½ÄÀÌ °ÅÀÇ ¾ø¾îµµ °¡´ÉÇϱ⠶§¹®ÀÔ´Ï´Ù. ¹°·Ð C ¾ð¾î¿Í TeX¿¡ ¸ðµÎ Àͼ÷ÇÑ µ¶ÀÚ´Â CWEB
ÃֽŠÆÄÀÏÀ» ¹ÞÀ» ¸Å¿ì ½±°Ô ¹è¿ï ¼ö ÀÖ ½À´Ï´Ù.

ÇÑ±Û CWEB ½Ã½ºÅÛ ¸»°íµµ ¸¹Àº ¹®ÇÐÀû ÇÁ·Î±×·¡¹Ö ½Ã À» ÇÒ ¶§´Â, ÀÛ¼ºÇÏ´Â ¼Ò½º ÅÛµéÀÌ Á¸ÀçÇÕ´Ï ÆÄÀÏ(.w)ÀÇ Ã³À½À» ´Ù . [http://www.literateprogramming.com literateprogramming.com] À¥»ç À½°ú °°ÀÌ Æ®¸¦ ¹æ¹®ÇØ º¸½Ã ÀÛÇϸé , ¸Å¿ì ´Ù¾çÇÑ ½Ã½ºÅÛµéÀ» Á¢ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ »çÀÌÆ®´Â KnuthÀÇ À¥ÆäÀÌÁö¿¡µµ ¼Ò°³µÈ ¸Å¿ì ÈǸ¢ÇÑ À¥»çÀÌÆ®ÀÔ´Ï´Ù.
{{{
\input hangulcweb
}}}

== CWEB »ç¿ë¹ý ==
$$\hbox{cweb}=\hbox{ctangle}+\hbox{cweave}$$
* È®ÀåÀÚ°¡ .wÀÎ ÅؽºÆ® ÆÄÀÏ, ¿¹¸¦µé¾î foo.w À̶õ ÆÄÀÏÀ» ¸¸ µì´Ï µç´Ù.
foo.w´Â web ȤÀº cweb ÆÄÀÏÀε¥, ÇÁ·Î±×·¡¹Ö ¼Ò½º¿Í ±×¿¡ ÇØ´çÇÏ´Â µµÅ¥¸ÕÆ®¸¦ µ¿½Ã¿¡ °¡Áö°í ÀÖ´Â ÆÄÀÏ ÀÔ´Ï ÀÌ´Ù. cweb ÇÁ·Î±×·¡¹ÖÀ» ÇÒ¶§´Â, ÀÌó·³ ÇÁ·Î±×·¡¹Ö°ú µµÅ¥¸ÕÆ®¸¦ µ¿½Ã¿¡ »ý°¢ÇØ¾ß ÇÕ´Ï ÇÑ´Ù.
* ¾Æ·¡¿Í °°Àº ¸í·É¾î·Î cweb ÆÄÀÏ foo.w·ÎºÎÅÍ ÇÁ·Î±×·¡¹Ö ¼Ò½º ÆÄÀÏ foo.c(ȤÀº foo.cpp)À» ¸¸µé¾î ³À´Ï ³½´Ù.
{{{
% ctangle foo
}}}
@@ -63,80 +71,20 @@
{{{
% cweave foo
}}}
* cweave·Î ºÎÅÍ ³ª¿Â foo.texÀº TeXÀ» ÀÌ¿ëÇÏ¿© foo.dvi¸¦ ¸¸ µì´Ï µç´Ù.
{{{
% tex foo
}}}
¶Ç´Â, pdfÀÇ ±â´ÉÀ» ½ÊºÐ ¹ßÈÖÇÏ°í ½ÍÀ¸½Ã´Ù¸é, ´ÙÀ½°ú °°ÀÌ ÇÏ ½Ã¸é µË´Ï µÈ´Ù.
{{{
% tex pdftex foo
¶Ç´Â
% etex "\let\pdf+ \input foo"
% dvipdfmx foo
}}}
À§ °úÁ¤À» ±×¸²À¸·Î ³ªÅ¸³»¸é ´ÙÀ½°ú °° ½À´Ï´Ù.

attachment:cweave.jpg
== CWEB ¼³Ä¡ ½Ã ÇѱÛ(UTF-8) °í·Á»çÇ× ==
'''ÁÖÀÇ''': ÀÌ ÀýÀÇ ³»¿ëÀº Hangul-ucs¸¦ ÀÌ¿ëÇÏ¿© ucsplain.tex¸¦ »ç¿ëÇÏ´Â °æ¿ì¿¡¸¸ ÇØ´çÇÏ´Â °ÍÀÌ°í, HLaTeXÀ» ÀÌ¿ëÇÏ¿©, htex.texÀ» »ç¿ëÇϽô ºÐÀ̶ó¸é, °ü°è¾ø´Â ³»¿ëÀÔ´Ï´Ù.
¸ÕÀú, utf-8·Î ÀÛ¼ºµÈ ¼Ò½º ÆÄÀÏ(.w)·Î cweb ÇÁ·Î±×·¡¹ÖÀ» ÇϱâÀ§Çؼ­´Â cweb([ftp://ftp.cs.stanford.edu/pub/cweb/cweb.tar.gz cweb.tar.gz])À» ´Ù½Ã ¼³Ä¡ÇØ¾ß ÇÕ´Ï´Ù.
UTF-8·ÎµÈ ÇѱÛÀ» Æ÷ÇÔÇÏ´Â cwebÀÇ ¼Ò½º ÆÄÀÏÀÎ .w ÆÄÀϷκÎÅÍ
ctangle°ú cweave ¸í·É¾î¸¦ ÀÌ¿ëÇؼ­ C ÇÁ·Î±×·¥ ÆÄÀÏÀÎ .c ÆÄÀÏ°ú
TeX ÆÄÀÏÀÎ .texÀ» ¸¸µé´Ùº¸¸é, ÀÔ·ÂÀÌ ³Ê¹« ±æ´Ù´Â °æ°í ¸Þ½ÃÁö°¡ ³ª¿É´Ï´Ù.
ÀÌ´Â À§¸í·É¾îµéÀÌ ÆÄÀÏÀ» ó¸®Çϱâ À§Çؼ­ ³»ºÎÀûÀ¸·Î ¹öÆÛ(char ¹è¿­)¸¦
°¡Áö°í ÀÖ°í, ±× ¹öÆÛÀÇ ³¡À» ³ªÅ¸³»´Â buffer_end°¡ À۾Ƽ­ ³ª¿À´Â
°æ°í ¸Þ½ÃÁöÀÔ´Ï´Ù. ÀÌ °æ¿ì´Â ¹öÆÛÀÇ ³¡À» ³ªÅ¸³»´Â º¯¼ö buffer_end¸¦
ÃæºÐÈ÷ Å©°ÔÇØÁÖ¸é ¹ß»ýÇÏÁö ¾Ê´Â °æ°í ¸Þ½ÃÁöÀÔ´Ï´Ù.
utf-8·Î µÈ °æ¿ì´Â ÇÑ ¹®ÀÚ¸¦ 1¹ÙÀÌÆ®¿¡¼­ ÃÖ´ë 4¹ÙÀÌÆ®±îÁö Ç¥ÇöÇÑ´Ù°í ÇÕ´Ï´Ù.
µû¶ó¼­ utf-8·Î ÀÛ¼ºµÈ ¼Ò½ºÀÇ °æ¿ì¸¦ À§Çؼ­ buffer_end¸¦ ÃÖ´ë 4¹è°¡ µÇ°ÔÇϸé
µË´Ï´Ù.
ctangle°ú cweaveÀÇ È­ÀÏ ÀÔÃâ·Â¿¡ ´ëÇÑ ºÎºÐÀ̳ª °øÅë ºÎºÐÀº
common.w¿¡ Àִµ¥, buffer_end¿¡ ´ëÇÑ ³»¿ëÀÌ ¹Ù·Î ÀÌ ÆÄÀÏ¿¡ ÀÖ½À´Ï´Ù.
common.wÀÇ ÀϺÎ
{{{
@d buf_size 100 /* for \.{CWEAVE} and \.{CTANGLE} */
@d longest_name 1000
@d long_buf_size (buf_size+longest_name) /* for \.{CWEAVE} */
...
@<Definitions...@>=
char buffer[long_buf_size]; /* where each line of input goes */
char *buffer_end=buffer+buf_size-2; /* end of |buffer| */
...
}}}
µû¶ó¼­ buf_size¸¦ ÃÖ´ë 4¹è Å©°ÔÇÏ´ø°¡, ¾Æ´Ï¸é, buffer_end¸¦ Á¤ÀÇÇÏ´Â ºÎºÐ¿¡
»ç¿ëÇÑ buf_size ´ë½Å¿¡ long_buf_size¸¦ »ç¿ëÇÏ¸é µË´Ï´Ù.
'''Âü°í''' cweb¿¡ °ü·ÃÇÑ ÇÁ·Î±×·¥ ¼Ò½º¸¦ °íÄ¥ ÀÏÀÌ ÀÖÀ» ¶§, ÇØ´ç ¼Ò½º¸¦ Á÷Á¢ °íÄ¡´Â ÀÏÀº ¿Ã¹Ù¸¥ ¹æ¹ýÀÌ ¾Æ´Õ´Ï´Ù.
cweb¿¡´Â ÀÌ·¯ÇÑ °æ¿ì¸¦ À§Çؼ­ È®ÀåÀÚ°¡ .ch ÀÎ change ÆÄÀÏ ±â´ÉÀ» Á¦°øÇÕ´Ï´Ù. ¿¹¸¦µé¾î À§ÀÇ °æ¿ì ó·³
common.w ÆÄÀÏÀ» ¼öÁ¤ÇÒ ÀÏÀÌ ÀÖÀ¸¸é, comm-utf8.ch ¿Í °°Àº ÆÄÀÏÀ» ¸¸µé¾î¼­ common.c ÆÄÀÏÀ» ¸¸µé¾î ³¾¶§,
{{{
ctangle common.w comm-utf8.ch
}}}
¿Í °°ÀÌ ÇÏ¸é µË´Ï´Ù. comm-utf8.ch¿¡ µé¾î°¡´Â ³»¿ëÀº
{{{
@x
char *buffer_end=buffer+buf_size-2; /* end of |buffer| */
@y
char *buffer_end=buffer+long_buf_size-2; /* end of |buffer| */
@z
}}}
¿Í °°ÀÌ ÇÏ½Ã¸é µË´Ï´Ù. (.ch ÆÄÀÏÀ» ¸¸µå´Â ¹æ¹ýÀº cweb »ç¿ëÀÚ ¼³¸í¼­¿¡ ÀÖ½À´Ï´Ù.)
¿øº» .w ÆÄÀÏÀ» Á÷Á¢ ¼öÁ¤Çϼŵµ ¹®Á¦°¡ µÉ °ÍÀº ¾ø½À´Ï´Ù¸¸ Á¤¼®ÀÌ ¾Æ´Ï¶ó´Â °ÍÀÌÁÒ.
== CWEBÀÇ ÇѱÛÈ­ ==
CWEBÀÇ ÇѱÛÈ­´Â ucsplain.tex, cwbucsol.tex¸¦ ÀÛ¼ºÇϽŠDohyunKim´ÔÀÇ ¼ö°í·Î °¡´ÉÇÏ°Ô µÇ¾ú½À´Ï´Ù.
CWEB ÇÁ·Î±×·¥ÀÇ ´ëºÎºÐÀÇ ¹®±¸°¡ ´ëºÎºÐ ÇѱÛÈ­ µÇ¾ú½À´Ï´Ù. ÇѱÛÀÌ Æ÷ÇÔµÈ CWEB ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ·Á¸é,
* KTUG Collection2006À» »ç¿ëÇϽô ºÐÀº [http://ftp.ktug.or.kr/KTUG/KTUGCollection/UPDATES/KCupdate-hangulcweb.kcupdate KCupdate-hangulcweb.kcupdate] ¸¦ Ãß°¡·Î ¾÷µ¥ÀÌÆ® ÇÏ½Ã¸é µË´Ï´Ù.
* ±× ¿ÜÀÇ »ç¿ëÀÚ´Â KTUG CVS Repository¿¡¼­ ÃֽŠucsplain.tex, cwbucsol.tex, hangulcweb¸¦ ¹ÞÀ¸½Ã¸é µË´Ï´Ù.
ÇÑ±Û CWEB ÇÁ·Î±×·¡¹ÖÀ» ÇÒ ¶§´Â, ÀÛ¼ºÇÏ´Â ¼Ò½º ÆÄÀÏ(.w)ÀÇ in limbo¸¦ ´ÙÀ½°ú °°ÀÌ ½ÃÀÛÇÏ¸é µË´Ï´Ù.
{{{
\input hangulcweb
}}}

== CWEB ¿¹Á¦ ==
Knuth´Â Á¾Á¾ ±×ÀÇ Áý ¿¬±¸½Ç¿¡¼­ ³ª¿Ã ¶§ ÀÌ·¸°Ô ¸»ÇѴٳ׿ä. "''CWEB programming is such fun!''"
@@ -150,6 +98,8 @@
* chess ¸ÅÅ©·Î: attachment:chess.zip (ü½ºÆÇÀ» ±×¸®±â À§ÇÑ chess ¸ÅÅ©·Î)
* Knuth-Morris-Pratt ¹®ÀÚ¿­ °Ë»ö ¾Ë°í¸®µë ±¸Çö
* cweb ¼Ò½º: attachment:kmp.w.gz
* ´Ü¾î Ƚ¼ö Ãâ·Â: attachment:wordtree.pdf
* ºñÆ®¸Ê Á¤·Ä: attachment:bitmap.pdf

== Microsoft Visual C++¿¡¼­ CWEB ÇÁ·Î±×·¡¹Ö Çϱâ ==
CWEB ÇÁ·Î±×·¡¹Ö ÀÛ¾÷Àº ÀüÅëÀû(?)À¸·Î ¸í·ÉÇà¿¡¼­ ÀÌ·ç¾îÁ® ¿Ô½À´Ï´Ù (¹Ï°Å³ª ¸»°Å³ª). ÇÏÁö¸¸ ½Ã°£ÀÌ È帧¿¡ µû¶ó ´õÀÌ»óÀº °í¸®Å¸ºÐÇÏ°Ô º¸ÀÏ ¼öµµ ÀÖ´Â ¸í·ÉÇà¿¡¼­ÀÇ ÀÛ¾÷À» °íÁýÇÒ ¼ö ¾ø´Â »óȲÀÌ µÇ¾ú³ªº¾´Ï´Ù. °³¹ß ȯ°æÀº IDE¶ó´Â ¼ö·ÁÇÏ°í Æí¸®ÇÑ ÅëÇÕ °³¹ß ȯ°æÀ¸·Î ´ëüµÈÁö ÀÌ¹Ì ¿À·¡ÀÔ´Ï´Ù. ÀÌ¿¡ cweb ÇÁ·Î±×·¡¹Ö ÀÛ¾÷ ¿ª½Ã º¯È­ÀÇ È帧¿¡ ¹ß ¸ÂÃ߾ IDEÀÇ ´ëÇ¥°ÝÀ̶ó°í ÇÒ ¼ö ÀÖ´Â Microsoft Visual C++¿Í ¼ÕÀ» Àâ¾Ò½À´Ï´Ù.



¸ñÂ÷

1 CWEB ½Ã½ºÅÛ
2 CWEB ¼³¸í¼­
3 ÇѱÛ(UTF-8) CWEB ¼³Ä¡ ¹æ¹ý
4 ÇÑ±Û CWEB ÇÁ·Î±×·¥ ÀÛ¼º ¹æ¹ý
5 CWEB »ç¿ë¹ý
6 CWEB ¿¹Á¦
7 Microsoft Visual C++¿¡¼­ CWEB ÇÁ·Î±×·¡¹Ö Çϱâ

1 CWEB ½Ã½ºÅÛ

$$\hbox{\tt CWEB}=\hbox{C programming language}+\hbox{\TeX}$$

¹®ÇÐÀû ÇÁ·Î±×·¡¹Ö ½Ã½ºÅÛÀ¸·Î °¡Àå ¸¹ÀÌ »ç¿ëµÇ´Â °ÍÀÌ ¾Æ¸¶ CWEBÀÏ °ÍÀÌ´Ù. ¹®ÇÐÀû ÇÁ·Î±×·¡¹Ö ½Ã½ºÅÛÀº ±âº»ÀûÀ¸·Î Á¶ÆǾð¾î¿Í ÄÄÇ»ÅÍÇÁ·Î±×·¡¹Ö ¾ð¾î·Î ±¸¼ºµÇ´Âµ¥, CWEBÀº °¡Àå ¸¹ÀÌ »ç¿ëµÇ´Â Á¶ÆǾð¾îÀÎ TeX°ú °¡Àå ¸¹ÀÌ »ç¿ëµÇ´Â C¾ð¾îÀÇ Á¶ÇÕÀ¸·Î ±¸¼ºµÈ ½Ã½ºÅÛÀÌ´Ù.

2 CWEB ¼³¸í¼­

CWEB ½Ã½ºÅÛÀÇ °³³ä°ú »ç¿ë¹æ¹ýÀº ¸Þ´º¾óÀ» Âü°í ÇÑ´Ù: [http]ÇѱÛCWEB¼³¸í¼­

3 ÇѱÛ(UTF-8) CWEB ¼³Ä¡ ¹æ¹ý

º»·¡ÀÇ CWEB ½Ã½ºÅÛÀº ÇÑ ±ÛÀÚ¸¦ 1¹ÙÀÌÆ® Áï 8ºñÆ®¸¦ »ç¿ëÇÏ´Â ¿µ¾î±Ç¿¡ ¸ÂÃß¾îÁ® Àֱ⶧¹®¿¡, CWEB ½Ã½ºÅÛÀ» ¼öÁ¤ÇÏÁö ¾Ê°í´Â UTF-8 ÀÎÄÚµùµÈ ÇÑ±Û ÇÁ·Î±×·¡¹ÖÀÌ ºÒ°¡´ÉÇÏ´Ù. ÀÌ´Â CWEB ½Ã½ºÅÛÀÌ ³»ºÎÀûÀ¸·Î »ç¿ëÇÏ´Â ¹öÆÛÀÇ Å©±â°¡ ³Ê¹« À۱⠶§¹®ÀÌ´Ù. º»·¡ÀÇ ½Ã½ºÅÛÀ¸·Î ÇÑ±Û cweb ÆÄÀÏÀ» ÀÌ¿ëÇϸé, ´ÙÀ½°ú °°Àº ¿¡·¯ ¸Þ½ÃÁö¸¦ ¸¸³ª°ÔµÈ´Ù.
 ! Input line too long. (l. 387)
ÀÌ ¹®Á¦Á¡À» ÇØ°áÇÏÀÚ.

  1. CWEB ½Ã½ºÅÛ ¼Ò½º¸¦ [ftp]cweb.tar.gz ¿¡¼­ ¹Þ¾Æ¼­, Àû´çÇÑ °÷¿¡ ¾ÐÃàÀ» Ǭ´Ù.
  2. make ¸í·ÉÀ¸·Î ÇöÀç µð·ºÅ丮¿¡ ctangle ½ÇÇàÆÄÀÏÀ» ¸¸µç´Ù.
    make
    
  3. comm-utf8.ch ¶ó´Â À̸§À¸·Î ÆÄÀÏÀ» Çϳª ¸¸µç´Ù. ±× ³»¿ëÀº ´ÙÀ½°ú °°´Ù.
    @x
    char *buffer_end=buffer+buf_size-2; /* end of |buffer| */
    @y
    char *buffer_end=buffer+long_buf_size-2; /* end of |buffer| */
    @z
    
  4. MakefileÀ» ¿­¾î¼­ 44¹ø° ÁÙÀ» ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇÏ¿©, ¹æ±Ý Àü¿¡ ¸¸µç comm-utf8.ch ÆÄÀÏÀ» Àû¿ëÇÑ´Ù.
    CCHANGES= comm-utf8.ch
    
  5. make cautiously ¶õ ¸í·ÉÀ¸·Î comm-utf8.ch °¡ Àû¿ëµÈ ctangleÀ» ¸¸µç´Ù.
    make cautiously
    
    ±×·¯¸é, ÇöÀç ÀÛ¾÷ÇÏ°í ÀÖ´Â µð·ºÅ丮¿¡ ctangle À̶ó´Â ½ÇÇà ÆÄÀÏÀÌ »ý°åÀ» °ÍÀÌ´Ù.
  6. ÀÌÁ¦ »õ·Î¿î CWEB ½Ã½ºÅÛÀ» ¸¸µé ¸ðµç Áغñ°¡ µÇ¾ú´Ù. ´ÙÀ½°ú °°Àº ¼ø¼­·Î ÄÄÆÄÀÏÇÏ°í ÀνºÅçÇÑ´Ù.
    make all
    make install
    
  7. »ç¿ë¼³¸í¼­¸¦ ¾ò°íÀÚ ÇÑ´Ù¸é, ´ÙÀ½°ú °°ÀÌ ÇÑ´Ù.
    make manual
    ¶Ç´Â,
    make fullmanual
    


4 ÇÑ±Û CWEB ÇÁ·Î±×·¥ ÀÛ¼º ¹æ¹ý

CWEBÀÇ ÇѱÛÈ­´Â DohyunKim´ÔÀÌ ÀÛ¼ºÇϽŠkotexplain.tex, hangulcweb.texÀ» ÀÌ¿ëÇؼ­ °¡´ÉÇÏ´Ù. CWEB ½Ã½ºÅÛ¿¡¼­ TeXÀº ±âº»ÀûÀ¸·Î Plain TeXÀ» ÀÌ¿ëÇϴµ¥, kotexplain.texÀÌ Plain TeX¿¡¼­ ÇѱÛÀ» »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ÇØÁÖ´Â ¸ÅÅ©·ÎÀÌ´Ù. hangulcweb.tex ÆÄÀÏÀº CWEBÀÇ ¿©·¯°¡Áö ¿µ¹® ¸Þ½ÃÁö¸¦ Çѱ۷Π¹Ù²Û °ÍÀÌ°í, ´õ¿íÀÌ pdf¸¦ ÀÌ¿ëÇÒ ¶§, ÇÑ±Û ºÏ¸¶Å©¸¦ °¡´ÉÇÏ°Ô ÇØÁØ´Ù.

À§ µÎ ÆÄÀÏÀº ¸ðµÎ http://cvs.ktug.or.kr/viewcvs/ko.TeX/macro/plain ¿¡¼­ ÃֽŠÆÄÀÏÀ» ¹ÞÀ» ¼ö ÀÖ´Ù.

ÇÑ±Û CWEB ÇÁ·Î±×·¡¹ÖÀ» ÇÒ ¶§´Â, ÀÛ¼ºÇÏ´Â ¼Ò½º ÆÄÀÏ(.w)ÀÇ Ã³À½À» ´ÙÀ½°ú °°ÀÌ ½ÃÀÛÇÏ¸é µÈ´Ù.
\input hangulcweb

5 CWEB »ç¿ë¹ý

$$\hbox{cweb}=\hbox{ctangle}+\hbox{cweave}$$
  • È®ÀåÀÚ°¡ .wÀÎ ÅؽºÆ® ÆÄÀÏ, ¿¹¸¦µé¾î foo.w À̶õ ÆÄÀÏÀ» ¸¸µç´Ù. foo.w´Â web ȤÀº cweb ÆÄÀÏÀε¥, ÇÁ·Î±×·¡¹Ö ¼Ò½º¿Í ±×¿¡ ÇØ´çÇÏ´Â µµÅ¥¸ÕÆ®¸¦ µ¿½Ã¿¡ °¡Áö°í ÀÖ´Â ÆÄÀÏÀÌ´Ù. cweb ÇÁ·Î±×·¡¹ÖÀ» ÇÒ¶§´Â, ÀÌó·³ ÇÁ·Î±×·¡¹Ö°ú µµÅ¥¸ÕÆ®¸¦ µ¿½Ã¿¡ »ý°¢ÇØ¾ß ÇÑ´Ù.
  • ¾Æ·¡¿Í °°Àº ¸í·É¾î·Î cweb ÆÄÀÏ foo.w·ÎºÎÅÍ ÇÁ·Î±×·¡¹Ö ¼Ò½º ÆÄÀÏ foo.c(ȤÀº foo.cpp)À» ¸¸µé¾î³½´Ù.
    % ctangle foo
    
  • ctangle·Î ºÎÅÍ »ý¼ºµÈ foo.c¸¦ gcc°°Àº C ÄÄÆÄÀÏ·¯¸¦ ÀÌ¿ëÇؼ­ ½ÇÇà ÆÄÀÏÀ» ¸¸µé¾î ³À´Ï´Ù.
  • ´ÙÀ½ÀÇ ¸í·É¾î·Î´Â foo.w·Î ºÎÅÍ TeX ÆÄÀÏÀÎ foo.texÀ» ¾ò½À´Ï´Ù.
    % cweave foo
    
  • cweave·Î ºÎÅÍ ³ª¿Â foo.texÀº TeXÀ» ÀÌ¿ëÇÏ¿© foo.dvi¸¦ ¸¸µç´Ù.
    % tex foo
    
    ¶Ç´Â, pdfÀÇ ±â´ÉÀ» ½ÊºÐ ¹ßÈÖÇÏ°í ½ÍÀ¸½Ã´Ù¸é, ´ÙÀ½°ú °°ÀÌ ÇÏ¸é µÈ´Ù.
    % pdftex foo
    ¶Ç´Â
    % etex "\let\pdf+ \input foo"
    % dvipdfmx foo
    
À§ °úÁ¤À» ±×¸²À¸·Î ³ªÅ¸³»¸é ´ÙÀ½°ú °°´Ù.

cweave.jpg


6 CWEB ¿¹Á¦

Knuth´Â Á¾Á¾ ±×ÀÇ Áý ¿¬±¸½Ç¿¡¼­ ³ª¿Ã ¶§ ÀÌ·¸°Ô ¸»ÇѴٳ׿ä. "CWEB programming is such fun!"
  • UNIXÀÇ Word count(wc): @cbe.pdf (769.99 KB)
    • Karnes´ÔÀÌ Á¦°øÇØÁֽŠTeX by Example Ã¥ÀÇ ¼Ò½º Äڵ带 ÀÌ¿ëÇؼ­ ÀÛ¼ºÇÑ °ÍÀÔ´Ï´Ù.
  • Vector rotation CWEB ¿¹Á¦
  • Jeff SomersÀÇ N°³ÀÇ ¿©¿Õ¹®Á¦
    • cweb ¼Ò½º: @nq.w.gz (8.72 KB)
    • chess ¸ÅÅ©·Î: @chess.zip (116 KB) (ü½ºÆÇÀ» ±×¸®±â À§ÇÑ chess ¸ÅÅ©·Î)
  • Knuth-Morris-Pratt ¹®ÀÚ¿­ °Ë»ö ¾Ë°í¸®µë ±¸Çö
  • ´Ü¾î Ƚ¼ö Ãâ·Â: @wordtree.pdf (114.4 KB)
  • ºñÆ®¸Ê Á¤·Ä: @bitmap.pdf (81.97 KB)

7 Microsoft Visual C++¿¡¼­ CWEB ÇÁ·Î±×·¡¹Ö Çϱâ

CWEB ÇÁ·Î±×·¡¹Ö ÀÛ¾÷Àº ÀüÅëÀû(?)À¸·Î ¸í·ÉÇà¿¡¼­ ÀÌ·ç¾îÁ® ¿Ô½À´Ï´Ù (¹Ï°Å³ª ¸»°Å³ª). ÇÏÁö¸¸ ½Ã°£ÀÌ È帧¿¡ µû¶ó ´õÀÌ»óÀº °í¸®Å¸ºÐÇÏ°Ô º¸ÀÏ ¼öµµ ÀÖ´Â ¸í·ÉÇà¿¡¼­ÀÇ ÀÛ¾÷À» °íÁýÇÒ ¼ö ¾ø´Â »óȲÀÌ µÇ¾ú³ªº¾´Ï´Ù. °³¹ß ȯ°æÀº IDE¶ó´Â ¼ö·ÁÇÏ°í Æí¸®ÇÑ ÅëÇÕ °³¹ß ȯ°æÀ¸·Î ´ëüµÈÁö ÀÌ¹Ì ¿À·¡ÀÔ´Ï´Ù. ÀÌ¿¡ cweb ÇÁ·Î±×·¡¹Ö ÀÛ¾÷ ¿ª½Ã º¯È­ÀÇ È帧¿¡ ¹ß ¸ÂÃ߾ IDEÀÇ ´ëÇ¥°ÝÀ̶ó°í ÇÒ ¼ö ÀÖ´Â Microsoft Visual C++¿Í ¼ÕÀ» Àâ¾Ò½À´Ï´Ù.


À§ ¹®¼­´Â Visual C++¿¡¼­ cweb ÇÁ·Î±×·¡¹ÖÀ» Çϱâ À§ÇÑ ¼¼Æà ¹æ¹ý°ú »ç¿ë ¹æ¹ý, ¿©·¯°¡Áö cweb ÆÁÀÌ µé¾îÀÖ´Â À¯¿ëÇÑ ¹®¼­¶ó°í »ý°¢µË´Ï´Ù.