3源代码说明33
618619620621
\\xdef\\CTEX@high{}%\\xdef\\CTEX@yi{}%\\fi}
\\CTEX@processnumber中文数字处理命令\\CTEX@processnumber处理四位以内的数字,并将得到的中文数字存放在第一个参数中。
622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659
\\def\\CTEX@processnumber#1#2{%\\CTEX@zero@false%
\\CTEX@q#2\\relax\\CTEX@r#2\\relax%
\\divide\\CTEX@q\\@m\\ifnum\\CTEX@q=\\z@\\ifCTEX@previous@\\CTEX@zero@true\\fi\\else
\\ifCTEX@zero@
\\CTEX@appendstring{#1}{\\CTEX@zero}%\\fi
\\CTEX@appendnumber{#1}{\\CTEX@q}%
\\CTEX@appendstring{#1}{\\CTEX@thousand}%\\CTEX@previous@true\\CTEX@zero@false\\fi%
\\multiply\\CTEX@q\\@m
\\advance\\CTEX@r-\\CTEX@q\\CTEX@q\\CTEX@r%
\\divide\\CTEX@q100\\relax\\ifnum\\CTEX@q=\\z@\\ifCTEX@previous@\\CTEX@zero@true\\fi\\else
\\ifCTEX@zero@
\\CTEX@appendstring{#1}{\\CTEX@zero}%\\fi
\\CTEX@appendnumber{#1}{\\CTEX@q}%
\\CTEX@appendstring{#1}{\\CTEX@hundred}%\\CTEX@previous@true\\CTEX@zero@false
3源代码说明34
660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697
\\fi%
\\multiply\\CTEX@q100
\\advance\\CTEX@r-\\CTEX@q\\CTEX@q\\CTEX@r%
\\divide\\CTEX@q10\\relax\\ifnum\\CTEX@q=\\z@\\ifCTEX@previous@\\CTEX@zero@true\\fi\\else
\\ifCTEX@zero@
\\CTEX@appendstring{#1}{\\CTEX@zero}%\\fi
\\ifnum\\CTEX@q=\\@ne\\ifCTEX@previous@
\\CTEX@appendstring{#1}{\\CTEX@one}%\\fi\\else
\\CTEX@appendnumber{#1}{\\CTEX@q}%\\fi
\\CTEX@appendstring{#1}{\\CTEX@ten}%\\CTEX@previous@true\\CTEX@zero@false\\fi%
\\multiply\\CTEX@q10
\\advance\\CTEX@r-\\CTEX@q%
\\ifnum\\CTEX@r=\\z@\\else
\\ifCTEX@zero@
\\CTEX@appendstring{#1}{\\CTEX@zero}%\\fi
\\CTEX@appendnumber{#1}{\\CTEX@r}%\\CTEX@previous@true\\fi}
\\CTEXnumber中文数字处理命令\\CTEXnumber将第二个参数中的数字转换为中文并保存在第一个参数中。
698699700701
\\DeclareRobustCommand\\CTEXnumber[2]{%\\def#1{}%
\\CTEX@null@false%
3源代码说明35
702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739
\\CTEX@q#2\\relax%
\\ifnum\\CTEX@q<\\z@
\\multiply\\CTEX@q\\m@ne
\\CTEX@appendstring{#1}{\\CTEX@minus}%\\fi%
\\CTEX@previous@false\\CTEX@zero@false%
\\ifnum\\CTEX@q=\\z@
\\CTEX@appendstring{#1}{\\CTEX@zero}%\\else
\\CTEX@splitnumber{\\CTEX@q}%%
\\ifx\\CTEX@yi\\@empty\\else
\\CTEX@processnumber{#1}{\\CTEX@yi}%
\\CTEX@appendstring{#1}{\\CTEX@hundredmillion}%\\fi%
\\ifx\\CTEX@high\\@empty\\else
\\CTEX@processnumber{#1}{\\CTEX@high}%
\\CTEX@appendstring{#1}{\\CTEX@tenthousand}%\\fi%
\\ifx\\CTEX@low\\@empty\\else
\\ifx\\CTEX@yi\\@empty\\else
\\ifx\\CTEX@high\\@empty
\\CTEX@appendstring{#1}{\\CTEX@zero}%thiscatches100002345\\fi\\fi
\\CTEX@processnumber{#1}{\\CTEX@low}%\\fi\\fi}
\\CTEX@getdigit中文数字处理命令\\CTEX@getdigit用于提取最高位的数字。
740741742
\\def\\CTEX@getdigit#1#2\\@nil{%\\edef\\CTEX@tempa{#1}%\\edef\\CTEX@tempb{#2}}
\\CTEXdigits中文数字处理命令\\CTEXdigits将第二个参数中的数字串为中文数字串并保存在第一个参
3源代码说明数中。
743744745746747748749750751752753754755756
36
\\DeclareRobustCommand\\CTEXdigits[2]{%\\def#1{}%
\\CTEX@null@true
\\edef\\CTEX@tempa{}%\\edef\\CTEX@tempb{#2}%\\ifx\\CTEX@tempb\\@empty\\else\\loop
\\expandafter\\CTEX@getdigit\\CTEX@tempb\\@nil\\CTEX@appendnumber{#1}{\\CTEX@tempa}%\\ifx\\CTEX@tempb\\@empty\\else\\repeat\\fi}
\\CTEXcounter\\CTEXcounter用于生成对应于计数器\\FOO的中文数字\\cc@FOO。
757758759760761762
\\DeclareRobustCommand\\CTEXcounter[1]{%\\@ifundefined{c@#1}{}{%
\\CTEXnumber{\\reserved@a}{\\@arabic\\csnamec@#1\\endcsname}%\\expandafter\\expandafter\\expandafter\\def%
\\expandafter\\expandafter\\csnamecc@#1\\endcsname%\\expandafter{\\reserved@a}}}
\\setcounter\\addtocounter\\stepcounter
重新定义\\setcounter和\\addtocounter以及时更新\\cc@FOO。
763764765766767768769770771772773774775776777778779780
\\AtBeginDocument{%\\makeatletter%
\\@ifundefined{CTEX@save@setcounter}{%\\let\\CTEX@save@setcounter\\setcounter%\\def\\setcounter#1#2{%
\\CTEX@save@setcounter{#1}{#2}%\\CTEXcounter{#1}}}{}
\\@ifundefined{CTEX@save@addtocounter}{%
\\let\\CTEX@save@addtocounter\\addtocounter%\\def\\addtocounter#1#2{%
\\CTEX@save@addtocounter{#1}{#2}%\\CTEXcounter{#1}}}{}
\\@ifundefined{CTEX@save@stepcounter}{%\\let\\CTEX@save@stepcounter\\stepcounter%\\def\\stepcounter#1{%
\\CTEX@save@stepcounter{#1}%\\CTEXcounter{#1}}}{}
\\makeatother}