Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

How can I get the current .tex source line number? I want to use it to generate useful error messages in a package I am writing.

There are some errors that can only be detected at the end of the document, so I want to create a command that checks for them and tells at what line the error was made. To do that, I need to be able to save the source line number in the command that was misapplied.

Preferably a command that can be used like \sourcelineno in this example:

\documentclass{minimal}
\newcommand \showlineno {line \sourcelineno}

\begin{document}

You are now at \showlineno.

This paragraph starts at \showlineno, and 
some more text,
and runs until \showlineno. 

\end{document}

where the output would be

You are now at line 6.

This paragraph starts at line 8, and some more text, and runs until line 10. 
share|improve this question
1  
Would \number\inputlineno instead of \sourcelineno do the trick? –  egreg Nov 7 '12 at 13:53
    
@egreg: yes. I hadn't found out about \inputlineno yet. –  JanKanis Nov 7 '12 at 14:27
add comment

1 Answer 1

up vote 8 down vote accepted

You can use a variation of the kernel's \on@line:

\documentclass{article}

\makeatletter
\ifnum\inputlineno=\m@ne
\let\showlineno\@empty
\else
\def\showlineno{ line \the\inputlineno}
\fi
\makeatother

\begin{document}

You are now at \showlineno.

This paragraph starts at \showlineno, and 
some more text,
and runs until \showlineno.

on input line \the\inputlineno

\end{document}
share|improve this answer
1  
Great! \inputlineno is what I was looking for. –  JanKanis Nov 7 '12 at 14:26
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.