在TeX编程中有都哪些技巧?

如题所述

我们都知道 TeX 的 \romannumeral 可以将随后的阿拉伯数字转化成小写罗马数字。\romannumeral 有这么几个性质:它会展开随后的记号,直到得到一个完整的数字为止;

如果数字不是正整数,它的展开结果为空;000 是 m,2000 是 mm,10000 是 10 个 m。是 1000 的多少倍,就是多少个 m,这是 \ltx@CarNumth 实现的最主要技巧。现在来看 \ltx@CarNumth 的定义:\ltx@CarNumth 由 \romannumeral 启动,使用了性质 1,实现将它展开两次就能得到结果的效果。随后的 3 个 \expandafter 将 \ltx@GobbleNum 展开了两次,\ltx@GobbleNum 也是由 \romannumeral 启动的:这里的 \LTXcmds@num 是 \number 或者 \the\numexpr,用于把参数 #1 转换成阿拉伯数字(记作 n),跟后面的 000 连起来,由 \romannumeral 转换成 n 个 m。\LTXcmds@GobbleNum 是个尾递归:用于生成 n 个 \csname LTXcmds@Gm。最后是由终止了递归。它展开成\LTXcmds@Gm 是吃掉一个参数,然后返回一个 \endcsname,结束前面的 \csname。吃掉 n 个参数之后(\ltx@CarNumth 是得到第 n 个项目,应该只吃掉 n-1 个参数,所以 \ltx@CarNumth 的定义最后有个空的分组用于占位,避免了计算),得到\ltx@zero 是字符常数 0,终止了 \romannumeral 的展开。最后由 \LTXcmds@CarNumth 完成清理工作:TeX 的最大整数是 2147483647,所以 \ltx@CarNumth 最多可以用到 2147483。但是可能远没有到这么多的时候,TeX 的内存就不够了。在我的老笔记本(T9600)上用 l3benchmark 作性能测试,\ltx@CarNumth 要比 \tl_item:nn 快一个数量级。测试用的脚本是如果机器性能好点的话,差异可能没这么明显。就说这么一个例子,你要有兴趣的话,可以去看看 LaTeX3 的源代码文档 source3.pdf,可以说是各种技巧的集大成者,比如上面测试脚本中用到的 \prg_replicate:nn 的实现就极具技巧性。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-12-24

Android Studio是一个Android开发环境,基于IntelliJ IDEA. 类似Eclipse ADT,Android Studio 提供了集成的Android开发工具用于开发和调试。在IDEA的基础上,Android Studio提供  :    

1. 基于Gradle的构建支持。    

2. Android专属的重构和快速修复。    

3. 提示工具以捕获性能、可用性、版本兼容性等问题。    

4. 支持ProGuard和应用签名。    

5. 基于模板的向导来生成常用的Android应用设计和组件。    

6. 功能强大的布局编辑器,可以让你拖拉UI控件并进行效果预览。

针对于发行版的选择。现在只推荐TeX Live。在Windows平台下虽然有MikTeX可以选择,但是因为一些依赖的库实现不一致,很容易出现不可在TeX Live复现的bug,所以一般还是使用TeX Live来进行编译。

本回答被网友采纳
第2个回答  2017-12-24

现在有一些在线版本的TeX环境可以使用。无一例外,都是使用TeX Live作为后端支持的。如果想要得到极为迅速的编译速度和编辑体验,是很难的。大致上和在手机上使用TeX的速度类似。这种东西,只能做应急用以及一些慢性子的人写作用。有些东西还是要做比较实时的视觉检查的,这种情况就最好在实体机上编译。所有的TeX都是慢。唯一的例外是我的TeX。我的TeX有私有版本,主要给一些公司替换MathJax用。其他的TeX之所以慢,是因为系统的I/O问题,在Windows上尤甚。我提供的私有版本都是在内存中操作宏包和文档类的,所以快太多了。

相似回答