Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

改进 zhnumber 宏包的可展性 #162

Closed
leo-liu opened this issue Mar 16, 2015 · 2 comments
Closed

改进 zhnumber 宏包的可展性 #162

leo-liu opened this issue Mar 16, 2015 · 2 comments

Comments

@leo-liu
Copy link
Member

leo-liu commented Mar 16, 2015

Original issue 163 created by sobenlee on 2014-09-14T13:57:29.000Z:

目前 \zhnumber 在 XeTeX 和 LuaTeX 下都是 x 可展的,不是 f 可展,可以进一步改进为展开两次就可以得到结果。这样的话,使用下面的结构

\cs_new:Npn \zhnum_number:n #1
  {
    \etex_unexpanded:D \exp_after:wN
      {
        \tex_romannumeral:D
        ...
      }
  }

也能保证在 pdfTeX 下面可以直接使用在 \edef 里,不用担心汉字的过分展开问题。

f 可展在 XeTeX 和 LuaTeX 下都没有问题,但在 pdfTeX 下,由于汉字首字节是活动字符,f 展开会有问题。

实现上,要频繁交换参数,会影响到效率。另外,zhnumber 并不是一个编程工具宏包,对可展性的要求不是那么高。

@leo-liu leo-liu self-assigned this Mar 16, 2015
@leo-liu
Copy link
Member Author

leo-liu commented Mar 16, 2015

Comment #1 originally posted by LeoLiu.PKU on 2014-09-14T16:51:05.000Z:

我没意见。
其实对效率要求也不是很高,正常情况下,这东西使用没那么多,一页里面有四五个用例就算多的了。于是做 10000 个需要多花多久?

@leo-liu
Copy link
Member Author

leo-liu commented Mar 16, 2015

Comment #2 originally posted by sobenlee on 2014-09-14T17:26:42.000Z:

现在还没有实现出来,所以还没法测,可以做好后,回过头来看。

感觉上总是会慢一些,但对一般的十几位数字影响应该不大。

在我的老电脑上,根据 l3benchmark 的测试结果,v2.1 的 \zhnumber 转化一个一万位的数字需要大约 4 秒钟。v2.1 之前由于需要重复递归取出 4 位数字,所以要慢很多,用了大约 24 秒。我们改进可展性之后,应该不会比 v2.1 之前的结果还差。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants