2

У меня есть проект 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.

2 ответа2

2

Для меня латекс сообщает номер строки в данном файле. Как вы вызываете латекс, который дает "общие" номера строк?

Вам также следует рассмотреть возможность использования -file-line-error-style поскольку это помогает AUCTeX находить ошибку в нескольких угловых случаях. Это приводит к выводу ошибок, например ./capitoli/three.tex:2: Undefined control sequence.

0

Это больше похоже на хак, чтобы получить то, что вы просите, но вы можете использовать (например) awk скрипт для подготовки файла, объединяющего файл \input 'ed в файл (см. Эту ссылку). Из него вы можете получить смещение каждого файла (номер строки, который есть в объединенном файле). Затем вы можете использовать некоторую форму относительной нумерации строк (см., Например, эту ссылку). Затем вам потребуется какой-то способ изменить файл .emacs всякий раз, когда вы открываете файл .tex который не является основным файлом (например, с использованием псевдонима или функции).

С некоторой работой вы можете получить то, что вы хотите, но это не так просто.

PS Номера строк из конкатенации могут не совпадать с номерами, указанными в журнале ошибок, поскольку возможно расширение других макросов (например, \include).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .