【问题标题】:How to colour lines in LaTeX that match regular expressions如何在 LaTeX 中为匹配正则表达式的线条着色
【发布时间】:2010-01-05 02:48:06
【问题描述】:

我目前正在使用 LaTeX 列表包来显示代码块,以及文件与以前版本的差异。

两个块都由列表着色,就好像它们是代码(它们是)一样,但我想为差异着色类似于 emacs diff-mode - 红色表示匹配^- 的行,绿色表示^\+ 等。

有谁知道是否有一个包来实现这一点,列表是否可以做到,或者是否可以编写一个 LaTeX 命令来做到这一点? (或者更确切地说,在哪里可以找到关于后者的良好信息来源?)

谢谢,

哈德

【问题讨论】:

    标签: latex colors diff


    【解决方案1】:

    如果您只想要简单的差异,Pygments 支持它们,所以texments(pygments 的乳胶前端)可以满足您的需求。

    但我猜你想要的是让差异着色,同时适当突出显示底层代码的语法。通常,您无法以通常的方式正确执行此操作,因为语法突出显示可能取决于上一行的状态,并且使用 udiffs 可能会丢失上一行,或者插入的行可能会跟随已删除的行,&c。

    要做正确的事,您需要语法高亮显示旧版本和新版本,然后将高亮显示的版本加扰在一起以获得正确的输出。相当多的工作,我还没有听说有人这样做过。

    您也可以尝试简单地修改一种语言的常用语法高亮显示,删除涉及多行状态的高亮显示规则,并插入规则以使用 udiff 标记为行着色。参照。 Pygments'Write your own lexer;你想要从 diff 得到的东西比较棘手,因为你想要突出显示有颜色的东西,所以你不能只把这些线变成 GenericTokens;我不知道这样做的正确方法是什么。

    【讨论】:

    • texments & Pygments 似乎是我所追求的,我会试一试。差异中的语法突出显示实际上并没有在我的脑海中 - 但它也会很酷:) 不过我会采取简单的方法。感谢您的帮助。
    【解决方案2】:

    使用脚本工具,例如 sed、awk、Python [选择语言]来生成 Latex 源代码。

    【讨论】:

    • 代码生成一切都很好,但你建议他生成什么代码?
    猜你喜欢
    • 2014-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多