== CTWILL ½Ã½ºÅÛ == === ¼Ò°³ === CWEB ½Ã½ºÅÛÀ¸·Î ÇÏ´Â ¹®ÇÐÀû ÇÁ·Î±×·¡¹ÖÀº ÄÄÇ»ÅÍ ÇÁ·Î±×·¡¸Óµé·Î ÇÏ¿©±Ý ¸¶Ä¡ ÀÚ½ÅÀÌ ¼Ò¼³À̳ª ¼öÇÊÀ» ¾²°í ÀÖ´Â µíÇÑ Âø°¢À» ºÒ·¯ ÀÏÀ¸Å³ Á¤µµ·Î ÇÁ·Î±×·¡¹Ö ÀÛ¾÷À» Áñ°Ì°ÔÇÏ¿© ÁÝ´Ï´Ù. »Ó¸¸¾Æ´Ï¶ó, ±× ÀÛ¾÷ °á°ú ¶ÇÇÑ ¸Å¿ì ±ò²ûÇÏ°í ÈǸ¢ÇÕ´Ï´Ù. ƯÈ÷, ÇÁ·Î±×·¥ µµÅ¥¸ÕÆ® ¸Ç µÚ¿¡ ÀÚµ¿À¸·Î »ý¼ºÇØÁÖ´Â À妽º´Â ¸Å¿ì À¯¿ëÇÕ´Ï´Ù. ÇÑ ÆíÀÇ ÂªÀº ¿¡¼¼ÀÌ Á¤µµ ±æÀÌÀÇ ÇÁ·Î±×·¥À̶ó¸é ±× À妽º°¡ ¸Å¿ì À¯ÀÍÇÒÅÙµ¥, ÀåÆí ¼Ò¼³ °°Àº ÇÁ·Î±×·¥À̶ó¸é »óȲÀÌ ´Þ¶óÁý´Ï´Ù. ¿ÀÈ÷·Á µµÅ¥¸ÕÆ® ¸Ç µÚ¿¡ ³ª¿À´Â À妽º´Â °ñÄ©°Å¸®°¡ µÉ ¼öµµ ÀÖ½À´Ï´Ù. ÇÁ·Î±×·¥ ¼Ò½º¸¦ Àд´ٴ °ÍÀº º¸ÅëÀÇ ¼Ò¼³À̳ª ¼öÇÊÀ» Àд °Í°ú´Â ¾à°£ Â÷ÀÌ°¡ À־, ±× ¼Ò½º¿¡ »ç¿ëµÈ º¯¼ö³ª ÇÔ¼öµî °¢Á¾ ½Äº°ÀÚµéÀÇ Á¤ÀÇ¿Í ¾²ÀÓ»õµîÀ» ¼¼¼¼È÷ ÀÚÁÖ ÆľÇÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. ±×·² ¶§¸¶´Ù, Áï ¾î¶² º¯¼öÀÇ Á¤Àdzª ¾²ÀÌ´Â °÷À» ã±â À§Çؼ­ µµÅ¥¸ÕÆ®ÀÇ ¸Ç µÚÀÇ À妽º¸¦ ã¾Æ¼­ ÇØ´ç ÆäÀÌÁö·Î °¡´Â °ÍÀº ¸Å¿ì ±ÍÂúÀº ÀÛ¾÷ÀÔ´Ï´Ù. ¿ì¸®¿¡°Ô Ä£¼÷ÇÑ TeX: The Program ¿ª½Ã web ½Ã½ºÅÛÀ¸·Î ÀÛ¼ºµÈ ¹®ÇÐÀû ÇÁ·Î±×·¥Àε¥, ±× ¼Ò½ºÀÇ µµÅ¥¸ÕÆ® ÆäÀÌÁö°¡ 500 ÆäÀÌÁö°¡ ÈξÀ ³Ñ°í, ¸Ç µÚ¿¡ ³ª¿À´Â À妽º¸¸µµ 30 ÆäÀÌÁö°¡ ³Ñ½À´Ï´Ù. ÀÌ·¯ÇÑ »óȲÀ» ÇØ°áÇϱâ À§ÇÑ ¹æ¹ý ÁßÀÇ Çϳª´Â À妽º¸¦ ¸Ç µÚ¿¡¸¸ µÎ´Â °Í »Ó¸¸ ¾Æ´Ï¶ó, µµÅ¥¸ÕÆ® Àü¹Ý¿¡ °ÉÃļ­ ¸Å ¿À¸¥ÂÊ ÆäÀÌÁö¿¡ µÐ´Ù¸é, ÇöÀç ÆäÀÌÁö¿¡¼­ »ç¿ëµÈ º¯¼ö³ª ÇÔ¼öµéÀ» ½±°Ô ã¾Æ º¼ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. ÀÌ·¯ÇÑ À妽º¸¦ ¹Ì´Ï À妽º(mini-indexes) ¶ó°í Çϴµ¥, ctwill ½Ã½ºÅÛÀº ¹®ÇÐÀû ÇÁ·Î±×·¡¹Ö ÇÒ ¶§¿¡ ¹Ì´Ï À妽º¸¦ »ý¼ºÇϵµ·Ï µµ¿ÍÁÝ´Ï´Ù. Knuth´Â ±×ÀÇ Ã¥ [http://www-cs-faculty.stanford.edu/~knuth/sgb.html The Stanford GraphBase]´Â ctwillÀ» ÀÌ¿ëÇؼ­ ¹Ì´Ï À妽º¸¦ °®Ãá ¸ÚÁø Ã¥ÀÔ´Ï´Ù. === ±¸¼º === CTWILL ½Ã½ºÅÛÀº Å©°Ô ¼¼ °³ÀÇ ÇÁ·Î±×·¥À¸·Î ±¸¼ºµÇ¾î ÀÖ½À´Ï´Ù. * '''ctwill''' ÀÌ ÇÁ·Î±×·¥Àº cweave¸¦ º¯ÇüÇÑ two-pass ÇÁ·Î±×·¥ÀÔ´Ï´Ù. cweave°¡ cwebmac.tex ¸ÅÅ©·Î ÆÄÀÏÀ» »ç¿ëÇÏ´Â ¹Ý¸é, ctwill ÇÁ·Î±×·¥Àº cwebmac.tex ¸ÅÅ©·Î°ú °ÅÀÇ µ¿ÀÏÇÏÁö¸¸, ¹Ì´Ï À妽º »ý¼ºµî Ã¥À» ¸¸µå´Â µ¥¿¡ º¸´Ù ÃÊÁ¡À» ¸ÂÃá ctwimac.tex ¸ÅÅ©·Î ÆÄÀÏÀ» ÀÌ¿ëÇÕ´Ï´Ù. * '''refsort''' foo.w¶ó´Â cweb ÆÄÀÏ¿¡ ctwill ÇÁ·Î±×·¥À» Àû¿ëÇÏ°í ³ª¸é, foo.ref¶ó´Â ¹Ì´Ï À妽º »ý¼º¿¡ ÇÊ¿äÇÑ reference ÆÄÀÏÀÌ »ý±â´Âµ¥, ÀÌ foo.ref ÆÄÀÏÀ» Á¤·ÄÇÏ¿©, ¼ÒÆ®µÈ ¹öÀüÀÇ foo.sref¸¦ ¸¸µé¾î ³À´Ï´Ù. * '''twinx''' ctwill ½Ã½ºÅÛÀº ¸Å¿ì Å« ÇϳªÀÇ cweb ÇÁ·Î±×·¥À¸·Î Ã¥À» ¸¸µé°Å³ª, ¿©·¯ °³ÀÇ ÀÛÀº cweb ÆÄÀÏÀ» ¹­¾î¼­ Ã¥À» ¸¸µå´Â °æ¿ì¿¡ »ç¿ëµË´Ï´Ù. [http://www-cs-faculty.stanford.edu/~knuth/sgb.html The Stanford GraphBase]´Â ÈÄÀÚÀÇ °æ¿ì¿¡ ÇØ´çÇÕ´Ï´Ù. ÀÌ·¯ÇÑ °æ¿ì, ¹Ì´Ï À妽º »Ó¸¸ ¾Æ´Ï¶ó ¿©·¯ cweb ¼Ò½ºµéÀÇ major indexesµµ ÇÊ¿äÇѵ¥, twinx´Â ÀÌ °æ¿ì¿¡ »ç¿ëµË´Ï´Ù. === »ç¿ë¹ý === Knuth´Â ctwillÀ» ¸¸µé°í³ª¼­ Âü ÀÌ»óÇÑ ÀÏÀ» ÇÕ´Ï´Ù. cweb ½Ã½ºÅÛÀÇ °æ¿ì´Â cwebman.texÀ̶ó´Â »ç¿ëÀÚ ¼³¸í¼­µµ ¸¸µé°í °÷°÷¿¡¼­ ÀÎÅͺä ([http://tex.loria.fr/historique/interviews/knuth-clb1993.html Donald Knuth-CLB Interview])µîÀ» ÅëÇؼ­ cwebÀ» È«º¸Çϱâ À§Çؼ­ ¸¹Àº ¾Ö¸¦ ½è½À´Ï´Ù. ÇÏÁö¸¸, ctwillÀ» ¸¸µé°í ³ª¼­´Â ¾Æ¹«·± È«º¸µµ, ½ÉÁö¾î´Â »ç¿ëÀÚ ¼³¸í¼­µµ ¸¸µéÁö ¾Ê¾Ò½À´Ï´Ù. (ÀÌ´Â ¾Æ¸¶µµ Knuth ¼³¸í¿¡ÀÇÇϸé, ctwillÀº [http://www-cs-faculty.stanford.edu/~knuth/sgb.html The Stanford GraphBase] Ã¥À» ¸¸µé±â À§Çؼ­ cweave¸¦ ÇØÅ·Çؼ­ ¸¸µé¾ú±â ¶§¹®ÀÌ°í, ¾ÈÁ¤ÀûÀÌÁö ¾Ê¾Æ¼­ ±×´ÙÁö »ç¿ëÀ» ÃßõÇÏÁö ¾Ê´Â´Ù°í Çϳ׿ä. :( --[ÀÛÀº³ª¹«]) À¯ÀÏÇÑ ¼³¸í¼­´Â KnuthÀÇ paper "Mini-indexes for literate programs"¿Í [ftp://ftp.cs.stanford.edu/pub/ctwill/ctwill.tar.gz ctwill.tar.gz]¿¡ µé¾î ÀÖ´Â ctwill.w, refsort.w, twinx.w µéÀÇ cweb ÆÄÀÏ¿¡¼­ µµÅ¥¸ÕÆ®¸¦ ¸¸µé¾î³»¼­ Àоî¾ß ÇÕ´Ï´Ù. ==== ¼³Ä¡ ==== ctwill.tar.gz³»ÀÇ Makefile¿¡´Â ±× ÈçÇÑ make installµµ Á¦°øÇÏÁö ¾Ê½À´Ï´Ù. -_-; 1. ctwill.tar.gzÀÇ ¾ÐÃàÀ» Ç®°í, cweb ¼³Ä¡ ÇÒ¶§¿Í ¸¶Âù°¡Áö·Î ÇѱÛ(utf-8)À» ÀÌ¿ëÇϱâ À§Çؼ­ common.w ÆÄÀÏÀÇ buffer_end Á¤ÀÇÇÑ °÷¿¡¼­ buffer_size¸¦ long_buffer_size·Î ¹Ù²ß´Ï´Ù. 2. make ctwill, make refsort, make twinx¸¦ ÅëÇؼ­ ½ÇÇà ÆÄÀÏÀ» ¸¸µé¾î path°¡ ÀâÇô ÀÖ´Â, ¿¹¸¦µé¾î, /usr/local/bin¿¡ µÓ´Ï´Ù. 3. ctwimac.tex, twinxmac.tex µî ¸ÅÅ©·Î ÆÄÀÏÀ» texÀÌ ¾Ë ¼ö ÀÖ´Â µð·ºÅ丮¿¡ µÓ´Ï´Ù. ==== »ç¿ë¿¹ ==== ±¸Ã¼ÀûÀÎ ¼³¸íÀ» À§Çؼ­, n°³ÀÇ cwebÆÄÀÏÀ» °¡Áö°í, Ã¥À» ¸¸µç´Ù°í °¡Á¤ÇÏ°Ú½À´Ï´Ù. 1. ¸ÕÀú n°³ÀÇ cweb ÇÁ·Î±×·¥ ¼Ò½º¸¦ bar1.w, bar2.w, ... barn.wÀ» ¸¸µì´Ï´Ù. °¢°¢ÀÇ cweb ÆÄÀÏÀº °¢ ÇÁ·Î±×·¥¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ¼³¸íÀ» ´ã°í ÀÖ½À´Ï´Ù. 2. À§ÀÇ n°³ÀÇ cweb ÆÄÀÏÀ» Æ÷ÇÔÇÏ´Â foo.wÀ» ¸¸µì´Ï´Ù. foo.w ÆÄÀÏ¿¡´Â ¸¸µé°íÀÚ Çϴ åÀÇ ÀüüÀûÀÎ ¼³¸íÀ» ´ã°í ÀÖ½À´Ï´Ù. foo.w¾È¿¡ À§ÀÇ n°³ÀÇ cweb ÆÄÀÏÀ» Æ÷ÇÔÇÏ´Â ¹æ¹ýÀº ´ÙÀ½°ú °°½À´Ï´Ù. {{{ @i "bar1.w" @i "bar2.w" ... @i "barn.w" }}} ÀÌÁ¦ Ã¥À» ¸¸µé Áغñ°¡ ´Ù ³¡³µ½À´Ï´Ù. 3. ¸ÕÀú ctwill ÇÁ·Î±×·¥À¸·Î foo.{tex,idx,scn,aux} ÆÄÀϵéÀ» ¸¸µì´Ï´Ù. {{{ ctwill foo.w }}} 4. À§¿¡¼­ »ý¼ºÇÑ foo.tex À¸·ÎºÎÅÍ foo.{ref,log,dvi} ÆÄÀϵéÀ» ¸¸µé¾î ³À´Ï´Ù {{{ tex foo.tex }}} 5. À§ ´Ü°è¿¡¼­ »ý¼ºÇÑ reference ÆÄÀÏ, foo.ref¸¦ ¼ÒÆ®ÇÏ¿© foo.sref¸¦ ¸¸µì´Ï´Ù. {{{ refsort < foo.ref > foo.sref }}} 6. ÃÖÁ¾ÀûÀ¸·Î texÀ» ÇÑ ¹ø ´õ ½ÇÇàÇÕ´Ï´Ù. {{{ tex foo.tex }}} 7. twinx¸¦ ÀÌ¿ëÇÏ¿© master À妽º¸¦ »ý¼ºÇÕ´Ï´Ù. {{{ twinx foo.tex > index.tex }}} 8. À妽º ÆÄÀÏ, index.texÀ» ÄÄÆÄÀÏ ÇÕ´Ï´Ù. {{{ tex index.tex }}} 9. À§ÀÇ 6, 8 ´Ü°è¿¡¼­ »ý¼ºÇÑ foo.dvi, index.dvi·Î Ã¥À» ¸¸µì´Ï´Ù. {{{ dvipdfmx foo dvipdfmx index }}} ºÒÇàÈ÷µµ ctwillÀº cweave¿Í °°Àº ¿ÏÀü ÀÚµ¿ ÇÁ·Î±×·¥ÀÌ ¾Æ´Õ´Ï´Ù. ÀϺΠ¼öÀÛ¾÷ÀÌ µé¾î°©´Ï´Ù. ÇÏÁö¸¸ ±×·³¿¡µµ ºÒ±¸ÇÏ°í, Ã¥À» ¸¸µé°íÀÚ ÇÏ´Â ºÐµé²²´Â À妽º »ý¼º¿¡ µé¾î°¡´Â ¼ö°í¸¦ ¸¹ÀÌ ÁÙ¿©ÁÝ´Ï´Ù. --[ÀÛÀº³ª¹«] === ctwill ¿¹Á¦ === * [http://www-cs-faculty.stanford.edu/~knuth/sgb.html The Stanford GraphBase: A Platform for Combinatorial Computing], Donald E. Knuth ÁöÀ½ * KnuthÀÇ ´ëÇ¥ÀûÀÎ ctwill »ç¿ë ¿¹Á¦: [http://www-cs-faculty.stanford.edu/~knuth/papers/ham.w.gz Hamiltonian circuits] (KTUGContrib:3268)