Latex3: xparse ConTeXt MkIV рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 18 рдЬреВрди 2020  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: latex3/latex3

рдирд┐рдореНрди рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдХреЛрдИ 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

bug generic-mode xparse

рд╕рднреА 7 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдХреЛрдб рдХреЛ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ @ рдореЗрдВ рдХреИрдЯрдХреЛрдб рдЕрдХреНрд╖рд░ рд╣реЛрдЧрд╛ред рддреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ 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 рдХреЛ рдФрд░ рдЪреАрдЬреЛрдВ рдХреЛ рд╕рдВрдмреЛрдзрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП: рдореИрдВ рдмрдВрдж рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

dbitouze picture dbitouze  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

josephwright picture josephwright  ┬╖  31рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

dbitouze picture dbitouze  ┬╖  12рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

stone-zeng picture stone-zeng  ┬╖  25рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

dbitouze picture dbitouze  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ