2 votes

Comment afficher le numéro de ligne commun à plusieurs fichiers dans emacs ?

J'ai un projet LaTeX qui consiste en un fichier principal et d'autres fichiers (principalement des chapitres) qui sont inclus dans le fichier principal via la fonction \input commandement :

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

Comme vous pouvez le constater, les fichiers inclus se trouvent généralement dans des sous-dossiers par rapport au fichier principal.

J'aimerais ça quand je suis en visite, par exemple, two.tex le numéro de ligne indiqué au bas de la mémoire tampon en line-number-mode ne commencerait pas à partir de 1 mais prendrait en compte les lignes de code avant ce fichier (dans ce cas, celles dans le fichier mail et dans le fichier one.tex ). Ceci est dû au fait que lorsque je compile le document avec pdfLaTeX le compilateur fournit des numéros de ligne "généraux" pour les erreurs, il est donc difficile de les trouver dans le code source. J'ai essayé le linum mode mais il semble que cela fonctionne exactement comme le line-number-mode pour le problème spécifique.

Existe-t-il un moyen d'obtenir ce comportement ? Je n'ai pas posté la question sur TeX.StackExchange parce que je pense que c'est vraiment une question liée à Emacs.

2voto

Ivan Andrus Points 706

Pour moi, latex indique le numéro de ligne dans un fichier donné. Comment invoquez-vous latex pour qu'il donne des numéros de ligne "généraux" ?

Vous devriez également envisager d'utiliser -file-line-error-style puisque cela aide AUCTeX à trouver l'erreur dans quelques cas particuliers. Il provoque l'impression d'erreurs comme ./capitoli/three.tex:2: Undefined control sequence.

0voto

user114676 Points 166

Il s'agit plutôt d'un hack pour obtenir ce que vous demandez, mais vous pourriez utiliser un (ex.) awk script pour préparer un fichier concaténant les \input dans le fichier (voir ce lien ). Vous pouvez en déduire le décalage de chaque fichier (le numéro de ligne qu'il a dans le fichier fusionné). Ensuite, vous pouvez utiliser une forme de numérotation relative des lignes (voir par ex. ce lien ). Vous devez alors trouver un moyen de modifier votre .emacs chaque fois que vous ouvrez un fichier .tex qui n'est pas le fichier principal (par exemple, en utilisant un alias ou une fonction).

Avec un peu de travail, vous pouvez obtenir ce que vous voulez, mais ce n'est pas simple.

P.S. Les numéros de ligne de la concaténation peuvent ne pas être ceux indiqués dans votre journal d'erreurs, car il peut y avoir d'autres macros qui s'étendent (par ex. \include ).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X