是否有可能为LaTeX编写自己的“包”?

时间:2009-12-18 21:31:53

标签: latex

作为程序员,我想知道我是否可以为LaTeX创建自己的包。我需要像着名的“列表”包那样的东西,但是更能满足我需求的东西。我寻找一个列表解决方案,注意像

这样的评论行
// BEGIN LISTING 3122

// END LISTING 3122

没有语法突出显示,但是对标签缩进的智能支持。然后该包将与文件名或路径一起使用,遍历这些行并仅复制出感兴趣的片段。

我百分百肯定市场上绝对没有这样的东西。所以我想为LaTeX编程。如果那是可能的。我不知道如何以及什么编程语言/ IDE。我在哪里开始寻找?

4 个答案:

答案 0 :(得分:3)

这当然是可能的,但在TeX编程语言中它是非常重要的。我目前没有时间对其进行编码,但这是一个算法;我建议在comp.text.tex上询问更具体的LaTeX编程建议。

  • 在本地将特殊字符的所有catcodes设置为“other”(\dospecials)并逐行开始读取输入文件(\read
  • 对于每一行比较行的第一个(但是多个令牌)(\if\ifx的一些迭代使用;可能有一个包使这更容易,如stringstrings或xstring)
    • 在默认状态下抛弃输入行并读取下一个
    • 除非它是// BEGIN LISTING,在这种情况下,将每一行保存为一个宏(类似于\g@addto@macro
    • 直到// END LISTING,显然是
  • 一直走到文件末尾(\ifeof

TeX by Topic是此类工作的良好参考指南。

答案 1 :(得分:1)

相当简单的texments包显示了如何将代码传送到pdflatex:通过编写shell可调用过滤器,您应该可以执行与您的想法类似的操作。

答案 2 :(得分:0)

我很确定你不能在LaTeX中做到这一点。基本上你可以使用任何命令(\foo)或环境(\begin{foo} ... \end{foo})而不是你在这里描述的方式。在环境或命令中, 可以关闭LaTeX的处理并以某种方式自己处理所有事情。这是verbatimlistings的工作方式。但它不是很漂亮。

答案 3 :(得分:0)

基本上,我认为有可能,如果你让'/'成为一个活跃的角色(例如\makeactive,但我想有更多的解决方案),然后围绕它创造一些好的魔力。 (您需要使用您的逻辑模拟/创建一个环境。)在某些国际化程序包中也会执行类似的操作,以便轻松输入带有变音符号的字母。

对于像'/'这样的字符,这可能会更难,因为这个字体也可以写在文本的其他位置。所以当然你必须特别小心。