\catcode¡®@=11occurs, making the at sign into a letter, meaning that it can be used in control sequences. Somewhere near the end of the format definition the at sign is made 'other' again:
\catcode¡®@=12Now why is it that users cannot call a control sequence with an at sign directly, although they can call macros that contain lots of those 'at-definitions'? The reason is that the control sequences containing an @ are internalized by TeX at definition time, after which they are a token, not a string of characters. Macro expansion then just inserts such tokens, and at that time the category codes of the constituent characters do not matter any more.
\uccode`1=`b \uppercase{1}À§¿¡¼ "1"ÀÇ \uccode¸¦ "b"·Î Çß½À´Ï´Ù. µû¶ó¼ \uppercase{1} Çϸé "b"°¡ µÇ´Âµ¥, Àç¹ÌÀÖ´Â °ÍÀº À§ °úÁ¤À» ÅëÇؼ ¸¸µé¾îÁø, ¿ì¸® ´«¿¡ º¸ÀÌ´Â ¼Ò¹®ÀÚ "b"ÀÇ Ä«Å×°í¸®ÄÚµå´Â 11ÀÌ ¾Æ´Ñ, ¿ø·¡ "1"ÀÇ ±×°ÍÀÎ 12¶ó´Â Á¡ÀÔ´Ï´Ù.
{\uccode¡®1=¡®i \uccode¡®2=¡®f \uppercase{\gdef\if@12{} }} % ¡®if¡¯ is requiredÀ§ °úÁ¤À» ÅëÇؼ ¿ì¸®´«¿¡ º¸ÀÌ´Â \if@if ¿¡¼ µÚÀÇ "if"ÀÇ Ä«Å×°í¸®ÄÚµå´Â 12°¡ µË´Ï´Ù. ¿Ö³ÄÇÏ¸é ¼ýÀÚ 1°ú 2ÀÇ Ä«Å×°í¸®Äڵ尡 12À̱⠶§¹®ÀÔ´Ï´Ù. ±×·¸´Ù¸é À§¿¡¼ Á¤ÀÇÇÑ \if@ ¸ÅÅ©·Î°¡ ÇÏ´Â ÀÏÀº Ä«Å×°í¸®ÄÚµå 12ÀÎ ¹®ÀÚ "if"¸¦ Àâ¾Æ¸Ô´Â ÀÏÀ» ÇÕ´Ï´Ù. ±×·¸´Ù¸é, ÀÌÁ¦´Â ¸ðµç °ÍÀÌ ¸íÈ®ÇØ Á³½À´Ï´Ù.
\def\@if#1#2{\csname\expandafter\if@\string#1#2\endcsname}À§¿¡¼ #1À» \iffoo, #2¸¦ true¶ó°í ÇսôÙ. ±×·¯¸é \string\iffoo¿¡ ÀÇÇؼ \,i,f,f,o,oÀÇ Ä«Å×°í¸®Äڵ尡 ¸ðµÎ 12°¡ µÇ°í, ´õ±¸³ª \newif ¸ÅÅ©·ÎÀÇ Ã¹ºÎºÐ¿¡ \escapechar=-1¿¡ ÀÇÇؼ "\"´Â Ãâ·ÂµÇÁö ¾Ê½À´Ï´Ù. µû¶ó¼ "\@if \iffoo true"´Â "\csname footrue \endcsname"ÀÌ µÇ´Â °ÍÀÔ´Ï´Ù. \if@ °¡ \ °¡ ºüÁø iffoo¿¡¼ ¾ÕÀÇ if¸¦ ¸Ô¾î¹ö·È½À´Ï´Ù. ±×·¡¼ footrue¸¸ ³²¾Ò½À´Ï´Ù. ±×¸®°í "\csname footrue \endcsname"´Â \footrue¿Í ¶È°°Àº °ÍÀÌÁö¿ä. ÀÌÁ¦ \newif ¸ÅÅ©·Î¸¦ ´Ù½Ã Çѹø »ìÆ캸¼¼¿ä.
\footrue, \foofalse, \iffooÀ§¿Í °°Àº °ÍµéÀÌ ¸¸µé¾îÁý´Ï´Ù. °¢°¢ÀÌ ¹¹ ÇÏ´Â ³ðµéÀÎÁö´Â À̸§À» º¸¸é ´ëÃæ ¾Ë°Ú½À´Ï´Ù.
\outer\def\newif#1{\count@=\escapechar \escapechar=-1 \expandafter\expandafter\expandafter \def\@if#1{true}{\let#1=\iftrue}% \expandafter\expandafter\expandafter \def\@if#1{false}{\let#1=\iffalse}% \@if#1{false}\escapechar=\count@} % the condition starts out false \def\@if#1#2{\csname\expandafter\if@\string#1#2\endcsname} {\uccode¡®1=¡®i \uccode¡®2=¡®f \uppercase{\gdef\if@12{} }} % ¡®if¡¯ is required
{\uccode¡®1=¡®i \uccode¡®2=¡®f \uppercase{\gdef\if@12{} }} % ¡®if¡¯ is requiredµµ´ëü ¿Ö "\uccode"¶ó´Â °ÍÀ» ÀÌ¿ëÇؼ ¾î·Æ°Ô "\if@if"¶ó´Â ¸ÅÅ©·Î¸¦ Á¤ÀÇ Çß´ÂÁö´Â µµ¹«Áö ÀÌÇØ ¸øÇÏ°Ú½À´Ï´Ù. ±×³É
\def\if@if{}¶ó°í ÇÏ¸é ¾ÈµÇ´Â °ÍÀÎÁö. ¹«½¼ ÀÌÀ¯·Î ±×·ìÀ» Çϳª ¸¸µé°í, ±× ±×·ì¾È¿¡¼ \uccode¸¦ º¯°æÇÏ°í \uppercase¸¦ ÅëÇؼ ±×°É ¿øÇϴ´ë·Î µ¹·Á³õ°í, ±×·ì¾È¿¡¼ Á¤ÀÇÇ߱⶧¹®¿¡ \gdef¸¦ »ç¿ëÇÏ°í... ºÐ¸í ¹«½¼ ÀÌÀ¯°¡ ÀÖÀ»ÅÙµ¥...ÂÁ
\newtoks\t \t={Once upon a time there lived ...}À̶§, \t¸¦ ÀÌ·ç°í ÀÖ´Â ±× ÅؽºÆ®¿¡ Àû¾îµµ ÇϳªÀÇ º°Ç¥(*)°¡ ÀÖ´ÂÁö È®ÀÎÇÏ´Â ¹æ¹ýÀÌ ¿©·¯°¡Áö°¡ ÀÖ°ÚÁö¸¸, ±× ÁßÇϳª´Â ´ÙÀ½°ú °°½À´Ï´Ù.
\newif\ifresult % for the result of a computed test \def\atest#1{\expandafter\a\the#1*\atest\a} \long\def\a#1*#2#3\a{\ifx\atest#2\resultfalse\else\resulttrue\fi}
\def\btest#1{\expandafter\b\the#1*\bb} \long\def\b#1*{\futurelet\next\bb} \long\def\bb#1\bb{\ifx\bb\next\resultfalse\else\resulttrue\fi}
\def<¸í·É¾î><ÆĶó¹ÌÅÍ ÅؽºÆ®>{<ġȯ ÅؽºÆ®>}<ÆĶó¹ÌÅÍ ÅؽºÆ®>ÀÇ ¸Ç ¸¶Áö¸· ¹®ÀÚ°¡ "#"°¡ ¿Ã ¼ö Àִµ¥, Áï, # ´ÙÀ½¿¡ ¿ÞÂÊ °ýÈ£ "{"°¡ °ð¹Ù·Î ¿À´Â °æ¿ìÀε¥, À̶§ ÅØÀº ¸¶Ä¡ <ÆĶó¹ÌÅÍ ÅؽºÆ®>¿Í <ġȯ ÅؽºÆ®> ¿À¸¥ÂÊ ¸Ç³¡¿¡ "{"°¡ ÀÖ´Â °Íó·³ ÇൿÀ» ÇÕ´Ï´Ù. ÀÌ·¸°Ô ÇÔÀ¸·Î½á ¸ÅÅ©·Î°¡ È®ÀåµÉ ¶§, °¢ ÆĶó¹ÌÅÍÀÇ ±¸ºÐÀÚ·Î »ç¿ëµÈ ¹®ÀÚµéÀ» ¾ø¾îÁö´Âµ¥ "#{" ¿¡¼ "{"´Â ¾ø¾îÁöÁö ¾Ê½À´Ï´Ù. ¿¹¸¦µé¾î, ´ÙÀ½°ú °°Àº ¸ÅÅ©·Î Á¤ÀÇ°¡ ÀÖ´Ù°í ÇսôÙ.
\def\foo #1:#2{[#1] #2}À§ÀÇ Á¤ÀÇ¿¡¼ ±¸ºÐÀÚ ":"´Â \foo ¸ÅÅ©·ÎÀÇ µÎ °³ÀÇ ÆĶó¹ÌÅ͸¦ ±¸ºÐÇϱâ À§Çؼ »ç¿ëµÇ´Â °ÍÀ¸·Î <ġȯ Å×½ºÆ®>¿¡¼´Â »ç¿ëµÇÁö ¾Ê½À´Ï´Ù. Áï <ġȯ ÅؽºÆ®>¿¡¼ ":"¸¦ ¸í½ÃÀûÀ¸·Î »ç¿ëÇÏÁö ¾Ê´Â ÀÌ»ó, ±¸ºÐÀÚ·Î »ç¿ëµÈ ":"´Â ¾ø¾îÁý´Ï´Ù. Á¤¸®Çϸé "#{"¸¦ ÀÌ¿ëÇϸé "{"¸¦ ÆĶó¹ÌÅÍ ÅؽºÆ®¿¡¼ »ç¿ëÇÒ ¼ö ÀÖ°í, ÆĶó¹ÌÅÍÀÇ ±¸ºÐÀÚ(delimiter)·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·³ "#{"°¡ »ç¿ëµÇ´Â ¿¹¸¦ µé¾î º¾½Ã´Ù.
\def\a#1#{\hbox to #1}À§ ó·³ Á¤ÀÇµÈ ¸ÅÅ©·Î \a°¡ "\a3pt{x}"¶ó°í »ç¿ëµÇ¸é ÀÌ °ÍÀº "\hbox to 3pt{x}"·Î Àü°³µË´Ï´Ù. À§ÀÇ Á¤ÀÇ¿¡¼ <ÆĶó¹ÌÅÍ ÅؽºÆ®>ÀÇ ¸Ç¸¶Áö¸·¿¡ "#"°¡ »ç¿ëµÇ¾úÀ¸¹Ç·Î \aÀÇ Ã¹¹ø° ÆĶó¹ÌÅÍ #1Àº \a ¿Í { »çÀÌ¿¡ ÀÖ´Â "3pt"°¡ µË´Ï´Ù. ±×·¡¼ "\hbox to 3pt{x}"·Î Àü°³µÇ´Â °ÍÀÔ´Ï´Ù. ¶Ç ´Ù¸¥ ¿¹·Î, ¸ÅÅ©·Î \a ¸¦ Á¤ÀÇÇϴµ¥, \a{...}¸¦ Àü°³Çϸé \b{...} °¡ µÇ°Ô²ûÇÏ°í ½Í½À´Ï´Ù ¾î¶»°Ô ÇÏ¸é µÉ±î¿ä? ¸ÅÅ©·Î \a¸¦ ´ÙÀ½°ú °°ÀÌ Á¤ÀÇÇÏ¸é µË´Ï´Ù.
\def\a#{\b}¸¶Áö¸·À¸·Î Àç¹ÌÀÖ´Â ¿¹¸¦ µé¾îº¸°Ú½À´Ï´Ù. Ç÷¹ÀÎ ÅØ¿¡´Â \bf ¶ó´Â ¸í·É¾î°¡ Àִµ¥, ÀÌ´Â
{\bf ¾î¼±¸ Àú¼±¸...}ó·³ »ç¿ëµÇ¸ç, "¾î¼±¸ Àú¼±¸..."¸¦ ±½Àº±Û²Ã(boldface)·Î ¹Ù²ß´Ï´Ù. ±×·±µ¥ À§ ó·³ {\bf ...}·Î »ç¿ëÇÏ´Â°Ô ¾Æ´Ï¶ó \bold{...}·Î »ç¿ëÇÏ°í ½Í½À´Ï´Ù. ¾î¶»°Ô ÇÏ¸é µÉ±î¿ä? ¿©·¯°¡Áö ¹æ¹ýÀÌ ÀÖÀ» ¼ö ÀÖ½À´Ï´Ù. ³À̵µ ¼øÀ¸·Î »ìÆ캸¸é ´ÙÀ½°ú °°Àº ¹æ¹ýÀÌ ÀÖ´Ù°í ÇÕ´Ï´Ù.
\aftergroup<ÅäÅ«>\aftergroupÀº ±× ´ÙÀ½¿¡ ³ª¿À´Â <ÅäÅ«>À» ÀÏ´Ü ÀúÀåÇØ µÎ¾ú´Ù°¡ ÇöÀç »ç¿ëµÇ°í ÀÖ´Â ±×·ìÀÌ ³¡³ ´ÙÀ½¿¡ <ÅäÅ«>ÀÌ »ç¿ëµË´Ï´Ù. ¿¹¸¦ µé¸é,
\def\abc{\catcode... \xyz} \def\xyz#1{...} ... \abc{argument}À§ÀÇ ¿¹¿¡¼ ¾Ë ¼ö ÀÖµíÀÌ argument´Â \catcode¿¡ ÀÇÇؼ ¾î¶² catcodeµéÀÌ º¯°æ µÈ ´ÙÀ½¿¡ \xyzÀÇ ÀÎÀÚ·Î »ç¿ëµË´Ï´Ù. À§ÀÇ ¿¹´Â \aftergroupÀ» »ç¿ëÇÏ¸é ´ÙÀ½°ú °°ÀÌ µË´Ï´Ù.
\def\abc{\catcode... \bgroup\aftergroup\xyz\let\dummy=} ... \abc{...}\bgroupÀ¸·Î ÀÏ´Ü ±×·ìÀÌ ½ÃÀ۵ǰí, \aftergroup¿¡ ÀÇÇؼ \xyz°¡ ÀúÀåµË´Ï´Ù. ±×¸®°í \bgroup¿¡ ÀÇÇؼ ½ÃÀÛµÈ ±×·ìÀÌ ³¡³ ´ÙÀ½¿¡ \xyz°¡ »ç¿ëµË´Ï´Ù. Àß »ìÆ캼 °ÍÀº \let¿¡ ÀÇÇؼ \abcÀÇ ¿ÞÂÊ °ýÈ£ "{"°¡ Èí¼öµÈ´Ù´Â °ÍÀÔ´Ï´Ù. µû¶ó¼ \abc°¡ ÇÏ´Â ÀÏÀº ¸ÕÀú catcodeµéÀ» º¯°æ ½ÃÅ°°í, ±×·ìÀ» ½ÃÀÛÇÏ°í, \xyz¸¦ ÀúÀåÇÏ°í "{"¸¦ Èí¼öÇÏ°í ÀÎÀÚµéÀ» ÀÐ¾î µéÀÌ°í ¸¶Áö¸·À¸·Î ±×·ìÀ» ´Ý½À´Ï´Ù. ±×¸®°í ³ª¼ ¸ÅÅ©·Î \xyz°¡ Àü°³µÇ´Â °ÍÀÔ´Ï´Ù.
\afterassignment <ÅäÅ«> <assignment¹®>À§¿¡¼ <assignment¹®>Àº "ÇÒ´ç¹®" ȤÀº "´ëÀÔ¹®" À̶ó°í ¹ø¿ªµÈ °ÍÀ» º¸¾Ò´Âµ¥, ¿¹¸¦µé¸é ´ÙÀ½°ú °°Àº °ÍµéÀÔ´Ï´Ù.
\baselineskip=12pt \parskip=0pt plus 1pt \abc=10 ...À§¿¡¼ "=" Àº »ý·« ÇÒ ¼ö ÀÖ½À´Ï´Ù.
\def\abc#1{\leftskip=#1 \rightskip=#1}ÀÌ ¸ÅÅ©·Î´Â ¹®´ÜÀÇ ¸ð¾çÀ» Á¤ÇÏ´Â ¸ÅÅ©·Î ÀÏÅÙµ¥, ´ÙÀ½°ú °°ÀÌ »ç¿ëÇØ¾ß ÇÕ´Ï´Ù.
\abc{4pt plus 5pt minus 4pt}Å« ¹®Á¦´Â ¾ø½À´Ï´Ù¸¸, º¸±â¿¡ ¾à°£ ¾î»öÇÕ´Ï´Ù. ¿Ö³ÄÇϸé À§¿¡¼ ¿¹¸¦µé¾úÁö¸¸, ´ÙÀ½°ú °°Àº ½ÄÀ¸·Î »ç¿ëÀ» ÇÏÁö,
\parskip 0pt plus 1pt¾Æ·¡¿Í °°Àº ½Ä·Î »ç¿ëÇÏÁö ¾Ê±â¶§¹®ÀÔ´Ï´Ù.
\parskip{0pt plus 1pt}À§¿¡¼ Á¤ÀÇÇÑ ¸ÅÅ©·Î¸¦ \abc 4pt plus 5pt minus 4pt ó·³ »ç¿ëÇÏ¸é ¿øÇÏ´Â ¹Ù¸¦ ¾òÀ» ¼ö ¾ø´Â ÀÌÀ¯¸¦ Çѹø »ý°¢ÇØ º¸½Ã±â ¹Ù¶ø´Ï´Ù.
\def\abc{\afterassignment\aux \skip0=} \def\aux{\leftskip=\skip0 \rightskip=\skip0}
\def\fifo#1{\ifx\ofif#1\ofif\fi \process#1\fifo} \def\ofif#1\fifo{\fi} \newcount\n \newcount\m \def\insertcommas#1{\n=0 \def\process##1{\advance\n1 }\fifo#1\ofif \m=\n \divide\n3 \advance\n1 \multiply\n3 \advance\n by-\m \ifnum\n=3 \n=0 \fi \advance\n-1 \def\process##1{\advance\n1 \ifnum\n=3 {,}\n=0 \fi ##1} \fifo#1\ofif}
\insertcommas{1} \insertcommas{12} \insertcommas{123} \insertcommas{1234} \insertcommas{12345} \insertcommas{123456} \insertcommas{1234567} ...