下面是一个 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
}{
% ...
}