xtemplate-我可以分解我的代码吗?

xtemplate-我可以分解我的代码吗?

下面是一个 MWE,它是 使用的一个小例子xtemplate。此行将在我正在处理的第一个公共包中使用;在我的包中, 的调用\UseTemplate将通过标准命令完成LaTeX我的想法是,如果默认行为不太好,则提出一种通用的方法来生成不同类型的分隔符构造,并使用用户界面进行缩放。

\documentclass[12pt, a4paper]{article}

\usepackage{xtemplate}
\usepackage{amsmath}

\ExplSyntaxOn

\tl_new:N \l_projetmbc_testing_size_left_tl
\tl_new:N \l_projetmbc_testing_size_right_tl
\tl_new:N \l_projetmbc_testing_arg_tl


\cs_new:Npn \l__projetmbc_create_sizes #1 {
  \str_if_eq:NNTF {#1} {normal}
    {
      \tl_set:Nn
        \l_projetmbc_testing_size_left_tl
        {}
  
      \tl_set:Nn 
        \l_projetmbc_testing_size_right_tl
        {}
    }
    {
      \tl_set:Nn
        \l_projetmbc_testing_size_left_tl  
        {\use:c { #1 l}}
  
      \tl_set:Nn 
        \l_projetmbc_testing_size_right_tl
        {\use:c { #1 r}}
    }
}


\DeclareObjectType
  {_projetmbc_testing_}
  {1}

\DeclareTemplateInterface
  {_projetmbc_testing_}
  {projetmbc_testing}
  {1}
  {
    size : choice { normal, big, Big, bigg, Bigg } 
         = normal,
    arg  : tokenlist
  }

\DeclareTemplateCode
  {_projetmbc_testing_}
  {projetmbc_testing}
  {1}
  {
    size = {
      normal = \l__projetmbc_create_sizes{normal}, 
      big    = \l__projetmbc_create_sizes{big},
      Big    = \l__projetmbc_create_sizes{Big},
      bigg   = \l__projetmbc_create_sizes{bigg}, 
      Bigg   = \l__projetmbc_create_sizes{Bigg}
    },
    arg = \l_projetmbc_testing_arg_tl
  }{
    \AssignTemplateKeys

    $
      \tl_use:N \l_projetmbc_testing_size_left_tl
      (
        \dfrac
          {\tl_use:N \l_projetmbc_testing_arg_tl}
          {\tl_use:N \l_projetmbc_testing_arg_tl}
      \tl_use:N \l_projetmbc_testing_size_right_tl
      )
    $
  }

\ExplSyntaxOff


\begin{document}

\section{Size: normal}

\ExplSyntaxOn

\UseTemplate
  {_projetmbc_testing_}
  {projetmbc_testing}
  {
    arg = UUU
  }
  {}

\ExplSyntaxOff


\section{Size: big}

\ExplSyntaxOn

\UseTemplate
  {_projetmbc_testing_}
  {projetmbc_testing}
  {
    size = big,
    arg  = UUU
  }
  {}

\ExplSyntaxOff


\section{Size: Big}

\ExplSyntaxOn

\UseTemplate
  {_projetmbc_testing_}
  {projetmbc_testing}
  {
    size = Big,
    arg  = UUU
  }
  {}

\ExplSyntaxOff


\section{Size: bigg }

\ExplSyntaxOn

\UseTemplate
  {_projetmbc_testing_}
  {projetmbc_testing}
  {
    size = bigg,
    arg  = UUU
  }
  {}

\ExplSyntaxOff


\section{Size: Bigg}

\ExplSyntaxOn

\UseTemplate
  {_projetmbc_testing_}
  {projetmbc_testing}
  {
    size = Bigg,
    arg  = UUU
  }
  {}

\ExplSyntaxOff

\end{document}

我可以对我的代码进行更多的分解吗,特别是以下几行?

\DeclareTemplateCode
  {_projetmbc_testing_}
  {projetmbc_testing}
  {1}
  {
    size = {
      normal = \l__projetmbc_create_sizes{normal}, 
      big    = \l__projetmbc_create_sizes{big},
      Big    = \l__projetmbc_create_sizes{Big},
      bigg   = \l__projetmbc_create_sizes{bigg}, 
      Bigg   = \l__projetmbc_create_sizes{Bigg}
    },
    arg = \l_projetmbc_testing_arg_tl
  }{
    % ...
  }

相关内容