¡ÒÃãªé sgml-tools ¡ÑºÀÒÉÒä·Â <author><htmlurl url="mailto:poon-v@fedu.uec.ac.jp" name="¾ÙÅÅÒÀ ÇÕÃи¹ÒºØµÃ"> <Date>$Id: sgmltools.sgml,v 1.1 1998/09/28 11:26:44 poon-v Exp poon-v $ <abstract> àÍ¡ÊÒéºÑº¨Ð͸ԺÒ¡ÒÃãªéÀÒÉÒä·Â¡Ñº SGML-tools áÅСÒÃà¢Õ¹àÍ¡ÊÒà SGML àº×éͧµé¹à¾×èÍãªé¡Ñº SGML-tools. ¼ÙéÍèÒ¹ÊÒÁÒöµÔ´µÒÁàÍ¡ÊÒéºÑºÅèÒÊØ´ä´é·Õè http://www.fedu.uec.ac.jp/ZzzThai/Linux </abstract> <toc> <sect> á¹Ð¹Ó SGML-tools <p> SGML-tools à»ç¹ªØ´â»Ãá¡ÃÁÊÓËÃѺ·ÓàÍ¡ÊÒÃâ´Â¡ÒÃà¢Õ¹àÍ¡ÊÒÃã¹ÃٻẺ¢Í§ SGML (Standard Generalized Markup Language) áÅÐãªéâ»Ãá¡ÃÁ¨Ò¡ SGML-tools á»Å§à»ç¹àÍ¡ÊÒÃẺÍ×è¹æä´éá¡è àÍ¡ÊÒÃẺ HTML, lyx, latex, dvi, Postscript, plain text, rich text áÅÐ GNU info. SGML-tools à´ÔÁª×èÍ Linuxdoc-sgml à¢Õ¹¢Öé¹à¾×èÍãªéã¹ <url url="http://sunsite.unc.edu/linux" name="Linux Document Project (LDP)">. ·ÓãËé¡ÒÃà¢Õ¹àÍ¡ÊÒÃÊÓËÃѺâ»Ãਤ¹ÕéÁÕÃٻẺÁҵðҹ·Õèá¹è¹Í¹. µÒÁËÅÑ¡¢Í§ LDP áÅéÇàÍ¡ÊÒà HOWTO µéͧà¢Õ¹ã¹ÃٻẺ SGML, ÊèǹàÍ¡ÊÒà mini-HOWTO ¨Ðà¢Õ¹´éÇÂÃٻẺ HTML. license ¢Í§ LDP ÊÒÁÒö´Ùä´é¨Ò¡àÍ¡ÊÒà <url url=" http://sunsite.unc.edu/linux/LDP-COPYRIGHT.html" name="Linux Document Project copying License">. «Öè§àÍ¡ÊÒÃàËÅèÒ¹ÕéÁÕ copyright â´Â¤¹·Õèà¢Õ¹áÅÐäÁèãªè Public Domain. ¼ÙéÍèÒ¹ÊÒÁÒö download SGML-tools àÇÍÃìªÑè¹ÅèÒÊØ´ä´é·Õè <url url="http://www.sgmltools.org/download.html" name="SGML tools download">. â´Â·ÑèÇä»áÅéÇ SGML-tools ÁÑ¡ÁÒ¾ÃéÍÁæ¡Ñº Linux. à¹×èͧ¨Ò¡ SGML-tools à»ç¹ªØ´â»Ãá¡ÃÁ·Õèá»Å§àÍ¡ÊÒÃà»ç¹àÍ¡ÊÒÃÃٻẺÍ×è¹æ à¾ÃÒЩйÑé¹¼Ùéãªé¤ÇèÐÁÕâ»Ãá¡ÃÁ·Õè¨Ñ´¡ÒÃàÍ¡ÊÒÃÃٻẺ¹Ñ鹿äÇéãªé´éÇ ä´éá¡è <tt/groff, TeX, LaTeX, flex, gawk/ áÅÐ <tt/lyx/. ã¹àÍ¡ÊÒéºÑº¹Õé¨Ð͸ԺÒ¡ÒÃà¢Õ¹àÍ¡ÊÒÃÀÒÉÒä·Âã¹áºº¢Í§ SGML (linuxdoc) àº×éͧµé¹ à¾×èÍãËé¼Ùéʹ㨡ÒÃà¢Õ¹àÍ¡ÊÒà HOWTO ÊÓËÃѺ Linux à¢Õ¹àÍ¡ÊÒÃÍÂèÒ§ÁÕ»ÃÐÊÔ·¸ÔÀÒ¾áÅÐÃٻẺÁҵðҹà´ÕÂǡѹ. áÅШÐ͸ԺÒ¡ÒÃãªéÀÒÉÒä·Â¡Ñº¡ÒÃá»Å§àÍ¡ÊÒ÷Õèá»Å§à»ç¹áºº HTML, LaTeX, áÅÐ text à·èÒ¹Ñé¹. <sect>¡ÒÃà¢Õ¹àÍ¡ÊÒÃã¹ÃٻẺ SGML (linuxdoc) <P> ËÅÑ¡¡ÒÃà¢Õ¹àÍ¡ÊÒÃẺ SGML ¤ÅéÒ HTML ÁÒ¡ ¡ÅèÒǤ×Íãªé tags 㹡ÒáÓ˹´ÃٻẺ¢Í§àÍ¡ÊÒÃ. <sect1> â¤Ã§ÊÃéÒ§¢Í§àÍ¡ÊÒà SGML-tools <p> â¤Ã§ÊÃéÒ§àÍ¡ÊÒà SGML ÊÓËÃѺ SGML-tools ÁÕÃٻẺ·ÑèÇ仴ѧ¹Õé <tscreen><verb> <!doctype linuxdoc system> <article> <title> DOCUMENT TITLE <author> AUTHOR NAME <date> DATE <abstract> ABSTRACT HERE &etago;abstract> <toc> <!-- table of content --> <sect> SECTION <p> CONTENT ....... &etago;article> </verb></tscreen> àÍ¡ÊÒ÷Õèãªé SGML-tools µéͧÁÕ¤ÓÊÑè§ <tt/<!doctype linuxdoc system>/ ·Ø¡¤ÃÑé§. à¾×èÍà»ç¹¡Òú͡ãËé SGML-tools ÃÙéÇèÒ¤ÓÊÑè§(TAG)ã¹àÍ¡ÊÒùÕé¶Ù¡¡Ó˹´â´Â linuxdoc. ÃÒÂÅÐàÍÕ´·Ò§à·¤¹Ô¤¢Í§ SGML ÊÒÁÒöÍèÒ¹ä´é¨Ò¡ guide.sgml «Öè§à»ç¹àÍ¡ÊÒÃá¹Ð¹Ó¡ÒÃãªé SGML-tools ·ÕèÁҡѺµÑÇâ»Ãá¡ÃÁ. <sect1>¡ÒÃãªé TAG <p> ¡ÒÃãªé TAG ã¹ä¿Åì SGML ¤ÅéÒÂæ¡Ñº TAG ¢Í§ HTML ¤×ÍÁÕµÑÇà»Ô´áÅлԴ. äÇ¡óì·ÑèǤ×Í <tscreen><verb> <TAG> phrase &etago;TAG> </verb></tscreen> ¤ÓÊÑè§¢éÒ§º¹ÊÒÁÒöÂèÍÊÑ鹿ä´é´Ñ§¹Õé <tscreen><verb> <TAG/ phrase / </verb></tscreen> 㹡óÕËÅѧàËÁÒÐÊÓËÃѺ¡ÒÃà¢Õ¹¤ÓÊÑ鹿 áÅÐäÁèàËÁÒÐÊÓËÃѺ¡ÒÃà¢Õ¹ª×èÍä¿ÅìàµçÁæ¢Í§ UNIX à¾ÃÒÐÁÕà¤Ã×èͧËÁÒ / ÍÂÙè«Öè§¶×Íà»ç¹Êèǹ˹Ö觢ͧ¤ÓÊÑè§. TAG ºÒ§ª¹Ô´äÁè¨Óà»ç¹µéͧÁÕµÑǻԴ¡çä´éàªè¹ <P> «Öè§ËÁÒ¶֧¤ÓÊÑ觡ӡѺÂèÍ˹éÒà»ç¹µé¹. ÍÕ¡ÇÔ¸Õ˹Öè§·ÕèãªéÊÓËÃѺ¡ÒÃÂèÍ˹éÒ¤×Í ¡ÒÃàÇ鹺Ã÷ѴÇèҧ˹Ö觺Ã÷Ѵ. <sect1>à¤Ã×èͧËÁÒ¾ÔàÈÉ <p> ¡ÒÃà¢Õ¹à¤Ã×èͧËÁÒ¾ÔàÈÉÁÕ¤ÇÒÁ¨Óà»ç¹àÁ×èͼÙéãªéµéͧ¡ÒÃà¢Õ¹µÑÇÍÑ¡É÷Õèà»ç¹¤ÓÊÑè§àªè¹ &dquot;<ÀÒÉÒä·Â>&dquot; à¾×èÍäÁèãËéá»Åà¤Ã×èͧËÁÒ <> à»ç¹ TAG ¼ÙéãªéÊÒÁÒöà¢Õ¹µÑÇÍÂèÒ§·ÕèáÊ´§ä´éâ´Â <tt/&lt;/ÀÒÉÒä·Â<tt/&gt;/ à»ç¹µé¹. à¤Ã×èͧËÁÒ¾ÔàÈÉ·ÕèãªéºèÍÂä´éá¡è, <itemize> <item>à¢Õ¹ <tt>&amp;</tt> á·¹à¤Ã×èͧËÁÒ ampersand (&), <item>à¢Õ¹ <tt>&lt;</tt> á·¹à¤Ã×èͧËÁÒ left bracket (<), <item>à¢Õ¹ <tt>&gt;</tt> á·¹à¤Ã×èͧËÁÒ right bracket (>), <item>à¢Õ¹ <tt>&etago;</tt> á·¹à¤Ã×èͧËÁÒ left bracket with a slash (<tt>&etago;</tt>) <item>à¢Õ¹ <tt>&dollar;</tt> á·¹à¤Ã×èͧËÁÒ dollar sign ($), <item>à¢Õ¹ <tt>&num;</tt> á·¹à¤Ã×èͧËÁÒ hash (#), <item>à¢Õ¹ <tt>&percnt;</tt> á·¹à¤Ã×èͧËÁÒ percent (%), <item>à¢Õ¹ <tt>&tilde;</tt> á·¹à¤Ã×èͧËÁÒ tilde (˜), <item>à¢Õ¹ <tt>&dquot;</tt> á·¹à¤Ã×èͧËÁÒ double quot &dquot;. </itemize> à¤Ã×èͧËÁÒ¾ÔàÈÉÍ×è¹æ·Õèãªéä´é¡Ñº SGML-tools 1.0.x ÊÒÁÒö´Ùä´é¨Ò¡ <tt/guide.sgml/. <sect1> ¡ÒÃà¢Õ¹¢éͤÇÒÁẺ verbatim <p> àÁ×èͼÙéãªéµéͧ¡ÒÃáÊ´§¢éͤÇÒÁ·ÕèäÁèµéͧ¡ÒÃãËéá»ÅµÒÁÀÒÉÒ SGML ãËéà¢Õ¹¢éͤÇÒÁàËÅèÒ¹Ñé¹ã¹ environment ·Õèª×èÍ verbatim ´Ñ§¹Õé <tscreen><verb> <verb> This is the verbatim environment. <> & ; ~ You can write special characters here. &etago;verb> </verb></tscreen> µÑÇÍÂèÒ§¢éÒ§¨ÐáÊ´§¼Åà»ç¹´Ñ§¹Õé <verb> This is the verbatim environment. <> & ; ~ You can write special characters here. </verb> ¡ÒÃãªé <tt/<verb;>/...<tt/&etago;verb>/ ÂѧäÁèàËÁÒСѺ¡ÒÃãªéÀÒÉÒä·Âã¹ SGML ÁÒ¡¹Ñ¡à¾ÃÒТ³Ð¹ÕéÂѧäÁèÊÒÁÒöáÊ´§¼ÅÀÒÉÒä·Âã¹ verbatim environment ¢Í§ LaTeX ä´é. ã¹ verbatim environment ÁÕ¢éÍ¡Ó˹´¡ÒÃà¢Õ¹ÍÑ¡ÉúҧµÑǴѧ¹Õé <itemize> <item>ãËéà¢Õ¹ <tt>&ero;</tt> à¾×èÍáÊ´§µÑÇÍÑ¡Éà ampersand, <item>ãËéà¢Õ¹ <tt>&etago;</tt> à¾×èÍáÊ´§µÑÇÍÑ¡Éà <tt>&etago;</tt>, <item>ËéÒÁà¢Õ¹ <tt>\end{verbatim}</tt> ã¹ <tt>verb</tt> environment, «Öè§ÇÅÕ¹Õéà»ç¹¤ÓºÍ¡àÅÔ¡ <tt>verbatim</tt> environment ¢Í§ LaTeX. </itemize> ¹Í¡¨Ò¡ <tt/verb/ environment áÅéÇÂѧÁÕ environment Í×è¹·Õè¤ÅéÒÂæ¡Ñ¹¤×Í <tt/code/. µÑÇÍÂèÒ§àªè¹ <tscreen><verb> <code> This is the code environment. &etago;code> </verb></tscreen> ¡ÒÃáÊ´§¼Å : <code> This is the code environment. </code> <tt/code/ environment ¨ÐᵡµèÒ§¡Ñº <tt/verb/ environment µÃ§·ÕèÁÕàÊ鹡Ñé¹¢éͤÇÒÁ(horizontal rule)ãËé. ¼ÙéãªéÂѧÊÒÁÒöãªé <tt/tscreen/ environment »ÃСͺ¡Ñº <tt/verb/ ËÃ×Í <tt/code/ à¾×èÍÅè¹¢éͤÇÒÁ(indent)ä»·Ò§¢ÇÒ. µÑÇÍÂèÒ§àªè¹, <tscreen><verb> <tscreen><verb> Using verb environmment with tscreen environment. &etago;verb>&etago;tscreen> </verb></tscreen> ¡ÒÃáÊ´§¼Å: <tscreen><verb> Using verb environmment with tscreen environment. </verb></tscreen> <tt/quote/ environment ¤ÅéÒ <tt/tscreen/ environment ÁÒ¡áµèᵡµèÒ§¡Ñ¹µÃ§·ÕèäÁèãªé¿Í¹µì <tt/tt/ (fixed width font) 㹡ÒÃáÊ´§¼Å. µÑÇÍÂèÒ§àªè¹, <tscreen><verb> <quote> This is the quote environment. &etago;quote> </verb></tscreen> ¡ÒÃáÊ´§¼Å: <quote> This is the quote environment. </quote> <sect1> ¡ÒÃà¢Õ¹ÃÒ¡Òà (list) <p> ¡ÒÃà¢Õ¹ÃÒ¡ÒÃ(list) ÊÒÁÒöà¢Õ¹ä´é 3 Ẻ¤×Í <itemize> <item><tt/itemize/, à»ç¹ÃÒ¡Ò÷ÕèäÁèµéͧ¡ÒõÑÇàÅ¢¡Ó¡Ñº <item><tt/enum/, à»ç¹ÃÒ¡Ò÷Õè¡Ó¡ÑºµÑÇàÅ¢ <item><tt/descrip/, à»ç¹¡ÒáËÑÇ¢éÍáÅÐ͸ԺÒ»ÃСͺ </itemize> µÑÇÍÂèÒ§¡ÒÃà¢Õ¹ÃÒ¡ÒÃẺ <tt/itemize/ <tscreen> <tt/<itemize>/<p> <p><tt/<item>/ÃÒ¡Ò÷Õè˹Öè§ <p><tt/<item>/ÃÒ¡ÒõèÍä» <p><tt/&etago;itemize>/ </tscreen> ¡ÒÃáÊ´§¼Å: <itemize> <item>ÃÒ¡Ò÷Õè˹Öè§ <item>ÃÒ¡ÒõèÍä» </itemize> µÑÇÍÂèÒ§¡ÒÃà¢Õ¹ÃÒ¡ÒÃẺ <tt/enum/, <tscreen> <tt/<enum>/<p> <p><tt/<item>/ÃÒ¡Ò÷Õè˹Öè§ <p><tt/<item>/ÃÒ¡ÒõèÍä» <p><tt/&etago;enum>/ </tscreen> ¡ÒÃáÊ´§¼Å: <enum> <item>ÃÒ¡Ò÷Õè˹Öè§ <item>ÃÒ¡ÒõèÍä» </enum> ¡ÒÃà¢Õ¹ÃÒ¡ÒÃẺ <tt/descrip/ ¨ÐᵡµèÒ§¨Ò¡µÑÇÍÂèÒ§Í×è¹àÅ硹éÍ´ѧ¹Õé <tscreen> <tt/<descrip>/<p> <p><tt/<tag//ËÑÇ¢éÍ·Õè˹Öè§<tt/// ¤Ó͸ԺÒ <p><tt/<tag//ËÑÇ¢é͵èÍä»<tt/// ¤Ó͸ԺÒ <p><tt/&etago;descrip>/ </tscreen> ¡ÒÃáÊ´§¼Å: <descrip> <tag/ËÑÇ¢éÍ·Õè˹Öè§/ ¤Ó͸ԺÒ <tag/ËÑÇ¢é͵èÍä»/ ¤Ó͸ԺÒ </descrip> <sect1> ÊÃØ»·ÕèãªéºèÍ TAG Í×è¹æ <p> <descrip> <tag><article> ... &etago;article></tag> à»ç¹¤ÓÊÑ觺͡àÃÔèÁàÍ¡ÊÒà «Öè§¢³Ð¹Õéà¢éÒã¨ÇèÒãªéä´é੾ÒÐ article à·èÒ¹Ñé¹ ¢éͤÇÒÁ·ÕèÍÂÙèÃÐËÇèÒ§¹Õé¶×Íà»ç¹à¹×éÍËҢͧàÍ¡ÊÒà áÅФÓÊÑè§·ÕèÍÂÙè¡è͹˹éÒ¹Õé¶×Íà»ç¹ preamble. <tag/<author>/ ãªéÃкت×èͼÙéà¢Õ¹àÍ¡ÊÒà <tag/<date>/ ãªéÃкØÇѹ·Õè·Õèà¢Õ¹àÍ¡ÊÒà <tag><abstract> ... &etago;abstract></tag> à»ç¹ÊèǹÊÓËÃѺà¢Õ¹º·¤Ñ´ÂèÍ Í¸ÔºÒÂà¹×éÍËҢͧàÍ¡ÊÒà <tag/<toc>/ ¤ÓÊÑè§ÊÃéÒ§ÊÒúѭ <tag/<p>/ ãªé㹡ÒÃÂèÍ˹éÒ â´Â»Ã¡µÔáÅéÇ TAG ¹Õé¤ÇõÒÁËÅѧ <tt/<sect>/ à¾×èÍà»ç¹¡Òú͡ÇèÒ¾ÃéÍÁ·Õè¨Ðà¢Õ¹à¹×éÍËÒËÅѧ¨Ò¡»ÃСÒÈËÑÇ¢éÍ. ¡ÒÃÂèÍ˹éÒÍÕ¡ÇÔ¸Õ˹Öè§ÊÒÁÒö·Óä´éâ´Â¡ÒÃàÇ鹺Ã÷ѴÇèҧ˹Ö觺Ã÷Ѵ«Ö觨йÔÂÁÁÒ¡¡ÇèÒãªé <tt/<p>/. TAG ¹ÕéäÁè¨Óà»ç¹µéͧÁÕµÑǻԴ·éÒÂ. <tag/<sect>/ à»ç¹¤ÓÂèͧ͢ section ãªéÊÓËÃѺ¡Ó¡ÑºËÑÇ¢éÍ ã¹¡Ã³Õ¹Õé¨ÐáÊ´§µÑÇàÅ¢ËÑÇ¢éÍà»ç¹ 1, 2, 3, ... µÒÁÅӴѺ <tag/<sect1>/ ¤ÓÊÑè§»ÃСÒÈËÑÇ¢éÍÂèÍ ãªé»ÃСÒÈÀÒÂã¹ËÑÇ¢éÍËÅÑ¡. 㹡óըÐÁÕµÑÇàÅ¢à»ç¹ 1.1, 1.2, 1.3, ... à»ç¹µé¹. ËÑÇ¢éÍÂèͶѴ¨Ò¡¹Õé¤×Í <tt/<sect2>, <sect3>/ áÅÐ <tt/<sect4>/ <tag><tt> ... &etago;tt></tag> à»ç¹¤ÓÊÑè§à»ÅÕ蹿͹µìà»ç¹¿Í¹µì¾ÔÁ¾ì´Õ´(Type writer). ÁÑ¡ãªé㹡ÒÃà¢Õ¹ª×èͤÓÊÑè§ à»ç¹µé¹ <tag><url url=&dquot;URL&dquot; name=&dquot;NAME&dquot;></tag> ãªéãÊè URL ã¹à¹×éÍËÒ. ¶éÒá»Å§à»ç¹ HTML format, NAME ¨ÐÅÔ§¤ìä»Âѧ URL ¹Ñ鹿. ¶éÒà»ç¹ text ËÃ×Í LaTeX, ¨ÐáÊ´§´éǪ×èÍáÅéǵÒÁ´éÇ·ÕèÍÂÙè URL. <tag><htmlurl url=&dquot;HTML_URL&dquot; name=&dquot;NAME&dquot;></tag> ãªéà¢Õ¹ URL ¢Í§ HTML àªè¹ <tt><htmlurl url=&dquot;mailto:poon-v@fedu.uec.ac.jp&dquot; name=&dquot;¾ÙÅÅÒÀ ÇÕÃи¹ÒºØµÃ&dquot;</tt> à»ç¹µé¹ <tag><label id=&dquot;ID&dquot;></tag> ãªé㹡ÒÃàÅ×Í¡µÓá˹è§ÍéÒ§ÍÔ§¢Í§àÍ¡ÊÒÃ. ¤ÓÊÑè§¹ÕéÁÑ¡ãªé¤Çº¤Ùè¡Ñº¡Ñº¤ÓÊÑè§ <tt/<ref id=&dquot;ID&dquot; name=&dquot;NAME&dquot;></tt> <tag><ref id=&dquot;ID&dquot; name=&dquot;NAME&dquot;></tag> à»ç¹¤ÓÊÑ觺͡µÓá˹è§ÍéÒ§ÍÔ§ã¹àÍ¡ÊÒÃ. ¶éÒà»ç¹ HTML format, ¨Ðà»ç¹¡ÒÃÅÔ§¤ì¡Ñ¹ÀÒÂã¹àÍ¡ÊÒÃ. ¶éÒà»ç¹ LaTeX format ¨Ðà»ç¹¡Òú͡µÓá˹è§Ë¹éÒ·ÕèÍéÒ§ÍÔ§ à»ç¹µé¹. </descrip> ¼ÙéãªéÊÒÁÒöÍèÒ¹ÇÔ¸Õ¡ÒÃãªé¤ÓÊÑè§Í×è¹æä´é¨Ò¡ <tt/guide.sgml/ ·ÕèÁҡѺ SGML-tools. ¼ÙéãªéÊÒÁÒöà¢Õ¹ÀÒÉÒä·Âã¹ä¿Åì SGML ä´éáµèäÁè¤ÇÃà¢Õ¹ÀÒÉÒä·Âã¹ <tt/verb/ ËÃ×Í <tt/code/ environment «Öè§µéͧËÒ·Ò§á¡é䢡ѹµèÍä». <sect>¡ÒÃãªé SGML-tools <p> ¼ÙéãªéÊÒÁÒöàªç¤äÇ¡óì·Õèà¢Õ¹ã¹ä¿Åì SGML ä´éâ´Â <tscreen><verb> % sgmlcheck foo.sgml </verb></tscreen> ã¹·Õè¹Õé¨Ð¢Í¡ÅèÒǶ֧¡ÒÃá»Å§àÍ¡ÊÒÃÀÒÉÒä·ÂẺ SGML ãËéà»ç¹àÍ¡ÊÒÃẺÍ×è¹æ ੾ÒÐẺ Plain Text, HTML áÅÐ LaTeX à·èÒ¹Ñé¹. <sect1>¡ÒüÅÔµàÍ¡ÊÒÃÀÒÉÒä·ÂẺ Plain Text <p> ¼ÙéãªéÊÒÁÒöá»Å§àÍ¡ÊÒÃÀÒÉÒä·ÂẺ SGML ·Õèà¢Õ¹äÇéà»ç¹áºº Plain Text ä´é´éǤÓÊÑè§ <tscreen><verb> % sgml2txt -c latin foo.sgml </verb></tscreen> ¶éÒäÁèà¡Ô´¢éͼԴ¾ÅÒ´ã´æ ¼Ùéãªé¨Ðä´éä¿ÅìãËÁè·Õèª×èÍ <tt/foo.txt/ ã¹ä´àá·ÍÃÕè·Õè·Ó§Ò¹ÍÂÙè. <sect1>¡ÒüÅÔµàÍ¡ÊÒÃÀÒÉÒä·ÂẺ HTML <p> ¼ÙéãªéÊÒÁÒöá»Å§àÍ¡ÊÒÃÀÒÉÒä·ÂẺ SGML ·Õèà¢Õ¹äÇéà»ç¹áºº HTML ä´é´éǤÓÊÑè§ <tscreen><verb> % sgml2html foo.sgml </verb></tscreen> ¶éÒäÁèà¡Ô´¢éͼԴ¾ÅÒ´ã´æ ¼Ùéãªé¨Ðä´éä¿ÅìãËÁè·Õèª×èÍ <tt/foo.html/ áÅÐ <tt/foo-1.html, foo-2.html, .../ ã¹ä´àá·ÍÃÕè·Õè·Ó§Ò¹ÍÂÙè. «Öè§ SGML-tools ¨Ðáºè§à»ç¹ä¿ÅìÂèÍÂæµÒÁËÑÇ¢éÍ(section)·ÕèÃкØäÇé. ã¹·Õè¹Õé¼ÙéãªéäÁèµéͧãÊè option <tt/-c latin/, àÍ¡ÊÒ÷Õè¼ÅÔµÍÍ¡ÁÒ¨Ðà»ç¹ÃËÑÊ 8-bit «Ö觵ç¡ÑºÃËÑÊ tis-620 ÀÒÉÒä·Â·ÕèãªéÍÂÙ躹ÍÔ¹àµÍÃìà¹çµ·ÑèÇä». à¾×èͤÇÒÁÊдǡ㹡ÒÃãªé§Ò¹ÂÔè§¢Öé¹, ¼Ùéà¢Õ¹ä´éà¢Õ¹ Perl script ÊÓËÃѺá»Å§àÍ¡ÊÒà HTML ·Õèà¢Õ¹ã¹ÃÙ»¢Í§ <tt/&LATIN_CHAR_NAME;/ ãËéà»ç¹ÃËÑÊ tis-620 áÅÐÁÕ option ÊÑè§ãËéàÃÕ¡ <tt/cttex/ ÁҵѴ¤Óà¾×èͤÇÒÁÊǧÒÁ´éÇÂ. <tscreen><code> #!/usr/bin/perl ################################################################ # sgmlthtml: # Run sgml2html and convert latin symbols to Thai characters. # This program will change, for example, à to "\340". # # by Poonlap Veeratanabutr <poon-v@fedu.uec.ac.jp> # $Id: sgmlthtml,v 1.1 1998/09/28 06:51:52 poon-v Exp poon-v $ ################################################################ sub error { print STDERR "usage: $0 [-c] file.sgml\n"; print STDERR " -c , use cttex to fill <WBR>\n"; exit; } # command line processing. if( $#ARGV == -1 ){ &ero;error; } elsif ( $#ARGV == 0 && $ARGV[0] ne "-c"){ $file = $ARGV[0]; $cut = 0; } elsif ( $#ARGV == 1 ){ if( $ARGV[0] eq "-c"){ $cut = 1; $file = $ARGV[1]; } elsif( $ARGV[1] eq "-c"){ $cut = 1; $file = $ARGV[0]; } else { &ero;error; } } else { &ero;error; } # run sgml2html if( system( "sgml2html $file" ) != 0 ){ exit; } # lookup table for what to change and not to change %lookuptbl = (quot, "quot",amp,"amp","lt","lt","gt","gt",copy,"\251",reg,"\256", micro,"\265",Agrave,"\300",Aacute,"\301",Acirc,"\302",Atilde,"\303", Auml,"\304",Aring,"\305",AElig,"\306",Ccedil,"\307",Egrave,"\310", Eacute,"\311",Ecirc,"\312",Euml,"\313",Igrave,"\314",Iacute,"\315", Icirc,"\316",Iduml,"\317",ETH,"\320",eth,"\320",Ntilde,"\321", Ograve,"\322",Oacute,"\323",Ocirc,"\324",Otilde,"\325",Ouml,"\326", Oslash,"\330",Ugrave,"\331",Uacute,"\332",THORN,"THORNÞ",Thorn,"Thron", szlig,"\337",agrave,"\340",aacute,"\341",acirc,"\342",atilde,"\343", auml,"\344",aring,"\345",aelig,"\346",ccedil,"\347",egrave,"\350", eacute,"\351",ecirc,"\352",euml,"\353",igrave,"\354",iacute,"\355", icirc,"\356",iuml,"\357",eth,"\360",ntilde,"\361",ograve,"\362", oacute,"\363",ocirc,"\364",otilde,"\365",ouml,"\366",oslash,"\370", ugrave,"\371",uacute,"\372",ucirc,"\373",uuml,"uuml",yacute,"yacute", yuml,"yuml"); # separate directory and file name from the given file name if( $file =~ /(.*)[\/](.+)$/ ){ $dir = $1; $file = $2; } $file =~ s/(.+)\.sgml/$1/; # get rootname if( length( $dir ) == 0 ){ opendir( DIR, "."); } else { opendir( DIR, "$dir" ); } @html = grep {/$file.*\.html$/} readdir( DIR ); # get all related html files closedir( DIR ); foreach $html_file (@html) { print "Processing file $html_file\n"; open( INPUT, "$html_file"); open( OUTPUT,">$html_file.tmp" ); while( <INPUT> ){ $line = $_; $beg = index( $line, "&"); $end = index( $line, ";"); while( $beg >= 0 && $end > $beg ){ $target = substr( $line, $beg+1, $end-$beg-1); $thai = $lookuptbl{ $target }; if( $target eq $thai ){ $line = sprintf( "%s%s%s", substr( $line, 0, $beg), '&' . $thai . ';', substr( $line, $end+1 )); } else { $line = sprintf( "%s%s%s", substr( $line, 0, $beg), $thai, substr( $line, $end+1 )); } $beg = index( $line, "&", $beg+1); $end = index( $line, ";", $beg); } print OUTPUT "$line"; } close( INPUT ); close( OUTPUT ); if( $cut == 1 ){ system( "cttex 0 < $html_file.tmp > $html_file" ); system( "rm -f $html_file.tmp" ); } else { rename( "$html_file.tmp", "$html_file"); } } # EOF </code></tscreen> ¼ÙéãªéÊÒÁÒöàÃÕ¡¤ÓÊÑè§ <tt/sgmlthtml/ á·¹ <tt/sgml2html/ ÊÓËÃѺàÍ¡ÊÒà SGML ·ÕèÁÕÀÒÉÒä·Âä´é´Ñ§¹Õé <tscreen><verb> % sgmlthtml foo.sgml -c </verb></tscreen> ¨Ò¡µÑÇÍÂèÒ§´Ñ§¡ÅèÒÇ, <tt/sgmlthtml/ ¨ÐàÃÕ¡¤ÓÊÑè§ <tt/sgml2html/ «Ö觨мÅÔµä¿ÅìẺ HTML ËÅÒÂä¿Åì. ¨Ò¡¹Ñé¹â»Ãá¡ÃÁ <tt/sgmlthtml/ ¨Ð¾ÂÒÂÒÁà»ÅÕè¹ <tt/&LATIN_CHAR_NAME;/ ãËéà»ç¹ÃËÑÊ tis-620 (¶éÒÁÕ, â´Â»Ã¡µÔ <tt/sgml2html/ ¨Ð¼ÅÔµä¿Åì·Õèà¼ÍÔ­µÃ§µÒÁ tis-620 ÍÂÙèáÅéÇ) áÅÐàÃÕ¡ <tt/cttex/ ÁҵѴ¤Ó(·Ø¡ä¿Åì·Õèà¡ÕèÂÇ¢éͧ¡Ñº <tt/foo.sgml/) ãËé¡ÒÃáÊ´§¼Åº¹ browser ÊǧÒÁ¢Öé¹. ¡Ò÷Õè¨Ðãªé¤ÓÊÑè§¹Õé, ¼ÙéãªéµéͧÁÕâ»Ãá¡ÃÁ <tt/cttex/ ÍÂÙèã¹Ãкº´éÇÂ. ËÒ¡äÁèµéͧ¡ÒÃãËé <tt/cttex/ µÑ´¤Ó, äÁèµéͧãÊè option <tt/-c/ ´Ñ§µÑÇÍÂèÒ§ <tscreen><verb> % sgmlthtml foo.sgml </verb></tscreen> <sect1>¡ÒüÅÔµàÍ¡ÊÒÃÀÒÉÒä·ÂẺ LaTeX <p> ¼ÙéãªéµéͧÁժشâ»Ãá¡ÃÁ LaTeX áÅеԴµÑé§ÀÒÉÒä·ÂàÃÕºÃéÍÂáÅéǨ֧¨ÐÊÒÁÒöá»Å§àÍ¡ÊÒèҡ SGML à»ç¹ LaTeX ä´é. ¡ÒõԴµÑé§ÀÒÉÒä·Âã¹ LaTeX ÊÒÁÒöÍèÒ¹ä´é¨Ò¡àÍ¡ÊÒà &dquot;<url url="http://www.fedu.uec.ac.jp/ZzzThai/Linux/thailatex/thailatex" name="¡ÒÃãªéÀÒÉÒä·Â¡Ñº LaTeX">&dquot;. ¼ÙéãªéÊÒÁÒö¼ÅÔµàÍ¡ÊÒà LaTeX(<tt/.tex/) ·ÕèÁÕÀÒÉÒä·Â¨Ò¡àÍ¡ÊÒÃẺ SGML ä´éâ´Â¤ÓÊÑè§ <tscreen><verb> % sgml2latex --output=tex foo.sgml </verb></tscreen> ¨Ò¡¤ÓÊÑè§¢éÒ§º¹ <tt/sgml2latex/ ¨ÐÊÃéÒ§ä¿Åì <tt/foo.tex/ ã¹ä´àá·ÍÃÕè·Õè·Ó§Ò¹ÍÂÙè. ¼ÙéãªéÂѧäÁèÊÒÁÒö¹Óä¿Åì¹Õéä»ãªé¡Ñº LaTeX ä´éâ´ÂµÃ§, ¨Ðµéͧá¡éÊèǹ preamble ¢Í§ä¿Åì¹ÕéàÅ硹éÍ¡è͹¹Óä»ãªé¡Ñº <tt/cttex/ áÅÐ <tt/latex/ µèÍä». ¼ÙéãªéµéͧźºÃ÷ѴµèÍ仹ÕéÍÍ¡¨Ò¡ preamble ¢Í§ä¿Åì <tt/foo.tex/ <tscreen><verb> \usepackage[latin1]{inputenc} \usepackage{t1enc} \usepackage{babel} </verb></tscreen> áÅÐãÊèºÃ÷ѴµèÍ仹Õé᷹ŧä»á·¹ <tscreen><verb> \usepackage{thai} </verb></tscreen> ¨Ò¡¹Ñ鹨֧ÊÑ觤ÓÊÑè§ <tt/cttex/ áÅÐ <tt/latex/ µÒÁÅӴѺ´Ñ§µÑÇÍÂèÒ§ <tscreen><verb> % cttex < foo.tex > foo_ok.tex % latex foo_ok.tex </verb></tscreen> ¨ÐàËç¹ä´éÇèÒà¹×èͧ¨Ò¡ SGML-tools äÁèä´é¼ÅÔµÁÒà¾×èÍãªé¡ÑºÀÒÉÒä·Ââ´Â੾ÒШ֧ãªéÂØè§ÂÒ¡. ¼Ùéà¢Õ¹¾ÂÒÂÒÁÅ´¢Ñ鹵͹àËÅèÒ¹Õéâ´Âà¢Õ¹ Perl script ª×èÍ <tt/sgmltlatex/ ·Ó˹éÒ·ÕèµèÒ§æàËÅèÒ¹Õéâ´ÂÍѵâ¹ÁѵÔ. <tscreen><code> #!/usr/bin/perl ############################################################################### # sgmltlatex: # Processing SGML or LaTeX file for Thai language. # # # by Poonlap Veeratanabutr <poon-v@fedu.uec.ac.jp> # $Id: sgmltools.sgml,v 1.1 1998/09/28 11:26:44 poon-v Exp poon-v $ ############################################################################### sub error { print STDERR "$0 - Processing SGML or LaTeX file for Thai language.\n"; print STDERR "usage: $0 [-[t|d|p] sgml_file] [-l latex_file] \n"; print STDERR " -t , create latex_file file from sgml_file\n"; print STDERR " -d , create dvi file from sgml_file and leave latex_file\n"; print STDERR " -p , create Postscript file and leave latex_file\n"; print STDERR " -l , run latex on latex_file\n"; exit( -1 ); } # command line processing if( $#ARGV != 1 ){ &ero;error; } elsif ( $ARGV[0] eq "-l" ){ $option = "l"; } elsif ( $ARGV[0] eq "-t" ){ $option = "t"; } elsif ( $ARGV[0] eq "-d" ){ $option = "d"; } elsif ( $ARGV[0] eq "-p" ){ $option = "p"; } else { &ero;error; } $file = $ARGV[1]; $tempfile = "$file" . ".tmp"; if( $option ne "l" ){ if( system( "sgml2latex --output=tex $file" ) != 0 ){ exit( -1 ); } # separate directory and file name from the given file name if( $file =~ /(.*)[\/](.+)$/ ){ $dir = $1; $file = $2; } if( $file =~ m/(.+)\.sgml$/ ){ $rootname = "$1"; } else { $rootname = $file; } $file = $rootname . ".tex"; print "Processing file $file\n"; open( INPUT, "$file" ); open( OUTPUT, ">" . "$tempfile" ); $preamble = 1; while( <INPUT> ){ if( $preamble == 1 ){ if( /^\\begin\s*{\s*document\s*}\s*$/ ){ print OUTPUT "\\usepackage{thai}\n"; $preamble = 0; break; } s/^\\usepackage.*{\s*inputenc.*}\n//; s/^\\usepackage.*{\s*babel.*}\n//; s/^\\usepackage.*{\s*t1enc.*}\n//; print OUTPUT; } else { print OUTPUT; } } close( INPUT ); close( OUTPUT ); } else { unless( $file =~ m/(.+)\.tex$/ ){ print STDERR "$0 needs .tex file\n"; &ero;error; } rename( "$file", "$tempfile" ); } if( $option eq "t" ){ rename( "$tempfile", "$file" ); exit( 0 ); } else { system( "cttex < $tempfile > $file" ); system( "latex $file" ); rename( "$tempfile", "$file" ); } if( $option eq "p" ){ $psfile = "$rootname" . ".ps"; $dvifile = "$rootname" . ".dvi"; system( "dvips -o $psfile $dvifile" ); } exit( 0 ); #EOF </code></tscreen> ¼ÙéãªéÊÒÁÒöàÃÕ¡¤ÓÊÑè§ <tt/sgmltlatex/ á·¹ <tt/sgml2latex/ ÊÓËÃѺàÍ¡ÊÒà SGML ·ÕèÁÕÀÒÉÒä·Â. ¶éÒµéͧ¡ÒüÅÔµàÍ¡ÊÒÃẺ <tt/.dvi/, <tscreen><verb> % sgmltlatex -d foo.sgml </verb></tscreen> ËÒ¡äÁèÁÕ¢éͼԴ¾ÅÒ´à¡Ô´¢Öé¹, ¨Ðä´é <tt/foo.dvi/ ã¹ä´àá·ÍÃÕè·Õè·Ó§Ò¹ÍÂÙè. ¶éÒµéͧ¡ÒüÅÔµä¿ÅìẺ Postscript ãËéÊÑ觤ÓÊÑè§ <tscreen><verb> % sgmltlatex -p foo.sgml </verb></tscreen> ËÃ×ͶéÒµéͧ¡ÒüÅÔµàÍ¡ÊÒÃẺ LaTeX (<tt/.tex/) ãËéãªé¤ÓÊÑè§ <tscreen><verb> % sgmltlatex -t foo.sgml </verb></tscreen> 㹡óշÕèãªé option &dquot;<tt/d/&dquot; ËÃ×Í &dquot;<tt/p/&dquot; ËÃ×Í &dquot;<tt/t/&dquot; ¨Ðä´éä¿ÅìẺ LaTeX (<tt/.tex/) ´éÇÂ. ¼ÙéãªéÊÒÁÒöá¡éä¢à¹×éÍËÒã¹ <tt/foo.tex/ áÅéÇÊÑ觤ÓÊÑ觴ѧ¹Õé <tscreen><verb> % sgmltlatex -l foo.tex </verb></tscreen> ¤ÓÊÑè§¹Õé¨ÐàÃÕ¡ <tt/cttex/ ÁҵѴ¤ÓáÅÐÊè§µèÍãËé <tt/latex/ ¨Ñ´¡ÒÃ. ËÅѧ¨Ò¡¹Ñé¹ <tt/sgmltlatex/ ¨ÐºÑ¹·Ö¡ä¿Åì <tt/foo.tex/ ã¹ÃÙ»·Õè¼ÙéãªéÊÒÁÒöá¡éä¢ä´éÍÕ¡. «Öè§ËÁÒ¤ÇÒÁÇèÒ¼ÙéãªéäÁèÁÕ¤ÇÒÁ¨Óà»ç¹µéͧÊÑè§ <tt/cttex/ áÅÐ <tt/latex/ ¾ÃéÍÁ¡Ñ¹ÍÕ¡. à¹×èͧ¨Ò¡àÍ¡ÊÒÃẺ LaTeX ·Õè¼ÅÔµâ´Â SGML-tools µéͧ¡Òà <tt/linuxdoc-sgml.sty, qwertz.sty, url.sty, epsfig.sty/ áÅÐ <tt/null.sty/ 㹡ÒüÅÔµä¿Åì <tt/.dvi/ ¼Ùéãªéµéͧ configure â»Ãá¡ÃÁ <tt/latex/ ãËéÃÙéÇèÒä¿ÅìàËÅèÒ¹ÕéÍÂÙè·Õèä˹´éÇÂ. ÇÔ¸Õ·Õè§èÒ·ÕèÊØ´¤×Í¡çÍ»»Õéä¿ÅìàËÅèÒ¹Õé«Öè§ã¹¡Ã³Õ¢Í§¼Ùéà¢Õ¹¨ÐÍÂÙèãµéä´àá·ÍÃÕè /usr/local/lib/sgml-tools/ ÁÒäÇé·Õèä´àá·ÍÃÕè·ÕèÁÕä¿Åì <tt/.tex/ ÍÂÙèËÃ×Í·Ó symbolic link ¡çä´é. <sect>º·ÊÃØ» <p> ¡ÒÃà¢Õ¹àÍ¡ÊÒà HOWTO ´éÇÂÀÒÉÒ SGML áÅÐãªé SGML-tools 㹡ÒÃá»Å§à»ç¹àÍ¡ÊÒÃÃٻẺÍ×è¹æ ·ÓãËé¡ÒÃà¢Õ¹àÍ¡ÊÒÃÁÕÃкºÃÐàºÕº¡ÇèÒ¡ÒÃà¢Õ¹àÍ¡ÊÒÃÃٻẺÍ×è¹æ. Êдǡ㹡ÒÃá¡éä¢àÍ¡ÊÒÃà¾ÃÒÐÊÒÁÒöá¡é¨Ò¡ä¿Åì SGML à´ÕÂÇ¡çÊÒÁÒöá¡éàÍ¡ÊÒÃÃٻẺÍ×è¹æä´é´éÇÂ. ¶éÒËÒ¡ÁÕàÍ¡ÊÒèӹǹÁÒ¡, ÂѧÊÒÁÒöµÕ¾ÔÁ¾ìà»ç¹Ë¹Ñ§Ê×Íä´é§èÒÂâ´Âãªé LaTeX ¨Ñ´¡ÒÃä¿ÅìµèÒ§æ «Öè§Ë¹Ñ§Ê×Íà¡ÕèÂǡѺ HOWTO ¢Í§ Linux ¡çãªéÇÔ¸Õ¹Õé㹡ÒþÔÁ¾ìà»ç¹Ë¹Ñ§Ê×Í¢ÒÂ. ¡ÒÃãªéÀÒÉÒä·Â¾Í¨Ð·Óä´éã¹ÃдѺ˹Öè§áÅеéͧ¡ÒáÒþѲ¹ÒµèÍä». <sect>áËÅè§¢éÍÁÙÅà¾ÔèÁàµÔÁ <p> <itemize> <item> <url url="http://www.sgmltools.org" name="SGML-tools Homepage"> <item> <url url="http://www.fedu.uec.ac.jp/ZzzThai/Linux/thailatex/" name="¡ÒÃãªéÀÒÉÒä·Â¡Ñº LaTeX"> <item> <tt/guide.sgml/ áÅÐ <tt/example.sgml/ «Öè§ÁҡѺ SGML-tools </itemize> </article>