编写/修改包

编写/修改包

我正在尝试修改一个程序包,它本质上显示一个网格。它使用计数器来增加距离。我想改变每一步的距离,而不是添加一个常数值。事实上,我只是想将当前距离乘以一个常数。

无论如何,我对如何在 TeX 中使用计数器、计算事物以及混合 LaTeX 感到困惑。当我尝试在包中使用\setcounter或时,我收到有关重新定义的错误。\newcounter

我尝试使用该calc包但无法将其与文本混合。

代码

\advance\pos by 1

我不是想将其前进 1,而是想将其前进 1,然后前进 0.5、0.25 等......(这是一个循环)

我甚至尝试将其推进常数 0.5,但出现了错误。(好像只能推进整数量)

我真正想要的是一些关于什么是包以及如何编写包的教程或指导。它是否只支持 TeX 而没有其他特别之处(我对 TeX 了解不多,但已经使用 LaTeX 排版好几年了)?包有什么特别之处吗?一个包中可以混合使用 TeX 和 LaTeX 吗?(似乎不行)

我真正需要知道的是如何进行简单的编程,如循环、变量、计算等......

在我尝试修改的包中,我看到了诸如、、\@whilenum等内容。它们似乎与我感兴趣的东西相对应,但我找不到有关语法或简单示例的任何参考。在 Google 中输入这些内容只会返回一堆使用它们的随机包。\multiply\divide

我现在需要完成两件事。我需要通过几何级数而不是算术级数(乘法而不是加法)来“推进”计数器,并且我需要在两点之间进行线性插值,而不是使用常数。

事实上,如果有人感兴趣的话,我试图修改的包是

http://kasper.phi-sci.com/gchords/

我想要做的是让琴格线像真正的指板一样(或近似地)绘制。让指板的宽度从较低开始逐渐增加(它应该与琴格数量无关)。允许一个人给圆点上色并添加琴格标记(3、5、7、9、12、.... 琴格)。

我宁愿学着自己写。用 C/C++ 之类的语言写会很容易,但我对 TeX 一无所知。

答案1

你可以通过阅读以下文章来开始学习 TeX 编程TEX 编程笔记作者:Christian Feuersänger 博士。这是一本出色的入门指南。然后我建议您继续阅读 Knuth 的 TeXbook。

阅读并掌握这些指南后,修改代码将是小菜一碟,或者您可以将问题缩小到别人可以更轻松地帮助您的程度。

您尝试修改的软件包仍在使用诸如\advance\multiply之类的命令,这些命令是 TeX 基元。使用当前引擎,可以使用dimexpr等更轻松地完成此操作。

答案2

这个答案实际上是我最终做的,因为它容易得多。使用LuaLaTeX!!您可以用 lua 编写一个包,进入真正的编程环境,而不必处理 TeX 执行简单操作时必须经历的所有麻烦。使用 FP 计算一个简单的函数在 TeX 中可能需要 20 多行,而在 lua 中只需 1 行。

  • TeX 不是作为编程语言设计的,而 LuaLaTeX 为 TeX 添加了真正的编程方面(而非黑客)。
  • 它的速度要快得多(根据我的经验,大约快 10 到 100 倍)
  • 更容易维护(如果不是因为可读性
  • 更容易调试(您可以在 lua 中创建一个库,然后在 lua ide 中在 TeX 之外进行调试并获取准确的错误)

luatex 最大的缺点就是你必须使用它并且依赖于 LuaLaTeX 和 Lua 的开发人员。不过这并不是什么大问题。

LuaLaTeX 的作用是让你将排版语言(TeX)的排版与编程语言(Lua)结合起来。也就是说,你可以同时获得两全其美的效果。

相关内容