如何在 emacs 中显示更多文件共有的行号?

如何在 emacs 中显示更多文件共有的行号?

我有一个 LaTeX 项目,它由一个主文件和其他文件(主要是章节)组成,这些文件通过以下命令包含在主文件中\input

\documentclass[a4paper,10pt,oneside,openany]{book}
....
\begin{document}
...
\mainmatter
\input{capitoli/one.tex}
\input{capitoli/two.tex}
\input{capitoli/n.tex}
...
\end{document}

如您所见,包含的文件通常位于相对于主文件的子文件夹中。

我希望当我访问时,two.tex缓冲区底部显示的行号line-number-mode不会从 1 开始,而是考虑该文件之前的代码行(在本例中是邮件文件和 中的代码行one.tex)。这是因为当我使用 编译文档时,pdfLaTeX编译器会为错误提供“通用”行号,因此很难在源代码中找到它。我尝试了,但它似乎与针对特定问题的linum mode一样有效。line-number-mode

有办法实现这种行为吗?我没有在TeX.StackExchange因为我认为这确实是一个与 Emacs 相关的问题。

答案1

对于我来说,latex 会报告给定文件中的行号。您如何调用 latex 来提供“一般”行号?

您还应该考虑使用,-file-line-error-style因为这有助于 AUCTeX 在一些极端情况下发现错误。它会导致错误被打印出来,就像./capitoli/three.tex:2: Undefined control sequence.

答案2

这更像是一种黑客手段来获取你想要的东西,但你可以使用(例如)awk脚本来准备一个文件,将\inputed 文件连接到文件中(参见此链接)。从中,您可以得出每个文件的偏移量(它在合并文件中的行号)。然后,您可以使用某种形式的相对行号(例如,参见此链接)。然后,.emacs每当您打开.tex非主文件时,您都需要某种方法来修改文件(例如,使用别名或函数)。

通过一些努力,你可以得到你想要的,但这并不简单。

PS 连接后的行号可能不是您的错误日志中报告的行号,因为可能还有其他宏正在扩展(例如\include)。

相关内容