рдирд┐рдореНрди рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдХреЛрдИ ConTeXt рдорд╛рд░реНрдХ 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
"рдХреЗрд╡рд▓ рдлреВ рдмрд╛рд░ рдФрд░ рдлреВ" рдХреЗ рдмрдЬрд╛рдп рдпрд╣ "@ рдЯреНрд░реЗрд╕рдСрдлрд╝ @ рдЯреНрд░реЗрд╕рдСрди рдУрдирд▓реА рдлреВ @ рдЯреНрд░реЗрд╕рдСрдлрд╝ @ рдЯреНрд░реЗрд╕рд┐рдпрди рдмрд╛рд░ рдФрд░ рдлреВ" рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред
errorfile.pdf
рдХреЛрдб рдХреЛ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ @ рдореЗрдВ рдХреИрдЯрдХреЛрдб рдЕрдХреНрд╖рд░ рд╣реЛрдЧрд╛ред рддреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ xparse рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдВрджрд░реНрдн рдореЗрдВ рдХрд┐рддрдирд╛ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ - рдХрдорд╛рдВрдб рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдФрд░ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдпрд╣рд╛рдВ рдХрд╛рдлреА рдЕрд▓рдЧ рд╣реИред
~~~~
\рдЗрдирдкреБрдЯ expl3-рдЬреЗрдиреЗрд░рд┐рдХ
\catcode \@=11
\input xparse-generic
\catcode
\@=12
\рд╕реНрдЯрд╛рд░реНрдЯрдЯреЗрдХреНрд╕реНрдЯ
NewDocumentCommand\hello{om}
{
\IfNoValueTF{#1}
{рдХреЗрд╡рд▓ 2}
{#1 рдФрд░ #2}
}
\hello{foo} \hello[bar]{foo}
\рд╕реНрдЯреЙрдкрдЯреЗрдХреНрд╕реНрдЯ
~~~~
xparse-generic
рдЖрдЧрд╛рдореА рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд▓реЗрд╕рд╣реЛрд▓реНрдбрд░ рд╣реИ: рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рд╕рд╛рджреЗ TeX рдпрд╛ ConTeXt рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдпрд╣рд╛рдВ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИред рд╢рд░рдж рдЛрддреБ рдореЗрдВ рдЖрдиреЗ рдХреЗ рдмрд╛рдж рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдФрд░ рдЕрдзрд┐рдХ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред
рдореБрдЭреЗ рдмрд╣реБрдд рдЦреБрд╢реА рд╣реИ рдХрд┐ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ: ConTeXt рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдореЗрдВ \start...
/ \stop...
рдкрд░реНрдпрд╛рд╡рд░рдг рд╕реЗрдЯ рдЕрдк рдЬреЛрдбрд╝рдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИред
рдореИрдВрдиреЗ ConTeXt рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝рд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдпрджрд┐ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдХреНрд░реЙрд╕-рд╕рдВрдЧрдд рдХреЛрдб рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ MkIV рдХреЗ рдкрд╛рд╕ рд╡реИрдХрд▓реНрдкрд┐рдХ рддрд░реНрдХреЛрдВ рдХрд╛ рдЕрдкрдирд╛ рдореБрд╣рд╛рд╡рд░реЗрджрд╛рд░ рд╕рдВрдЪрд╛рд▓рди рд╣реИ ( \dosingleempty
, \dodoubleempty
, рдЖрджрд┐)ред рдореИрдВ рднреА рдЦреБрд╢ рд╣реВрдВред
рд╣рд╛рд▓ рддрдХ, xparse
рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдПрдХ LaTeX2e рдкреИрдХреЗрдЬ рдерд╛ред рд╣рдо рдЗрд╕рдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдХреЛ рд╢рд░рдж рдЛрддреБ рдореЗрдВ expl3-generic
рдореЗрдВ рд╡рд┐рд▓рдп рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рдЬрд┐рд╕ рд╕рдордп рдпрд╣ рдордВрдЪ-рддрдЯрд╕реНрде рдкреЗрд╢рдХрд╢ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдореБрд╣рд╛рд╡рд░реЗ рдХреЛ рдФрд░ рдЕрдзрд┐рдХ 'рддрдЯрд╕реНрде' рдмрдирд╛рдиреЗ рдХреА рдХреЛрдИ рдпреЛрдЬрдирд╛ рдирд╣реАрдВ рд╣реИред рдмреЗрд╢рдХ, ConTeXt рдЕрднреА рднреА рдореБрдЦреНрдп рдореЗрдВ o
- рдФрд░ m
-type рддрд░реНрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред
@JairoAdelRio рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рдореИрдВрдиреЗ scontents
рдкреИрдХреЗрдЬ (https://github.com/pablgonz/scontents) рдХреЗ рд▓рд┐рдП рд╕рд╛рджрд╛ рдФрд░ ConTeXt рджреЛрдиреЛрдВ рдореЗрдВ xparse
рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рд╕рдВрдЧрддрддрд╛ рдкрд░рдд рд▓рд┐рдЦреА рдереАред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХреБрдЫ рд╡рд┐рдЪрд╛рд░ рд▓реЗ рд╕рдХреЗрдВ (рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИрдВ рдХрд┐ рд╡реЗ рдХрд┐рддрдиреЗ рдЕрдЪреНрдЫреЗ рд╣реИрдВ ;-) рд╡рд╣рд╛рдВ рдлреЙрд░реНрдоред
рдЙрд╕ рд╕рдордп xparse
рдкреВрд░реА рддрд░рд╣ рд╕реЗ xparse.sty
, рдЗрддрдиреА рдЕрдзрд┐рдХ рд╕рдВрдЧрддрддрд╛ рдкрд░рдд \ProvidesPackage
рдЖрджрд┐ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд░рд╣реА рд╣реИред рдЖрдЬрдХрд▓ xparse-generic
рд╕рд╛рде рдпрд╣ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рднрд╡рд┐рд╖реНрдп рдореЗрдВ рд░рд┐рд▓реАрдЬ рдореЗрдВ рдпрд╣ рд╕рдВрднрд╡рддрдГ рдмрджрд▓ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ рддреЛ рдореИрдВ рдереЛрдбрд╝рд╛ рдЗрдВрддрдЬрд╛рд░ рдХрд░реВрдБрдЧрд╛
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @ рдпреВ-рдлрд┐рд╢рд░ рдХреА рдмрд╛рдд рд╕рд╣реА рд╣реИ, рд╕рд╛рде рд╣реА рдЖрдЧрд╛рдореА рдорд░реНрдЬ-рдЯреВ- expl3
рдХреЛ рдФрд░ рдЪреАрдЬреЛрдВ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП: рдореИрдВ рдмрдВрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВред