Hi, I'm trying to convert the counter to Chinese character one on one, like 0->a, 1->b, etc., so 10 will be "ba" (I use a, b, c, . . . to denote the Chinese glyphs which makes more sense for you). I used some codes like: ====================================================== \def\ChineseZero {o} \def\ChineseOne {a} \def\ChineseTwo {b} \def\ChineseThree{c} \def\ChineseFour {d} \def\ChineseFive {e} \def\ChineseSix {f} \def\ChineseSeven{g} \def\ChineseEight{h} \def\ChineseNine {i} \unexpanded\def\zhnumber {\bgroup \catcode`\0=\active \uccode`\~=`\0 \uppercase{\let~\ChineseZero}% \catcode`\1=\active \uccode`\~=`\1 \uppercase{\let~\ChineseOne}% \catcode`\2=\active \uccode`\~=`\2 \uppercase{\let~\ChineseTwo}% \catcode`\3=\active \uccode`\~=`\3 \uppercase{\let~\ChineseThree}% \catcode`\4=\active \uccode`\~=`\4 \uppercase{\let~\ChineseFour}% \catcode`\5=\active \uccode`\~=`\5 \uppercase{\let~\ChineseFive}% \catcode`\6=\active \uccode`\~=`\6 \uppercase{\let~\ChineseSix}% \catcode`\7=\active \uccode`\~=`\7 \uppercase{\let~\ChineseSeven}% \catcode`\8=\active \uccode`\~=`\8 \uppercase{\let~\ChineseEight}% \catcode`\9=\active \uccode`\~=`\9 \uppercase{\let~\ChineseNine}% \loggingall \dozhnumber } \def\stripunwantedspaces{} \def\dozhnumber#1% {\expandafter\scantokens\expandafter {\detokenize{#1\stripunwantedspaces}}\egroup} ====================================================== It works fine with \zhnumber{15}, it gives "ae" which is exactly what I want. But it won't work in the following situation: ++++++++++++++++++++++++++ \newcount\tcpageno \advance\tcpageno15 \zhnumber{\number\tcpageno} ++++++++++++++++++++++++++ I know it's not weird, I just don't know how to expand the counter to number. Thank you in advance. -- Best Regards Chen ---------------------------------------------------------------- Zhi-chu Chen | Shanghai Synchrotron Radiation Facility No. 2019 | Jialuo Rd. | Jiading | Shanghai | P.R. China tel: 086 21 5955 3405 | zhichu.chen.googlepages.com | www.sinap.ac.cn ----------------------------------------------------------------
Hi Chen,
You could use \chinesenumber from font-chi.tex
Wolfgang
On Tue, Apr 1, 2008 at 9:18 AM, Zhichu Chen
Hi,
I'm trying to convert the counter to Chinese character one on one, like 0->a, 1->b, etc., so 10 will be "ba" (I use a, b, c, . . . to denote the Chinese glyphs which makes more sense for you). I used some codes like: ====================================================== \def\ChineseZero {o} \def\ChineseOne {a} \def\ChineseTwo {b} \def\ChineseThree{c} \def\ChineseFour {d} \def\ChineseFive {e} \def\ChineseSix {f} \def\ChineseSeven{g} \def\ChineseEight{h} \def\ChineseNine {i}
\unexpanded\def\zhnumber {\bgroup \catcode`\0=\active \uccode`\~=`\0 \uppercase{\let~\ChineseZero}% \catcode`\1=\active \uccode`\~=`\1 \uppercase{\let~\ChineseOne}% \catcode`\2=\active \uccode`\~=`\2 \uppercase{\let~\ChineseTwo}% \catcode`\3=\active \uccode`\~=`\3 \uppercase{\let~\ChineseThree}% \catcode`\4=\active \uccode`\~=`\4 \uppercase{\let~\ChineseFour}% \catcode`\5=\active \uccode`\~=`\5 \uppercase{\let~\ChineseFive}% \catcode`\6=\active \uccode`\~=`\6 \uppercase{\let~\ChineseSix}% \catcode`\7=\active \uccode`\~=`\7 \uppercase{\let~\ChineseSeven}% \catcode`\8=\active \uccode`\~=`\8 \uppercase{\let~\ChineseEight}% \catcode`\9=\active \uccode`\~=`\9 \uppercase{\let~\ChineseNine}% \loggingall \dozhnumber }
\def\stripunwantedspaces{}
\def\dozhnumber#1% {\expandafter\scantokens\expandafter {\detokenize{#1\stripunwantedspaces}}\egroup} ====================================================== It works fine with \zhnumber{15}, it gives "ae" which is exactly what I want. But it won't work in the following situation: ++++++++++++++++++++++++++ \newcount\tcpageno \advance\tcpageno15 \zhnumber{\number\tcpageno} ++++++++++++++++++++++++++ I know it's not weird, I just don't know how to expand the counter to number.
Thank you in advance.
-- Best Regards Chen
Yes, only I don't need that complex. I mean \chinesenumber{123} will give "one hundred and twenty-three" but all I want is "one two three." Besides, I don't like to copy such long codes since I really don't want to load font-chi.tex which gives weird spacing problems while typesetting Chinese along with English. Anyway, I'd love to learn something rather than to use something. Thanks. On Tue, Apr 1, 2008 at 3:41 PM, Wolfgang Schuster < schuster.wolfgang@googlemail.com> wrote:
Hi Chen,
You could use \chinesenumber from font-chi.tex
Wolfgang
On Tue, Apr 1, 2008 at 9:18 AM, Zhichu Chen
wrote: Hi,
I'm trying to convert the counter to Chinese character one on one, like 0->a, 1->b, etc., so 10 will be "ba" (I use a, b, c, . . . to denote the Chinese glyphs which makes more sense for you). I used some codes like: ====================================================== \def\ChineseZero {o} \def\ChineseOne {a} \def\ChineseTwo {b} \def\ChineseThree{c} \def\ChineseFour {d} \def\ChineseFive {e} \def\ChineseSix {f} \def\ChineseSeven{g} \def\ChineseEight{h} \def\ChineseNine {i}
\unexpanded\def\zhnumber {\bgroup \catcode`\0=\active \uccode`\~=`\0 \uppercase{\let~\ChineseZero}% \catcode`\1=\active \uccode`\~=`\1 \uppercase{\let~\ChineseOne}% \catcode`\2=\active \uccode`\~=`\2 \uppercase{\let~\ChineseTwo}% \catcode`\3=\active \uccode`\~=`\3 \uppercase{\let~\ChineseThree}% \catcode`\4=\active \uccode`\~=`\4 \uppercase{\let~\ChineseFour}% \catcode`\5=\active \uccode`\~=`\5 \uppercase{\let~\ChineseFive}% \catcode`\6=\active \uccode`\~=`\6 \uppercase{\let~\ChineseSix}% \catcode`\7=\active \uccode`\~=`\7 \uppercase{\let~\ChineseSeven}% \catcode`\8=\active \uccode`\~=`\8 \uppercase{\let~\ChineseEight}% \catcode`\9=\active \uccode`\~=`\9 \uppercase{\let~\ChineseNine}% \loggingall \dozhnumber }
\def\stripunwantedspaces{}
\def\dozhnumber#1% {\expandafter\scantokens\expandafter {\detokenize{#1\stripunwantedspaces}}\egroup} ====================================================== It works fine with \zhnumber{15}, it gives "ae" which is exactly what I want. But it won't work in the following situation: ++++++++++++++++++++++++++ \newcount\tcpageno \advance\tcpageno15 \zhnumber{\number\tcpageno} ++++++++++++++++++++++++++ I know it's not weird, I just don't know how to expand the counter to number.
Thank you in advance.
-- Best Regards Chen
___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://tex.aanhet.net archive : https://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net
___________________________________________________________________________________
-- Best Regards Chen ---------------------------------------------------------------- Zhi-chu Chen | Shanghai Synchrotron Radiation Facility No. 2019 | Jialuo Rd. | Jiading | Shanghai | P.R. China tel: 086 21 5955 3405 | zhichu.chen.googlepages.com | www.sinap.ac.cn ----------------------------------------------------------------
On Tue, Apr 1, 2008 at 9:56 AM, Zhichu Chen
Yes, only I don't need that complex. I mean \chinesenumber{123} will give "one hundred and twenty-three" but all I want is "one two three." Besides, I don't like to copy such long codes since I really don't want to load font-chi.tex which gives weird spacing problems while typesetting Chinese along with English. Anyway, I'd love to learn something rather than to use something.
Thanks.
\def\dododozhnumber#1% {\ifcase#1 a\or b\or c\or d\or e\or f\or g\or i\or h\or i\fi \dozhnumber} \def\zhnumber#1% {\dozhnumber#1\endzhnumber} \def\endzhnumber{\endzhnumber} \def\dozhnumber {\futurelet\next\dodozhnumber} \def\dodozhnumber {\ifx\next\endzhnumber \expandafter\gobbleoneargument \else \expandafter\dododozhnumber \fi} \starttext \zhnumber{123} \stoptext Wolfgang
On Tue, Apr 1, 2008 at 10:49 AM, Wolfgang Schuster
On Tue, Apr 1, 2008 at 9:56 AM, Zhichu Chen
wrote: Yes, only I don't need that complex. I mean \chinesenumber{123} will give "one hundred and twenty-three" but all I want is "one two three." Besides, I don't like to copy such long codes since I really don't want to load font-chi.tex which gives weird spacing problems while typesetting Chinese along with English. Anyway, I'd love to learn something rather than to use something.
Thanks.
A slightly modified version. You could now also use counter values. \def\dododozhnumber#1% {\ifcase#1 a\or b\or c\or d\or e\or f\or g\or i\or h\or i\fi} \def\zhnumber#1% {\expandafter\dozhnumber#1\endzhnumber} \def\endzhnumber{\endzhnumber} \def\dozhnumber {\futurelet\next\dodozhnumber} \def\dodozhnumber {\ifx\next\endzhnumber \let\next\gobbleoneargument \else \def\next##1{\dododozhnumber{##1}\dozhnumber}% \fi\next} \starttext \zhnumber{01234} \zhnumber{\number\pageno} \stoptext Wolfgang
Thanks Wolfgang, it's perfect. On Tue, Apr 1, 2008 at 5:04 PM, Wolfgang Schuster < schuster.wolfgang@googlemail.com> wrote:
On Tue, Apr 1, 2008 at 10:49 AM, Wolfgang Schuster
wrote: On Tue, Apr 1, 2008 at 9:56 AM, Zhichu Chen
wrote: Yes, only I don't need that complex. I mean \chinesenumber{123} will give "one hundred and twenty-three" but all I want is "one two three." Besides, I don't like to copy such long codes since I really don't want to load font-chi.tex which gives weird spacing problems while typesetting Chinese along with English. Anyway, I'd love to learn something rather than to use something.
Thanks.
A slightly modified version.
You could now also use counter values.
\def\dododozhnumber#1% {\ifcase#1 a\or b\or c\or d\or e\or f\or g\or i\or h\or i\fi}
\def\zhnumber#1% {\expandafter\dozhnumber#1\endzhnumber}
\def\endzhnumber{\endzhnumber}
\def\dozhnumber {\futurelet\next\dodozhnumber}
\def\dodozhnumber {\ifx\next\endzhnumber \let\next\gobbleoneargument \else \def\next##1{\dododozhnumber{##1}\dozhnumber}% \fi\next}
\starttext \zhnumber{01234}
\zhnumber{\number\pageno} \stoptext
Wolfgang
___________________________________________________________________________________ If your question is of interest to others as well, please add an entry to the Wiki!
maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://tex.aanhet.net archive : https://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net
___________________________________________________________________________________
-- Best Regards Chen ---------------------------------------------------------------- Zhi-chu Chen | Shanghai Synchrotron Radiation Facility No. 2019 | Jialuo Rd. | Jiading | Shanghai | P.R. China tel: 086 21 5955 3405 | zhichu.chen.googlepages.com | www.sinap.ac.cn ----------------------------------------------------------------
On Tue, Apr 1, 2008 at 11:04 AM, Wolfgang Schuster
On Tue, Apr 1, 2008 at 10:49 AM, Wolfgang Schuster
wrote: On Tue, Apr 1, 2008 at 9:56 AM, Zhichu Chen
wrote: Yes, only I don't need that complex. I mean \chinesenumber{123} will give "one hundred and twenty-three" but all I want is "one two three." Besides, I don't like to copy such long codes since I really don't want to load font-chi.tex which gives weird spacing problems while typesetting Chinese along with English. Anyway, I'd love to learn something rather than to use something.
Thanks.
Another solution using \afterassignment. The number is now removed from the input but you have to use a if test, number tests did not work. \def\zhnumber#1% {\expandafter\dozhnumber#1\endzhnumber} \def\endzhnumber{\endzhnumber} \def\dozhnumber {\afterassignment\dodozhnumber\let\next= } \def\dodozhnumber {\ifx\next\endzhnumber\let\next\relax \else \if\next 0a\else \if\next 1b\else \if\next 2c\else \if\next 3d\else \if\next 4e\else \if\next 5f\else \if\next 6g\else \if\next 7h\else \if\next 8i\else \if\next 9j\relax \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi \let\next\dozhnumber \fi\next} \starttext \zhnumber{01234} \zhnumber{\number\pageno} \stoptext Wolfgang
participants (2)
-
Wolfgang Schuster
-
Zhichu Chen