== CWEB ½Ã½ºÅÛ == $$\hbox{CWEB}=\hbox{C programming language}+\hbox{\TeX}$$ from KTUGContrib:3195 (by ÀÛÀº³ª¹«) ¹®ÇÐÀû ÇÁ·Î±×·¡¹Ö ½Ã½ºÅÛÀ¸·Î °¡Àå ¸¹ÀÌ »ç¿ëµÇ´Â °ÍÀÌ ¾Æ¸¶ CWEBÀÏ °ÍÀÔ´Ï´Ù. ¹®ÇÐÀû ÇÁ·Î±×·¡¹Ö ½Ã½ºÅÛÀº ±âº»ÀûÀ¸·Î Á¶ÆǾð¾î¿Í ÄÄÇ»ÅÍÇÁ·Î±×·¡¹Ö ¾ð¾î·Î ±¸¼ºµÇ´Âµ¥, CWEBÀº °¡Àå ¸¹ÀÌ »ç¿ëµÇ´Â Á¶ÆǾð¾îÀÎ TeX°ú °¡Àå ¸¹ÀÌ »ç¿ëµÇ´Â C¾ð¾îÀÇ Á¶ÇÕÀ¸·Î ±¸¼ºµÈ ½Ã½ºÅÛÀÔ´Ï´Ù. µû¶ó¼­ CWEBÀÌ °¡Àå ¸¹ÀÌ »ç¿ëµÇ´Â ½Ã½ºÅÛÀ̶ó°í Çؼ­ ÀÌ»óÇÒ °ÍÀÌ Çϳªµµ ¾ø°ÚÁö¿ä? === CWEB ¼Ò°³ === ¾Æ·¡ÀÇ ±ÛÀº CWEB »ç¿ëÀÚ ¼³¸í¼­(cwebman)ÀÇ ''Introduction''À» ¹ø¿ªÇÑ ³»¿ëÀÔ´Ï´Ù. CWEBÀÇ ¹è°æÀÌ µÇ´Â öÇÐÀº, ÀÚ½ÅÀÌ ÀÛ¼ºÇÏ°í ÀÖ´Â ÇÁ·Î±×·¥¿¡ ´ëÇؼ­ °¡´ÉÇÑ ÃÖ»óÀÇ ¹®¼­¸¦ Á¦°øÇÏ°íÀÚ ÇÏ´Â ÇÁ·Î±×·¡¸Ó´Â ¹®¼­ Á¶ÆÇÀ» À§Çؼ­ TeX°ú °°Àº ¾ð¾î¿Í ÇÁ·Î±×·¡¹ÖÀ» À§Çؼ­ C ¾ð¾î¿Í °°Àº µÎ °¡Áö µµ±¸°¡ µ¿½Ã¿¡ ÇÊ¿äÇÏ´Ù´Â °ÍÀÔ´Ï´Ù. ÀÌ µÎ °¡Áö ¾ð¾î Áß ¾î´À ÇÑ °¡Áö¸¸ °¡Áö°í´Â ÃÖ»óÀÇ ¹®¼­¸¦ Á¦°øÇÒ ¼ö ¾ø½À´Ï´Ù. ÇÏÁö¸¸ ÀÌ µÎ °¡Áö ¾ð¾î¸¦ ÀûÀýÈ÷ Á¶ÇÕÇϸé, °¢°¢ÀÇ ¾ð¾î°¡ Á¦°øÇÒ ¼ö ÀÖ´Â ±â´Éº¸´Ù ´õ¿í À¯¿ëÇÑ ±â´ÉÀ» °®Ãá ½Ã½ºÅÛÀ» ±¸¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ¼ÒÇÁÆ®¿þ¾î ÇÁ·Î±×·¥ÀÇ ±¸Á¶´Â ³»ºÎÀûÀ¸·Î ¸¹Àº ÀÛÀº ºÎºÐµéÀÌ ¼­·Î ±ä¹ÐÈ÷ ¿¬°áµÇ¾î ÀÖ´Â "À¥(web)¡± À̶ó°í »ý°¢ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯ÇÑ ÇÁ·Î±×·¥À» ¹®¼­È­Çϱâ Çϱâ À§Çؼ­ ±× À¥À» ±¸¼ºÇÏ´Â °¢°¢ÀÇ °³º°ÀûÀÎ ºÎºÐµéÀ» ¼³¸íÇÏ°í, ±× ºÎºÐµéÀÌ ±×ÀÇ ÀÌ¿ôµé°ú ¾î¶°ÇÑ ¿¬°üÀÌ ÀÖ´ÂÁö¸¦ ¼³¸íÇÏ´Â °ÍÀÌ ÁÁÀº ¹æ¹ýÀÏ °ÍÀÔ´Ï´Ù. TeXÀ¸·Î Á¦°øµÇ´Â Á¶ÆÇ µµ±¸´Â °¢ ºÎºÐÀ» Àбâ ÁÁ°Ô ÇØ ÁÜÀ¸·Î½á ±×ÀÇ ±¸Á¶¸¦ ½±°Ô ÆÄ¾Ç ÇÒ ¼ö ÀÖ°Ô ÇØÁÖ°í, C ¾ð¾î·Î Á¦°øµÇ´Â ÇÁ·Î±×·¡¹Ö µµ±¸´Â ¾Ë°í¸®ÁòµéÀ» º¸´Ù ¼öÇÐÀûÀ¸·Î ¸íÈ®ÇÏ°Ô ±â¼úÇÒ ¼ö ÀÖ°Ô ÇØÁÝ´Ï´Ù. ÀÌ·¯ÇÑ µÎ °¡Áö µµ±¸¸¦ Á¶ÇÕÇÔ À¸·Î¼­, ¼ÒÇÁÆ®¿þ¾îÀÇ º¹ÀâÇÑ ±¸Á¶¸¦ ½±°Ô ÆÄ¾Ç ÇÒ ¼ö ÀÖµµ·ÏÇÏ´Â ÇÁ·Î±×·¡¹ÖÀÌ °¡´ÉÇÕ´Ï´Ù. µ¿½Ã¿¡ ±× ¹®¼­È­µÈ ÇÁ·Î±×·¥Àº ±â°èÀûÀ¸·Î ¼ÒÇÁÆ®¿þ¾î ½Ã½ºÅÛÀ¸·Î º¯È¯µÇ¾î ½ÇÇà ½Ã½ºÅÛÀ» ¸¸µé ¼ö ÀÖ½À´Ï´Ù. CWEB ½Ã½ºÅÛÀº CWEAVE ¿Í CTANGLE À̶ó°í ºÒ¸®´Â µÎ °³ÀÇ ÇÁ·Î±×·¥À¸·Î ±¸¼ºµÇ¾î ÀÖ½À´Ï´Ù. CWEB ÇÁ·Î±×·¡¹ÖÀ» ÇÒ ¶§´Â, CWEB ÆÄÀÏ À̶ó°í ºÒ¸®´Â ÇϳªÀÇ ÆÄÀÏ¿¡ C ÄÚµå¿Í ¹®¼­È­¸¦ À§ÇÑ Äڵ带 µ¿½Ã¿¡ ÀÛ¼ºÇÏ°í, ÀϹÝÀûÀ¸·Î something.w °ú °°ÀÌ À̸§ Áþ½À´Ï´Ù. ´ÙÀ½°ú °°Àº ¸í·É¾î ¡®cweave something¡¯´Â something.tex ÆÄÀÏÀ» »ý¼ºÇÏ°í, ÀÌ ÆÄÀÏÀº TEX À» ÅëÇÏ¿© something.wÀ» ÆäÀÌÁö ·¹À̾ƿô°ú ÇÁ·Î±×·¥ÀÇ µé¿©¾²±â, ±×¸®°í ¿¹¾à¾î³ª º¯¼ö¸í ȤÀº ¼öÇÐ ±âÈ£µéÀ» °¢°¢ ´Ù¸¥ ÆùÆ®·Î Ç¥ÇöÇÏ´Âµî ¿ì¸®µéÀÌ ½±°Ô ÀÐÀ» ¼ö ÀÖµµ·Ï ¸ÚÁø Ãâ·Â¹°·Î ¸¸µé¾î ³À´Ï´Ù. ÀÌ Ãâ·Â¹°¿¡´Â cweave ¸í·É¾î°¡ ÀÚ µ¿ÀûÀ¸·Î ¸¸µé¾î ³½ »öÀεµ Æ÷ÇԵ˴ϴÙ. ºñ½ÁÇÏ°Ô, ¡®ctangle something¡¯ À̶õ ¸í·ÉÀ» ½ÇÇàÇϸé something.c¶õ À̸§ÀÇ C ÆÄÀÏÀ» ¾òÀ» ¼ö ÀÖ°í, ÀÌ ÆÄÀÏÀº ÄÄÆÄÀÏÀ» ÅëÇÏ¿© ½ÇÇà ÆÄÀÏÀ» ¾òÀ» ¼ö ÀÖ½À´Ï´Ù. CWEBÀº C ÇÁ·Î±×·¡¹Ö¿¡ ´Ü¼øÈ÷ ¹®¼­È­ µµ±¸¸¦ Á¦°øÇÑ´Ù´Â °Í ¿Ü¿¡, C ¾ð¾î¸¦ º¸´Ù °­È­½ÃÅ°´Â Ãø¸éÀÌ ÀÖ½À´Ï´Ù. Áï º¸ÅëÀÇ C ÇÁ·Î±×·¡¹Ö¿¡¼­´Â ºÒ°¡´ÉÇÑ, Àüü ÇÁ·Î±×·¥À» ¿©·¯ ÀÛÀº Á¶°¢µé·Î ³ª´©°í ±× Á¶°¢µéÀ» ¿©±âÀú±â »õ·Ó°Ô ¹èÄ¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô ÇÔÀ¸·Î ÇÁ·Î±×·¥À» ¼øÂ÷ÀûÀ¸·Î ¼³¸íÇÏ´Â °ÍÀ̾ƴ϶ó, ¾Ë°í¸®Áò ȤÀº ÀÚ·á ±¸Á¶ÀûÀ¸·Î ÀǹÌÀûÀ¸·Î °ü·ÃÀÖ´Â ºÎºÐµéÀ» ¼½¼ÇÀ̶ó´Â À̸§À¸·Î ÇÑ °÷¿¡ ¹èÄ¡Çؼ­ ÀÚ¼¼È÷ ¼³¸íÇÔÀ¸·Î½á °¢ ¼½¼ÇÀ» ÀÚ¼¼È÷ ¼³¸íÇÏ°í, ±×·¯ÇÑ ¼½¼ÇµéÀÇ ¿¬°ü °ü°è¸¦ ¼³¸íÇÔÀ¸·Î Àüü ÇÁ·Î±×·¥À» º¸´Ù ÀÌÇØÇϱ⠽±°Ô ¼³¸íÇÒ ¼ö ÀÖ½À´Ï´Ù. CTANGLE ÇÁ·Î±×·¥Àº ÀÌó·³ C ¹®¹ý¿¡ ¾î±ß³­ ¹æ½ÄÀ¸·Î ÀÛ¼ºµÈ CWEB ÇÁ·Î±×·¥À» C ¾ð¾î ¹®¹ý¿¡ ¸Â°Ô ´Ù½Ã Àç¹èÄ¡ Çϱ⠶§¹®¿¡ ctangle À̶ó´Â À̸§À» ¾ò°Ô µÇ¾ú½À´Ï´Ù. CWEB À¸·Î ÇÁ·Î±×·¡¹ÖÇÏ¸é ¾òÀ» ¼ö ÀÖ´Â ÀÕÁ¡Àº °¢ ¼½¼ÇÀ» °³º°ÀûÀ¸·Î ¼³¸íÇÒ ¼ö ÀÖ´Ù´Â °ÍÀ» ÀÌ¿ëÇؼ­ ÇÁ·Î±×·¥¿¡ »ç¿ëµÈ ¾Ë°í¸®ÁòµéÀ» ÀÌ·¯ÇÑ ¼½¼ÇµéÀ» ÀÌ¿ëÇÏ¿© ¹­¾î¼­ ÇÑ °÷¿¡¼­ ¡°untangle¡±ÀÇ ÇüÅ·ΠǥÇöÇÒ ¼ö ÀÖ´Ù´Â Á¡ÀÔ´Ï´Ù. CWEAVE ÇÁ·Î±×·¥Àº CWEB ÆÄÀÏÀ» ÀÔ·Â ¹Þ¾Æ¼­ °¢ ¼½¼ÇÀ» ±¸¼ºÇÏ´Â TeX ºÎºÐ°ú C ºÎºÐÀ» ¼­·Î ¿«Àº ÈÄ¿¡ (intertwine) ±×·¯ÇÑ sectionµé·Î ±¸¼ºµÈ Á÷¹°(fabric)·ÎºÎÅÍ ÇϳªÀÇ ±¸Á¶È­µÈ ¹®¼­¸¦ Â¥³»±â(weave) ¶§¹®¿¡ cweave ¶ó´Â À̸§À» ¾ò¾ú½À´Ï´Ù.(ÀÌÇØ°¡ µÇ½Ê´Ï±î?) ¿µ¾î ´Ü¾î ¡°weave¡±¿¡ ÇØ´çÇÏ´Â µ¶ÀÏ ´Ü¾î°¡ ''webe''ÀÌ°í, ±×¿¡ ÇØ´çÇÏ´Â ¶óƾ¾î°¡ ''texe'' ¶ó´Â °Í¿¡´Â ¾Æ¸¶µµ ÀÏÁ¾ÀÇ ±íÀº ¿¬°üÀ» °ÍÀÔ´Ï´Ù. ¿©·¯ºÐÀÌ CWEBÀ» »ç¿ëÇÏ°íÀÚ ÇÑ´Ù¸é, ¹Ýµå½Ã C ÇÁ·Î±×·¡¹Ö ¾ð¾î¿¡ Àͼ÷ÇØ¾ß ÇÒ °ÍÀÔ´Ï´Ù. ÃÖ¼ÒÇÑÀÇ TeX¿¡ ´ëÇÑ Áö½Äµµ ÀÖÀ¸¸é ÁÁ°ÚÁö¸¸, CWEB ÇÁ·Î±×·¡¹ÖÀ» Çϸ鼭 TeX¿¡ ´ëÇÑ Áö½ÄÀº ÀÚµ¿ÀûÀ¸·Î ¾ò°Ô µÉ °ÍÀÔ´Ï´Ù. ÀÌ´Â TeX¿¡¼­ »ç¿ëµÇ´Â ´Ü¼øÇÑ ÅؽºÆ®´Â TeX¿¡ ´ëÇÑ Áö½ÄÀÌ °ÅÀÇ ¾ø¾îµµ °¡´ÉÇϱ⠶§¹®ÀÔ´Ï´Ù. ¹°·Ð C ¾ð¾î¿Í TeX¿¡ ¸ðµÎ Àͼ÷ÇÑ µ¶ÀÚ´Â CWEB À» ¸Å¿ì ½±°Ô ¹è¿ï ¼ö ÀÖ½À´Ï´Ù. ¾Æ·¡ ÷ºÎÆÄÀÏÀº CWEBÀÇ ¸Þ´º¾óÀÎ cwebman.texÀÇ ÃʹݺÎÀÇ ³»¿ëÀÎ ¹®ÇÐÀû ÇÁ·Î±×·¡¹Ö°ú CWEBÀÇ °³³äÀ» ¹ø¿ªÇÑ °ÍÀÔ´Ï´Ù. ¸Þ´º¾óÀÇ ÈĹݺδ ÄÄÇ»ÅÍ ÇÁ·Î±×·¡¹Ö¿¡ °ü·ÃµÈ ºÎºÐÀ̶ó »ý·«Çß½À´Ï´Ù. attachment:korean_cwebman.pdf CWEB ½Ã½ºÅÛ ¸»°íµµ ¸¹Àº ¹®ÇÐÀû ÇÁ·Î±×·¡¹Ö ½Ã½ºÅÛµéÀÌ Á¸ÀçÇÕ´Ï´Ù. [http://www.literateprogramming.com literateprogramming.com] À¥»çÀÌÆ®¸¦ ¹æ¹®ÇØ º¸½Ã¸é, ¸Å¿ì ´Ù¾çÇÑ ½Ã½ºÅÛµéÀ» Á¢ÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ »çÀÌÆ®´Â KnuthÀÇ À¥ÆäÀÌÁö¿¡µµ ¼Ò°³µÈ ¸Å¿ì ÈǸ¢ÇÑ À¥»çÀÌÆ®ÀÔ´Ï´Ù. === 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Àº PlainTeXÀ» ÀÌ¿ëÇÏ¿© foo.dvi¸¦ ¸¸µì´Ï´Ù. {{{ % tex foo }}} ¶Ç´Â, pdfÀÇ ±â´ÉÀ» ½ÊºÐ ¹ßÈÖÇÏ°í ½ÍÀ¸½Ã´Ù¸é, ´ÙÀ½°ú °°ÀÌ ÇÏ½Ã¸é µË´Ï´Ù. {{{ % tex "\let\pdf+ \input foo" }}} * ¿ø·¡ÀÇ cweb ½Ã½ºÅÛÀº PlainTeX ¸ÅÅ©·Î¸¦ ÀÌ¿ëÇÕ´Ï´Ù¸¸, LaTeXÀ» ÀÌ¿ëÇÑ cwebµµ ÀÖ½À´Ï´Ù. (LaTeX¿ë CWEB: attachment:cweb-user.pdf) À§ °úÁ¤À» ±×¸²À¸·Î ³ªÅ¸³»¸é ´ÙÀ½°ú °°½À´Ï´Ù. attachment:cweave.jpg === Microsoft Visual C++¿¡¼­ CWEB ÇÁ·Î±×·¡¹Ö Çϱâ === CWEB ÇÁ·Î±×·¡¹Ö ÀÛ¾÷Àº ÀüÅëÀû(?)À¸·Î ¸í·ÉÇà¿¡¼­ ÀÌ·ç¾îÁ® ¿Ô½À´Ï´Ù (¹Ï°Å³ª ¸»°Å³ª). ÇÏÁö¸¸ ½Ã°£ÀÌ È帧¿¡ µû¶ó ´õÀÌ»óÀº °í¸®Å¸ºÐÇÏ°Ô º¸ÀÏ ¼öµµ ÀÖ´Â ¸í·ÉÇà¿¡¼­ÀÇ ÀÛ¾÷À» °íÁýÇÒ ¼ö ¾ø´Â »óȲÀÌ µÇ¾ú³ªº¾´Ï´Ù. °³¹ß ȯ°æÀº IDE¶ó´Â ¼ö·ÁÇÏ°í Æí¸®ÇÑ ÅëÇÕ °³¹ß ȯ°æÀ¸·Î ´ëüµÈÁö ÀÌ¹Ì ¿À·¡ÀÔ´Ï´Ù. ÀÌ¿¡ cweb ÇÁ·Î±×·¡¹Ö ÀÛ¾÷ ¿ª½Ã º¯È­ÀÇ È帧¿¡ ¹ß ¸ÂÃ߾ IDEÀÇ ´ëÇ¥°ÝÀ̶ó°í ÇÒ ¼ö ÀÖ´Â Microsoft Visual C++¿Í ¼ÕÀ» Àâ¾Ò½À´Ï´Ù. attachment:cwebmsvc.pdf À§ ¹®¼­´Â Visual C++¿¡¼­ cweb ÇÁ·Î±×·¡¹ÖÀ» Çϱâ À§ÇÑ ¼¼Æà ¹æ¹ý°ú »ç¿ë ¹æ¹ý, ¿©·¯°¡Áö cweb ÆÁÀÌ µé¾îÀÖ´Â À¯¿ëÇÑ ¹®¼­¶ó°í »ý°¢µË´Ï´Ù. === CWEB ¿¹Á¦ === Àú´Â C ÇÁ·Î±×·¡¹ÖÀ» ÇؾßÇÒ ¶§¸é, ¾ðÁ¦³ª CWEBÀ¸·Î ÇÁ·Î±×·¡¹ÖÀ» ÇÏ°í Àִµ¥, CWEB ÇÁ·Î±×·¡¹ÖÀº Á¤¸» Àç¹ÌÀÖ½À´Ï´Ù. Á¦ ¸»À» ¸ø ¹ÏÀ¸½Ã°Ú´Ù¸é, Knuth ¸»Àº ¹ÏÀ¸½Ã°ÚÁÒ? Knuth´Â Á¾Á¾ ±×ÀÇ Áý ¿¬±¸½Ç¿¡¼­ ³ª¿Ã ¶§ ÀÌ·¸°Ô ¸»ÇѴٳ׿ä. "''CWEB programming is such fun!''" * Knuth°¡ ¼Õ¼ö ÀÛ¼ºÇÑ CWEBÀÇ ´ëÇ¥ÀûÀÎ ¿¹Á¦: attachment:wc.pdf * CWEB ÇÁ·Î±×·¥ÀÇ ÁÖ¿Á°°Àº ¿¹Á¦µé (http://www.literateprogramming.com/fexamples.html) * Vector rotation CWEB ¿¹Á¦: attachment:vrotate.tar.gz * Á¸º¥Æ²¸®ÀÇ ''Programming Pearls'' Á¦1Ä÷³¿¡ ³ª¿À´Â ºñÆ®¸Ê Á¤·ÄÀ» cwebÀ¸·Î ÀÛ¼ºÇÑ ¿¹Á¦: attachment:bitmap.pdf === LaTeXÀ» ÀÌ¿ëÇÑ CWEB ÇÁ·Î±×·¡¹Ö === WEB/CWEB Àº ±âº»ÀûÀ¸·Î TeX À» »ç¿ëÇϵµ·Ï ¼³°èµÇ¾î ÀÖÁö¸¸ ¿©·¯°¡Áö ¹æ¹ýÀ» ÀÌ¿ëÇؼ­ LaTeX ¿¡¼­ »ç¿ëÇÒ ¼ö ÀÖ´Ù. Å©°Ô ´ÙÀ½ÀÇ µÎ°¡Áö ¹æ¹ýÀÌ ÀÖ´Ù. * CWEBÀ» ÀÌ¿ëÇÏ´Â ¹æ¹ý * NOWEBÀ» ÀÌ¿ëÇÏ´Â ¹æ¹ý ==== CWEB À» ÀÌ¿ëÇÏ´Â ¹æ¹ý ==== CWEBÀ¸·Î ÀÛ¼ºµÈ w ÆÄÀÏÀ» ±â¹ÝÀ¸·Î ÇÑ´Ù. cweb.cls ¶ó°í Çϴ Ŭ·¡½º ÆÄÀÏÀÌ ÀÖÀ¸¹Ç·Î À̸¦ ÀÌ¿ëÇÏ°Ô µÈ´Ù. * ÀåÁ¡ : ±âÁ¸ÀÇ w ÆÄÀϵéÀ» ¸î°¡Áö º¯°æÇÔÀ¸·Î¼­ LaTeX »ó¿¡¼­ »ç¿ëÀÌ °¡´ÉÇÏ´Ù. * ´ÜÁ¡ : Ŭ·¡½º ÆÄÀϸ¸À» Á¦°øÇÔÀ¸·Î¼­ º»°ÝÀûÀÎ È®ÀåÀÌ °ÅÀÇ ºÒ°¡´É ÇÏ´Ù. ¿¹¸¦ µé¾î¼­ ¸Þ¸ð¾Æ¿Í °°ÀÌ »ç¿ëÇϱâ À§Çؼ­´Â Ŭ·¡½º ÆÄÀÏÀÎ cweb.cls ¸¦ .sty ÆÄÀÏ·Î º¯°æÇØ¾ß Çϴµ¥, ÀÌ ³ë·ÂÀº °ÅÀÇ ¹«ÀÇ¹Ì ÇÏ´Ù°í »ý°¢ÀÌ µÈ´Ù. ==== [noweb] À» ÀÌ¿ëÇÏ´Â ¹æ¹ý ==== [noweb] Àº LaTeX À» ÀÌ¿ëÇÒ ¼ö ÀÖµµ·Ï, ¶Ç ¿©·¯°¡Áö ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï º¯°æÇÑ, WEB ÀÌ´Ù. ½ÇÁ¦·Î LaTeX À» »ç¿ëÇϱâ À§Çؼ­´Â [noweb] À» »ç¿ëÇÏ´Â °ÍÀÌ Á¤´äÀ̶ó°í º¼ ¼ö ÀÖ´Ù. * ÀåÁ¡ : ½ºÅ¸ÀÏ ÆÄÀϸ¸À» Á¦°øÇÔÀ¸·Î¼­ ±âÁ¸ÀÇ Å¬·¡½ºµé°ú È¥¿ëÇÏ¿© »ç¿ëÇÏ´Â °ÍÀÌ °¡´ÉÇÏ´Ù. ¿©·¯°¡Áö ÇÁ·Î±×·¡¹Ö ¾ð¾î¸¦ Á¦°øÇÑ´Ù. * ´ÜÁ¡ : nawk µî ´Ù¸¥ À¯Æ¿¸®Æ¼¸¦ »ç¿ëÇÏ¿© ¼Ò½º¸¦ ÄÄÆÄÀÏ ÇÏ°Ô µÇ¹Ç·Î Á÷°üÀûÀÌÁö ¾ÊÀº ¼³Ä¡°úÁ¤ÀÌ ÇÊ¿äÇÏ´Ù. ±âÁ¸ÀÇ CWEB ¾ð¾î¿Í´Â Á¶±Ý ´Ù¸£´Ù. ==== ±âŸ ÀÚ·á ==== LaTeX¿¡¼­ CWEB ÇÁ·Î±×·¡¹ÖÀ» À§ÇÑ ¹æ¹ýÀÌ ¼³¸íµÇ¾î ÀÖ½À´Ï´Ù. * KTUGContrib:3252 (by [smcho]) * KTUGContrib:3236 (by [smcho]) === CWEBÀÇ ÇѱÛÈ­ === CWEBÀÇ ÇѱÛÈ­¿¡ ÃÖ´ë °É¸²µ¹ À̾ú´ø ÇÑ±Û ºÏ¸¶Å© ¹®Á¦°¡ ±èµµÇö´ÔÀÇ ¼ö°í·Î ÇØ°á µÇ¾ú½À´Ï´Ù. (KTUGContrib:3258) ÀÌÁ¦´Â CWEB ÇÁ·Î±×·¡¹ÖÀÇ »õ·Î¿î ¼½¼Ç ±×·ìÀ» ½ÃÀÛÇÏ´Â º°Ç¥¼½¼Ç(starred section: @*) ¹× ¼½¼Ç Á¦¸ñµé(@<...@>)¿¡ ÇѱÛÀ» »ç¿ëÇÒ ¶§, ÇØ´ç ºÏ¸¶Å©¿¡ ÇѱÛÀÌ ³ª¿ÀÁö ¾Ê´Â Çö»óÀÌ ¾ø¾îÁ³½À´Ï´Ù. ÀÌ·Î ÀÎÇÏ¿© º¸´Ù Àб⠽¬¿î ÇÁ·Î±×·¥ ÀÛ¼ºÀÌ °¡´ÉÇØ Á³½À´Ï´Ù. ÇѱÛÀÌ Æ÷ÇÔµÈ CWEB ÇÁ·Î±×·¡¹ÖÀ» ÇÒ ¶§´Â, ±èµµÇö´ÔÀÇ ±Û¿¡ ¼Ò°³µÇ¾î ÀÖµíÀÌ, ÀÛ¼ºÇÏ´Â ¼Ò½º ÆÄÀÏ(.w)ÀÇ in limbo¸¦ {{{ \input ucsplain \input cwbucsol }}} ·Î ½ÃÀÛÇÏ¸é µË´Ï´Ù. * '''Âü°í''': KTUGContrib:3261 (by [ÀÛÀº³ª¹«]) CWEBÀÇ ÇѱÛÈ­¸¦ Å×½ºÆ®ÇÑ ³»¿ëÀÔ´Ï´Ù. ´Ü¼øÇÑ ¿µ¾î ¹®±¸¸¦ Çѱ۷Π¹Ù²Û °ÍÀÔ´Ï´Ù. Á» ´õ ¼¼½ÉÇÑ ÀÛ¾÷ÀÌ ÁøÇà µÇ¾î¾ß ÇÕ´Ï´Ù. === 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¸¦ ÃæºÐÈ÷ Å©°ÔÇØÁÖ¸é ¹ß»ýÇÏÁö ¾Ê´Â °æ°í ¸Þ½ÃÁöÀÔ´Ï´Ù. ¿µ¾îÀÇ °æ¿ì´Â ¾ËÆĺª Çѹ®ÀÚ°¡ 1¹ÙÀÌÆ®À̱⠶§¹®¿¡ ±×·¯ÇÑ °æ°í ¸Þ½ÃÁö°¡ ¾ø½À´Ï´Ù. (¹°·Ð ¿µ¾îÀÇ °æ¿ìµµ ÇÑ ÁÙÀ» ³Ê¹« ±æ°ÔÇÏ¸é ±×·± ¸Þ½ÃÁö°¡ ³ª¿À°ÚÁÒ.) 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} */ ... @= 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À» ¼³Ä¡ÇÒ¶§, µÎ¹ø° ¹æ¹ýÀ» »ç¿ëÇؼ­ ¼³Ä¡Çؼ­, utf-8·Î µÈ ¹®¼­¸¦ ÄÄÆÄÀÏÇÒ¶§µµ ctangleÀ̳ª cweave°¡ ¹¬¹¬È÷ ±×Àú Á¦ ÇÒ ÀÏÀ» ÇÕ´Ï´Ù. ÀÌ°ÍÀÌ utf-8·Î µÈ ¹®¼­ÀÇ ±Ùº»ÀûÀÎ ÇØ°áÃ¥ÀÎÁö, ÀӽùæÆíÀûÀÎ ¹æ¹ýÀÎÁö´Â ¸ð¸£°ÚÀ¸³ª, Àû¾îµµ À§ÀÇ °æ°í ¸Þ½ÃÁö¸¦ ¾ø¾Ù ¼ö´Â ÀÖ½À´Ï´Ù. '''Âü°í''' 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 »ç¿ëÀÚ ¼³¸í¼­ÀÎ cwebman.pdf¸¦ º¸½Ã¸é Àß ³ª¿ÍÀÖ½À´Ï´Ù.) ¿øº» .w ÆÄÀÏÀ» Á÷Á¢ ¼öÁ¤Çϼŵµ ¹®Á¦°¡ µÉ °ÍÀº ¾ø½À´Ï´Ù¸¸ Á¤¼®ÀÌ ¾Æ´Ï¶ó´Â °ÍÀÌÁÒ.