Latex3: \tl_if_integer рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ:n

рдХреЛ рдирд┐рд░реНрдорд┐рдд 5 рдЬреБрд▓ре░ 2021  ┬╖  19рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: latex3/latex3

рдирдорд╕реНрддреЗ,

рдЖрдВрддрд░рд┐рдХ __int_to_ roman:w рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдЯреЛрдХрди рд╕реВрдЪреА рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рд╣реИ рдпрд╛ рдирд╣реАрдВ, рдЧреАрд▓реЗрд░ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛:

\prg_new_conditional:Npnn \tl_if_integer:n #1 { p, T, F, TF }
{
  \tl_if_blank:oTF { \__int_to_roman:w -0#1 }
   {
    \prg_return_true:
   }
   {
    \prg_return_false:
   }
}

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ \str_if_integer:nTF рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╕рдордЭрджрд╛рд░реА рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рддрдХ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдиреБрдордд рдкреВрд░реНрдгрд╛рдВрдХ рдХреНрдпрд╛ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрдХреЗрддреЛрдВ рдХреЗ рдмреАрдЪ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреА рдЕрдиреБрдорддрд┐ рджреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдХреЗ рднреАрддрд░ рдирд╣реАрдВ рдХреНрдпреЛрдВрдХрд┐ рдЯреАрдПрдХреНрд╕ рдЗрд╕реЗ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ?

\romannumeral рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдХреЛрдб рдЕрдВрдХреЛрдВ рдХреА рд▓рдВрдмреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП "рд╕рдВрдЦреНрдпрд╛ рдмрд╣реБрдд рдмрдбрд╝реА" рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рд╡рд┐рд░рд╛рдо рджреЗрддрд╛ рд╣реИред рд╕рдВрднрд╡рддрдГ рд╣рдореЗрдВ рдПрдХ рдзреАрдореА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдПрдХ рд╕рдордп рдореЗрдВ рдХреЗрд╡рд▓ рдХреБрдЫ рдЕрдВрдХреЛрдВ рдХреЛ рдкрдХрдбрд╝ рд▓реЗрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЕрдВрдХреЛрдВ рдХреЗ рдмреАрдЪ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдкрд░реЗрд╢рд╛рдиреА рд╣реЛрддреА рд╣реИред

рдПрдХ рд╡рд┐рдХрд▓реНрдк/рдЬреЛрдбрд╝ \str_to_integer:nF рд╣реЛрдЧрд╛ рдЬреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╕реНрд╡рдЪреНрдЫ рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рдпрд╣ рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдХреА рддрд░рд╣ "рдкрд░реНрдпрд╛рдкреНрдд" рджрд┐рдЦрддрд╛ рд╣реИ (рд╣рдо рдХреБрдЫ рд╣рдж рддрдХ рдвреАрд▓рд╛ рд╣реЛрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рд▓реЗрдХрд┐рди рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд)) рдФрд░ рдЕрдиреНрдпрдерд╛ рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдЕрдкрдирд╛ рджреВрд╕рд░рд╛ рддрд░реНрдХ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред

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

рдпрд╣рд╛рдВ рдмреЗрд╣рддрд░:

\prg_new_conditional:Npnn \tl_if_integer:n #1 { p, T, F, TF }
{
  \tl_if_blank:nTF{#1}
    {
      \prg_return_false:
    }
    {
      \tl_if_blank:oTF { \__int_to_roman:w -0#1 }
      {
        \prg_return_true:
      }
      {
        \prg_return_false:
      }
    }
}

рдирд╛рдо рдЕрдЬреАрдм рд▓рдЧрддрд╛ рд╣реИ: рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдХреА рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП -5 рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рд╣реИ рд▓реЗрдХрд┐рди рдЭреВрдард╛ рд░рд┐рдЯрд░реНрди рджреЗрддрд╛ рд╣реИ, +7 рдЭреВрдард╛ рднреА рд▓реМрдЯрд╛рддрд╛ рд╣реИ)ред рдпрд╣ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ рдпрджрд┐ рдХреЗрд╡рд▓ рдЕрдВрдХ рдореМрдЬреВрдж рд╣реИрдВред

@zauguin рдирд╛рдо рдХреЗ рд▓рд┐рдП рдареАрдХ рд╣реИ рд▓реЗрдХрд┐рди рдлрд╝рдВрдХреНрд╢рди рдЙрдкрдпреЛрдЧреА рд╣реИ, рдФрд░ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЗрдХреНрд╕ рдмреБрдХ рдХреЗ рдкреБрд░рд╛рдиреЗ рдЯрд┐рдХ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЕрдВрдХред рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рд░реЗрдЧреЗрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреВрд░реНрдгрд╛рдВрдХ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдзреАрдорд╛ рд╣реЛрдЧрд╛

рдЖрдкрдХреА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реБрдЖ:

\prg_new_conditional:Npnn \tl_if_digit:n #1 { p, T, F, TF }
{
  \tl_if_blank:nTF{#1}
    {
      \prg_return_false:
    }
    {
      \tl_if_blank:oTF { \__int_to_roman:w -0#1 }
      {
        \prg_return_true:
      }
      {
        \prg_return_false:
      }
    }
  }
\prg_generate_conditional_variant:Nnn \tl_if_digit:n { o } { p, T, F, TF }
\prg_new_conditional:Npnn \__tl_if_integer:n #1 { p, T, F, TF }
{
    \exp_args:No\str_if_eq:onTF{\tl_head:n{#1}}{+}
    {
      \exp_args:No\tl_if_digit:oTF{\tl_tail:n{#1}}
      {
        \prg_return_true:
      }
      {
        \prg_return_false:
      }
    }
    {
      \exp_args:No\str_if_eq:onTF{\tl_head:n{#1}}{-}
      {
        \exp_args:No\tl_if_digit:oTF{\tl_tail:n{#1}}
        {
          \prg_return_true:
        }
        {
          \prg_return_false:
        }
      }
      {
        \prg_return_false:
      }
    }
}
\prg_new_conditional:Npnn \tl_if_integer:n #1 { p, T, F, TF }
{
  % fast path
  \tl_if_digit:nTF{#1}
  {
    \prg_return_true:
  }
  {
    % slow path
    \__tl_if_integer:nTF{#1}
    {
      \prg_return_true:
    }
    {
      \prg_return_false:
    }
  }
}

@ рдмрд╛рд╕реНрдЯрд┐рдпрди-рд░реМрдХреЗрд░реАрдЬрд╝ рдЯреАрдПрдХреНрд╕ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рдордиреЗ рдХрдИ рд╕рдВрдХреЗрдд рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХрд╛ рдкрд░реАрдХреНрд╖рдг рдЖрдорддреМрд░ рдкрд░ рдкрд░реНрдпрд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рд╣рдореЗрд╢рд╛ рдирд╣реАрдВред рдХреНрдпрд╛ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрдИ рд╕рдВрдХреЗрддреЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреЗ рд╕рдХрддрд╛ рд╣реИ:

\ExplSyntaxOn
\prg_new_conditional:Npnn \str_if_integer:n #1 { p, T, F, TF }
  { \exp_after:wN \__str_if_integer_sign:N \tl_to_str:n {#1} \scan_stop: }
\cs_new:Npn \__str_if_integer_sign:N #1
  {
    \if:w $
        \if_meaning:w - #1 F \fi:
        \if_meaning:w + #1 F \fi: $
      \exp_after:wN \__str_if_integer_digits:w \exp_after:wN #1
    \else:
      \exp_after:wN \__str_if_integer_sign:N
    \fi:
  }
\cs_new:Npn \__str_if_integer_digits:w #1 \scan_stop:
  {
    \tl_if_blank:nTF {#1}
      { \prg_return_false: }
      {
        \tl_if_blank:oTF { \__int_to_roman:w -0#1 }
          { \prg_return_true: }
          { \prg_return_false: }
      }
  }

\cs_new:Npn \test #1
  { \typeout { #1: \str_if_integer:nTF {#1} { INT } { NOT } } }

\test {   }
\test { ~ }
\test { 1 }
\test { - }
\test { -1 }
\test { +1 }
\test { +-+-+-1 }

\stop

рддрд░реНрдХ рдореЗрдВ рдЯреЛрдХрди рдХреЗ рд╡рд┐рд╕реНрддрд╛рд░ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг str рд╣реИред рдореЗрд░рд╛ рдФрд░ рдЖрдкрдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рджреЛрдиреЛрдВ рд╕рдВрдХреЗрдд рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдВрдХреЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ \romannumeral ред рдПрдХ tl рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕рдВрднрд╡рддрдГ рдЖрд╡рд╢реНрдпрдХрддрд╛рдиреБрд╕рд╛рд░ рд╕рдм рдХреБрдЫ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ \str_if_integer:nTF рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рд╕рдордЭрджрд╛рд░реА рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рддрдХ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЕрдиреБрдордд рдкреВрд░реНрдгрд╛рдВрдХ рдХреНрдпрд╛ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрдХреЗрддреЛрдВ рдХреЗ рдмреАрдЪ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХреА рдЕрдиреБрдорддрд┐ рджреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдХреЗ рднреАрддрд░ рдирд╣реАрдВ рдХреНрдпреЛрдВрдХрд┐ рдЯреАрдПрдХреНрд╕ рдЗрд╕реЗ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ?

\romannumeral рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдХреЛрдб рдЕрдВрдХреЛрдВ рдХреА рд▓рдВрдмреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП "рд╕рдВрдЦреНрдпрд╛ рдмрд╣реБрдд рдмрдбрд╝реА" рддреНрд░реБрдЯрд┐ рдХреЗ рд╕рд╛рде рд╡рд┐рд░рд╛рдо рджреЗрддрд╛ рд╣реИред рд╕рдВрднрд╡рддрдГ рд╣рдореЗрдВ рдПрдХ рдзреАрдореА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЬреЛ рдПрдХ рд╕рдордп рдореЗрдВ рдХреЗрд╡рд▓ рдХреБрдЫ рдЕрдВрдХреЛрдВ рдХреЛ рдкрдХрдбрд╝ рд▓реЗрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЕрдВрдХреЛрдВ рдХреЗ рдмреАрдЪ рд░рд┐рдХреНрдд рд╕реНрдерд╛рди рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рдкрд░реЗрд╢рд╛рдиреА рд╣реЛрддреА рд╣реИред

рдПрдХ рд╡рд┐рдХрд▓реНрдк/рдЬреЛрдбрд╝ \str_to_integer:nF рд╣реЛрдЧрд╛ рдЬреЛ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рд╕реНрд╡рдЪреНрдЫ рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рдпрд╣ рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдХреА рддрд░рд╣ "рдкрд░реНрдпрд╛рдкреНрдд" рджрд┐рдЦрддрд╛ рд╣реИ (рд╣рдо рдХреБрдЫ рд╣рдж рддрдХ рдвреАрд▓рд╛ рд╣реЛрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рд▓реЗрдХрд┐рди рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд)) рдФрд░ рдЕрдиреНрдпрдерд╛ рдЗрдирдкреБрдЯ рд╕реНрдЯреНрд░реАрдо рдореЗрдВ рдЕрдкрдирд╛ рджреВрд╕рд░рд╛ рддрд░реНрдХ рдЫреЛрдбрд╝ рджреЗрддрд╛ рд╣реИред

@blefloch \romannumeral рдХреА рдкреНрд░рд▓реЗрдЦрд┐рдд рд╕реАрдорд╛ рдХреНрдпрд╛ рд╣реИ?

@ bastien-roucaries рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рдкреВрд░реНрдгрд╛рдВрдХ TeX рд╕рдВрднрд╛рд▓ рд╕рдХрддрд╛ рд╣реИ: 2┬│┬╣тИТ1 = 2147483647ред

@PhelypeOleinik рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ @blefloch рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ +-+-+-+-+-+-+-+-+-+-+-+-+000000000000000000000000000000000000000000000000000000000 \romannumeral рддреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИ ...

рддреЛ рдЕрдзрд┐рдХрддрдо рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЖрдХрд╛рд░ рдХреНрдпрд╛ рд╣реИ?

@ Bastien-roucaries \romannumeral рдХреЗрд╡рд▓ рдПрдХ рдЧреИрд░-рд╢реВрдиреНрдп рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд▓рд┐рдП "рд╕рдВрдЦреНрдпрд╛ рдмрд╣реБрдд рдмрдбрд╝реА" рдХреЗ рд╕рд╛рде рдЯреВрдЯрддрд╛ рд╣реИред рдЬрдм рддрдХ рдкрд░рд┐рдгрд╛рдореА рдкреВрд░реНрдгрд╛рдВрдХ [тИТ2┬│┬╣тИТ1, 2┬│┬╣тИТ1] рд╢реНрд░реЗрдгреА рдХреЗ рднреАрддрд░ рд╣реИ, рддрдм рддрдХ TeX рд╢реВрдиреНрдп рдХреА рдПрдХ рдордирдорд╛рдиреЗ рдврдВрдЧ рд╕реЗ рд▓рдВрдмреА рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реЗ рд╕рдХрддрд╛ рд╣реИред

@ bastien-roucaries @blefloch рдореИрдВ рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рдпрд╛ рдСрдХреНрдЯрд▓ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкреВрд░реНрдгрд╛рдВрдХ рдирд╣реАрдВ рднреВрд▓реВрдВрдЧрд╛ред рдФрд░

-`a

рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рднреА рд╣реИред

l3bitset \__bitset_test_digits:nTF рдореЗрдВ рдЕрдВрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрдВрддрд░рд┐рдХ рдкрд░реАрдХреНрд╖рдг рд╣реИред рдпрд╣ рд╕рдВрдХреЗрддреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рддрд╛ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдерд╛ рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдкреВрд░реНрдгрд╛рдВрдХ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЛ рд╕рдВрднрд╛рд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЬреИрд╕рд╛ рдХрд┐ @ eg9 рдиреЗ рдЕрднреА рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рд╣реИ, рдпрд╣рд╛рдБ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рдХреНрдпрд╛ рд╣реИ? рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрддрд░ рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рд╣реИ рдЬреЛ рдЕрдВрдХреЛрдВ рдХреА рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ, рдпрд╛ рдПрдХ рдЬрд╛рдБрдЪ рд╣реИ рдХрд┐ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдПрдХ expl3 рдкреВрд░реНрдгрд╛рдВрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд▓рд┐рдП рдПрдХ рдорд╛рдиреНрдп рдЗрдирдкреБрдЯ рд╣реИред рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдПрдХ expl3 рд╕рдВрджрд░реНрдн рдореЗрдВ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧреА рд▓рдЧрддрд╛ рд╣реИ, рдФрд░ рдореВрд▓ рд░реВрдк рд╕реЗ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ \numexpr#1 рдХреЗ рдмрд╛рдж рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрдЪрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдВрдХреЛрдВ рдХреЗ рд╢рд╛рдмреНрджрд┐рдХ рддрд╛рд░реЛрдВ рдХреА рдзреАрдореА рдЬрд╛рдВрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреАред

@davidcarlisle рдпрд╣ рдмрдЧ рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рджреВрд╕рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдореИрдВ L3 рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдкрд░рдд рдХреЛ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд╣реВрдВ рдЬреЛ (рд╕рдВрднрд╡рддрдГ) рд╡рд┐рд╢реЗрд╖ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реИрдВ рд▓реЗрдХрд┐рди рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓реЛрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдПрдХ рдРрд╕рд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИред рдЕрдЧрд░ рд╣рдо рдЙрд╕рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдХрд╣рд╛рдВ рдЦрддреНрдо рд╣реЛрддреЗ рд╣реИрдВ? рддрдм рд╣рдореЗрдВ рдХрд┐рддрдиреЗ рд╡рд┐рд╢реЗрд╖ "рдХреНрдпрд╛ рдпрд╣ рдХреБрдЫ X рд╣реИ" рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рдЗрд╕ рдкрд░ рдореЗрд░рд╛ рд╡реЛрдЯ рдирд╣реАрдВ рд╣реИ; рдореВрд▓ рднрд╛рд╖рд╛ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВред

@FrankMittelbach рдпрд╣ рдЬрд╛рдирдирд╛ рдХрд┐ рд╣рдо рдХреБрдЫ рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВ TL рдкрд░ рдЙрдкрдпреЛрдЧреА рд╣реИред рджреВрд╕рд░рд╛ рд░реЗрдЧреЗрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдиреБрдХрд╕рд╛рди рдХреЗ рд╕рд╛рде рдХрд┐ рдпрд╣ рд╡рд┐рд╕реНрддреГрдд рд╕рдВрджрд░реНрдн рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ (рдФрд░ рдореБрдЭреЗ рдЗрд╕ рдкрд░реАрдХреНрд╖рдг рдХреЛ рд╡рд┐рд╕реНрддреГрдд рд╕рдВрджрд░реНрдн рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ)

рдЗрд╕рдореЗрдВ рдХреЛрдИ рд╢рдХ рдирд╣реАрдВред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рдпрд╣ рдореВрд▓ рднрд╛рд╖рд╛ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдХреА рдЧрд╛рд░рдВрдЯреА рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдЙрдкрдпреЛрдЧреА рд╣реИ (рдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬрд░реВрд░рдд рдкрдбрд╝рдиреЗ рдкрд░ рдХреЗрд╡рд▓ рдХреБрдЫ рдкреИрдХреЗрдЬ рдХреЛрдб рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИ)? рдпрд╣рд╛рдВ рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣реА рд╕рд╡рд╛рд▓ рд╣реИ рдФрд░ рдЕрдм рддрдХ рдореИрдВрдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕реЗ рддрд░реНрдХ рдирд╣реАрдВ рджреЗрдЦреЗ рд╣реИрдВ рдЬреЛ рдЗрд╕реЗ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рд╣реЛрдВред

рдЖрдк "рдХреНрдпрд╛ рдпрд╣ рдПрдХ рдЖрдпрд╛рдо рд╣реИ", "рдХреНрдпрд╛ рдпрд╣ рд╕реНрдХрд┐рдк рдХреЗ рд░реВрдк рдореЗрдВ рд╣реИ", "рдХреНрдпрд╛ рдпрд╣ рд╕рд┐рд░реНрдл рдЕрдХреНрд╖рд░ рд╣реИ", "рдХреНрдпрд╛ рдЗрд╕рдореЗрдВ рдЧреИрд░-рдЕрд╕реАрд╕реА рд╡рд░реНрдг рд╣реИрдВ", "рдХреНрдпрд╛ рдпрд╣ рдПрдХ рддрд┐рдерд┐ рдкреНрд░рд╛рд░реВрдк рд╣реИ", рдФрд░, рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реА рдкреНрд░рд╢реНрди рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВред рдФрд░ ... рд╕рдВрднрд╛рд╡рдирд╛рдПрдВ рдХрд╛рдлреА рдЦреБрд▓реА рд╣реИрдВ рдФрд░ рдЙрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрддрд░ рдХреЗ рд▓рд┐рдП рдЖрдк рдПрдХ рдпрд╛ рджреЛ рдЙрдкрдпреЛрдЧ рдХреЗрд╕ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди 99% рдмрд╛рд░ рд╡реЗ рд╡рд╣реАрдВ рдмреИрдареЗрдВрдЧреЗ рдФрд░ рдЬрдЧрд╣ рд▓реЗрдВрдЧреЗред рдФрд░ рдЬрдмрдХрд┐ рдЕрдВрддрд░рд┐рдХреНрд╖ рдПрдХ рдкреНрд░реАрдорд┐рдпрдо рдирд╣реАрдВ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдЕрддреАрдд рдореЗрдВ рдерд╛, рдпрд╣ рдЕрднреА рднреА рдХреЛрд░ рд╕рд┐рд╕реНрдЯрдо рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдФрд░ рд░рдЦрд░рдЦрд╛рд╡ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рддреЛ рдлрд┐рд░, рдХреНрдпрд╛ рдпрд╣ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╡реНрдпрд╛рдкрдХ рдФрд░ рдмрд╛рд░-рдмрд╛рд░ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рде рд╣реИ? рдпрджрд┐ рд╣рд╛рдВ, рдФрд░ рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рдареЛрд╕ рддрд░реНрдХ рд╕реБрдирддрд╛ рд╣реВрдВ рддреЛ рдЗрд╕реЗ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдореНрдореАрджрд╡рд╛рд░ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдЗрд╕реЗ рдЙрд╕ рдХреЛрдб рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рд╕реЗ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

@FrankMittelbach рд╕рдорд╕реНрдпрд╛ рдпрд╣рд╛рдБ biblatex рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИред рд╣рдореЗрдВ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдХреБрдЫ рдлрд╝реАрд▓реНрдб рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рд╣реИ (рдкреГрд╖реНрда рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪреЗрдВ) рдФрд░ рдЗрд╕рд▓рд┐рдП рд╡рд┐рд╕реНрддрд╛рд░ рдпреЛрдЧреНрдп рд╕рдВрджрд░реНрдн рдореЗрдВ рдЙрд╕ рдкрд░ рдХреБрдЫ рдЕрдВрдХрдЧрдгрд┐рдд рдХрд░реЗрдВред
рдареАрдХ рд╣реИ рддреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реИ рд▓реЗрдХрд┐рди рдореБрд╢реНрдХрд┐рд▓ рд╣рд┐рд╕реНрд╕рд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдпреЛрдЧреНрдп рд╕рд╛рдорд╛рди рд╣реИред
рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдкрд░реАрдХреНрд╖рдг рдХреЛ рдХреЗрд╡рд▓ рдкреНрд░рд▓реЗрдЦрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкрдврд╝рдирд╛ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ biblatex рдХреЛрд░ рд╕реЛрдЪрддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдПрдХ рдЯреЛрдХрди рд╣реИ рддреЛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ (рд╕рдВрдЧрдд рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛) рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИред

рд╕рдорд╛рдзрд╛рди рд░реЗрдЧреЗрдХреНрд╕ рд╡рд┐рд╕реНрддрд╛рд░ рдпреЛрдЧреНрдп рдкреНрд░рд╕реНрддреБрдд рдХрд░рдирд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛)

рдореБрдЭреЗ рдЧрд▓рдд рдордд рд╕рдордЭреЛ, рдореИрдВ рдЗрд╕рдХреЗ рдЦрд┐рд▓рд╛рдл рдмрд┐рд▓реНрдХреБрд▓ рднреА рдирд╣реАрдВ рд╣реВрдВ рдХрд┐ рд╣рдо рдЗрд╕ рдХрд╛рдо рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдЗрдмрд┐рд▓рдЯреЗрдХреНрд╕ рдХреА рддрд░рдл рд╕реЗ рдЖрдкрдХреА рдорджрдж рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдХреЛрд░ рдкрд░ рд╣рдо рдХреБрдЫ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдЦреЛ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдХрд┐ рдЗрд╕рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореВрд▓ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдореЗрд░рд╛ рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдХреЛрд░ рдХреЛ рдЦреБрдж рдХреЛ "рд╕рд╛рдорд╛рдиреНрдп" рдЬрд░реВрд░рддреЛрдВ рддрдХ рд╕реАрдорд┐рдд рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╡рд┐рд╢реЗрд╖ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА рд╕рд╛рдорд╛рдиреНрдп рдЖрдзрд╛рд░ рдкреНрд░рджрд╛рди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдХрд┐ рдмрд╣реБрдд рд╣реА рдХрдо рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЬрдм biblatex рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ)ред рдЕрдиреНрдпрдерд╛ рд╣рдо рдЕрдВрддрддрдГ рдЖрджреЗрд╢реЛрдВ рдХреЗ рдПрдХ рдмрд╣реБрдд рдлреВрд▓реЗ рд╣реБрдП рд╕реЗрдЯ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред

рдЪреАрдЬреЛрдВ рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЖрдо рддреМрд░ рдкрд░ рдПрдХ рднрд╛рд░реА рдХреАрдордд рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИ, рдпрд╛ рддреЛ рд╕реАрдорд┐рдд рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдпрд╛ рдЧрддрд┐ рдХреА рд╣рд╛рдирд┐ рдпрд╛ рджреЛрдиреЛрдВ рдореЗрдВред рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рд░реЗрдЧреЗрдХреНрд╕ рдХреЛ рд╡рд┐рд╕реНрддрд╛рд░ рдпреЛрдЧреНрдп рдмрдирд╛рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЙрд╕ рдкрд░ @blefloch рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рджреАред

рд▓реЗрдХрд┐рди рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЬрд╛рдиреЗ рдмрд┐рдирд╛: рдХрд╣реАрдВ рдЖрдкрдХреЗ рдХреНрд╖реЗрддреНрд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдпрд╣ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЗрд╕рд▓рд┐рдП рдЙрд╕ рд╕реНрддрд░ рдкрд░ рдЖрдк рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдпрд╛ рдХреБрдЫ рдФрд░ рд╣реИ рдФрд░ рдЙрд╕ рддрдереНрдп рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд░реЗрдВ рдЬреЛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдлрд┐рд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдП (рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдорджрдж рдХрд░рддрд╛ рд╣реИ рдпрд╛ рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╛рд░-рдмрд╛рд░ рдХреНрд╖реЗрддреНрд░ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рд╕реЗ рдмрдЪ рдЬрд╛рдПрдЧрд╛)ред

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

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

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

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

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

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

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