LaTeX3 - \__seq_use_setup:w 的使用与其定义不符

LaTeX3 - \__seq_use_setup:w 的使用与其定义不符

我想要制作一个名为aminosymbCTAN 的简单包,因为我有用于排版氨基酸和残基编号的宏(在残基名称上方有可选符号,如*,从一个旧问题改进:氨基酸名称的自定义星号)。我想写入包,expl3但到目前为止我的努力还不够。我有以下不起作用的 MWE:

\documentclass{article}

\ExplSyntaxOn

\NewDocumentCommand{\AminoAcidPrinter}{mm}
    {
        \aminoacid_printer:n { #1 #2 }
    }

\str_new:N \s__aminoacid_printer_str

\cs_new_protected:Nn \aminoacid_printer:n
    {
        \str_clear:N \s__aminoacid_printer_str
        \tl_map_function:nN { #1 } \__aminoacid_printer_str_add:n
        \str_use:Nn \s__aminoacid_printer_str
    }

\cs_new_protected:Nn \__aminoacid_printer_str_add:n
    {
    \str_put_right:Nx \s__aminoacid_printer_str
    {
        \str_case:nn { #1 }
        {
        {HIS}{His}
        {His}{His}
        {H}{His}
        {h}{His}
        }
    }
    }

\ExplSyntaxOff

\begin{document}
\noindent\AminoAcidPrinter{h}{442}\newline
\AminoAcidPrinter{HIS}{442}\newline
\AminoAcidPrinter{His}{442}\newline
\AminoAcidPrinter{H}{442}\newline
\end{document}

所有四个选项都应打印出相同的输出,即His 442。代码本身不起作用,第一个错误是

Undefined control sequence.
\aminoacid_printer:n ...ter_str_add:n \str_use:Nn 
                                                  \s__aminoacid_printer_str 

虽然这些信息很有帮助,但我不确定如何继续,也不确定如何管理 中的第二个参数\NewDocumentCommand。我甚至不确定我是否应该使用字符串,或者这是否是标记/其他数据类型。请问我如何才能让此文档针对所有四个不同的输入\s__进行编译和打印?His 442

我是新手expl3,并且已经阅读过LaTeX3 接口但这是一个陡峭的学习曲线,我不会介意一个可以工作的基本的文档,我可以在此基础上构建我的宏,expl3加上关于这个 MWE 的有用提示。

答案1

完全不清楚你想让这段代码做什么,但是它运行时没有错误,

在此处输入图片描述

\documentclass{article}

\ExplSyntaxOn

\NewDocumentCommand{\AminoAcidPrinter}{mm}
    {
        \aminoacid_printer:nn { #1 }{ #2 }
    }

\str_new:N \l__aminoacid_printer_str

\cs_new_protected:Nn \aminoacid_printer:nn
    {
        \str_clear:N \l__aminoacid_printer_str
        \tl_map_function:nN { #1 } \__aminoacid_printer_str_add:n
        \str_use:N \l__aminoacid_printer_str
         ???
        \str_clear:N \l__aminoacid_printer_str
        \tl_map_function:nN { #2 } \__aminoacid_printer_str_add:n
        \str_use:N \l__aminoacid_printer_str
    }

\cs_new_protected:Nn \__aminoacid_printer_str_add:n
    {
    \str_put_right:Nx \l__aminoacid_printer_str
    {
        \str_case:nn { #1 }
        {
        {HIS}{His}
        {His}{His}
        {H}{His}
        {h}{His}
        }
    }
    }

\ExplSyntaxOff

\begin{document}
\noindent\AminoAcidPrinter{h}{442}\newline
\AminoAcidPrinter{HIS}{442}\newline
\AminoAcidPrinter{His}{442}\newline
\AminoAcidPrinter{H}{442}
\end{document}

相关内容