ConTeXt Mark IV(LuaTeX)์์ xparse๋ฅผ ์ฌ์ฉํ๋ ค๊ณ ํ ๋ ๋ค์์ด ๋ฐ์ํฉ๋๋ค.
\input expl3-generic
\input xparse-generic
\starttext
\NewDocumentCommand\hello{om}
{
\IfNoValueTF{#1}
{Only #2}
{#1 and #2}
}
\hello{foo} \hello[bar]{foo}
\stoptext
"foo bar and foo๋ง" ๋์ "@ traceoff@traceon foo @ traceoff@traceon bar and foo๋ง"์ผ๋ก ๋ํ๋ฉ๋๋ค.
์ค๋ฅ ํ์ผ.pdf
์ฝ๋๋ @์ catcode ๋ฌธ์๊ฐ ์์ ๊ฒ์ผ๋ก ์์ํฉ๋๋ค. ๋ฐ๋ผ์ ๋ค์์ ์๋ํ์ง๋ง xparse๊ฐ ์ค์ ๋ก ์ปจํ ์คํธ์์ ์ผ๋ง๋ ์๋ํ๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์ฌ๊ธฐ์ ๋ช ๋ น ์ ์์ ๊ตฌ๋ฌธ์ ๊ฐ๋ ์ ์๋นํ ๋ค๋ฆ ๋๋ค.
~~~~
\input expl3-generic
\catcode \@=11
\input xparse-generic
\catcode
\@=12
\starttext
NewDocumentCommand\hello{om}
{
\IfNoValueTF{#1}
{๋จ #2}
{#1 ๋ฐ #2}
}
\hello{foo} \hello[bar]{foo}
\stoptext
~~~~
xparse-generic
๋ ๊ณง ์์ ๋ณ๊ฒฝ ์ฌํญ์ ์ํ ์๋ฆฌ ํ์์์
๋๋ค. ์ผ๋ฐ TeX ๋๋ ConTeXt๋ก ํ
์คํธ๋์ง ์์์ผ๋ฏ๋ก ์ฌ๊ธฐ์ ์คํจํ๋ ๊ฒ์ด ๋๋์ง ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๊ฐ์์ ์ด๋ฅด๋ฉด ์ข ๋ ์์ ๋ ๊ฒ์
๋๋ค.
์ด ์์
์ด ์ ํ ์๋ํ์ง ์์ ๋งค์ฐ ๊ธฐ์ฉ๋๋ค. ConTeXt์ ๊ฒฝ์ฐ \start...
/ \stop...
ํ๊ฒฝ ์ค์ ์ ์ถ๊ฐํด์ผ ํ ์๋ ์์ต๋๋ค.
ConTeXt์์ ํธํ์ฑ์ ๋ํด ์ฝ์์ผ๋ฏ๋ก MkIV์๋ ์ ํ์ ์ธ์( \dosingleempty
, \dodoubleempty
, ๋ฑ). ๋๋ ๊ธฐ์๋ค.
์ต๊ทผ๊น์ง xparse
๋ ์์ ํ LaTeX2e ํจํค์ง์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๊ฐ์์ ๊ทธ๊ฒ์ ๋๋ถ๋ถ์ expl3-generic
๋ก ๋ณํฉํ ์์ ์ด๋ฉฐ, ์ด๋ ํ๋ซํผ ์ค๋ฆฝ์ ์ ๊ณต์ ์ผ๋ถ๊ฐ ๋ ๊ฒ์ด์ง๋ง idom์ ๋ '์ค๋ฆฝ์ '์ผ๋ก ๋ง๋ค ๊ณํ์ ์์ต๋๋ค. ๋ฌผ๋ก ConTeXt๋ ์ฌ์ ํ o
- ๋ฐ m
-type ์ธ์๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ์ฌ์ฉํฉ๋๋ค.
@JairoAdelRio ์ผ๋ง ์ ์ scontents
ํจํค์ง(https://github.com/pablgonz/scontents)์ ๋ํด Plain๊ณผ ConTeXt ๋ชจ๋์์ xparse
๋ฅผ ํ์ฉํ๋ ์ผ์ข
์ ํธํ์ฑ ๊ณ์ธต์ ์์ฑํ์ต๋๋ค. ์๋ง๋ ๊ฑฐ๊ธฐ์์ ๋ช ๊ฐ์ง ์์ด๋์ด(์ผ๋ง๋ ์ข์์ง ํ์คํ์ง ์์ ;-)๋ฅผ ์ทจํ ์ ์์ต๋๋ค.
๋น์ xparse
๋ ์์ ํ xparse.sty
์ ์์๊ณ ๋ง์ ํธํ์ฑ ๊ณ์ธต์ด \ProvidesPackage
๋ฑ์ ์ ์ํ๊ณ ์์์ต๋๋ค. ์์ฆ์๋ xparse-generic
์ฌ์ฉํ๋ฉด ํจ์ฌ ์ฌ์ธ ๊ฒ์
๋๋ค. ํ์ง๋ง ์ด๋ ํฅํ ๋ฆด๋ฆฌ์ค์์ ๋ณ๊ฒฝ๋ ๊ฐ๋ฅ์ฑ์ด ์์ผ๋ฏ๋ก ๊ฐ๋ฅํ๋ฉด ์กฐ๊ธ ๊ธฐ๋ค๋ฆฌ๊ฒ ์ต๋๋ค.
@u-fischer์ ์์ ์ด ์ณ๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ฒ๋ค๊ฐ ๊ณง ์์ expl3
๋ณํฉ์ ๋ ๋ง์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํฉ๋๋ค. ๋ซ๊ฒ ์ต๋๋ค.