Latex3: ConTeXt MkIV์—์„œ xparse๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์Œ

์— ๋งŒ๋“  2020๋…„ 06์›” 18์ผ  ยท  7์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: latex3/latex3

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

bug generic-mode xparse

๋ชจ๋“  7 ๋Œ“๊ธ€

์ฝ”๋“œ๋Š” @์— 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 ๋ณ‘ํ•ฉ์€ ๋” ๋งŽ์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ซ๊ฒ ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰