Re: [NTG-context] Converting counters?

2008-04-02 Thread Wolfgang Schuster
On Tue, Apr 1, 2008 at 11:04 AM, Wolfgang Schuster
[EMAIL PROTECTED] wrote:
 On Tue, Apr 1, 2008 at 10:49 AM, Wolfgang Schuster
 [EMAIL PROTECTED] wrote:
  On Tue, Apr 1, 2008 at 9:56 AM, Zhichu Chen [EMAIL PROTECTED] 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
___
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
___


[NTG-context] Converting counters?

2008-04-01 Thread 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


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

___
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
___


Re: [NTG-context] Converting counters?

2008-04-01 Thread Wolfgang Schuster
Hi Chen,

You could use \chinesenumber from font-chi.tex

Wolfgang

On Tue, Apr 1, 2008 at 9:18 AM, Zhichu Chen [EMAIL PROTECTED] 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
___


Re: [NTG-context] Converting counters?

2008-04-01 Thread 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.

On Tue, Apr 1, 2008 at 3:41 PM, Wolfgang Schuster 
[EMAIL PROTECTED] wrote:

 Hi Chen,

 You could use \chinesenumber from font-chi.tex

 Wolfgang

 On Tue, Apr 1, 2008 at 9:18 AM, Zhichu Chen [EMAIL PROTECTED] 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

___
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
___


Re: [NTG-context] Converting counters?

2008-04-01 Thread Wolfgang Schuster
On Tue, Apr 1, 2008 at 9:56 AM, Zhichu Chen [EMAIL PROTECTED] 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.

\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
___
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
___


Re: [NTG-context] Converting counters?

2008-04-01 Thread Wolfgang Schuster
On Tue, Apr 1, 2008 at 10:49 AM, Wolfgang Schuster
[EMAIL PROTECTED] wrote:
 On Tue, Apr 1, 2008 at 9:56 AM, Zhichu Chen [EMAIL PROTECTED] 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
___


Re: [NTG-context] Converting counters?

2008-04-01 Thread Zhichu Chen
Thanks Wolfgang, it's perfect.

On Tue, Apr 1, 2008 at 5:04 PM, Wolfgang Schuster 
[EMAIL PROTECTED] wrote:

 On Tue, Apr 1, 2008 at 10:49 AM, Wolfgang Schuster
 [EMAIL PROTECTED] wrote:
  On Tue, Apr 1, 2008 at 9:56 AM, Zhichu Chen [EMAIL PROTECTED]
 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

___
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
___