我经常使用Eric Tsu 的 LaTeXTidy 脚本在 TextMate 中整理 LaTeX 文件,它包含在 LaTeX 包中。我按下一个键绑定,LaTeXTidy 就会格式化文件。在编辑文档时可以多次执行此操作,而无需离开 TextMate。
我查看过,但还没有找到如何在 Emacs 中使用此脚本的方法,尽管对于经验丰富的 Emacs 用户来说,实现它似乎并不困难:通过按下键绑定在打开的 LaTeX 文件上运行 Perl 脚本。作为 Emacs 新手,这可能比我想象的要困难。
如何在 Emacs 中打开的 LaTeX 文件上运行该脚本?
答案1
以下代码,当您修改path-to-latex-tidy.pl
到正确的位置时,会将当前缓冲区的内容传递给该程序,然后用结果替换缓冲区内容。我手头没有 latex-tidy 来测试它,所以在用它做一些敏感的事情之前,先用一次性的东西检查一下。你应该能够通过撤消取消任何更改,但对大型缓冲区进行大量更改时,这有时会成为一个问题。
(defun latex-tidy ()
"Replace the contents of the current buffer with the output of
latex-tidy"
(interactive)
(shell-command-on-region
(point-min)
(point-max)
(format "cat %s > path-to-latex-tidy.pl" (buffer-file-name))
nil t))
您可以通过通常的方式将其绑定到某个键,例如:
(global-set-key [f9] #'latex-tidy)
但请注意,您最好充分利用 AucTex 提供的在编写文本时对其进行格式化的功能。使用 latex-tidy 可能会导致 AucTex 和 latex-tidy 不断逆转彼此的决定,从而导致问题。