<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<!-- This manual is for GNU Texinfo (version 6.7, 23 September 2019),
a documentation system that can produce both online information and a
printed manual from a single source using semantic markup.
Copyright (C) 1988, 1990, 1991, 1992, 1993, 1995, 1996, 1997,
1998, 1999, 2001, 2001, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Free Software
Foundation, Inc.
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
any later version published by the Free Software Foundation; with no
Invariant Sections, with no Front-Cover Texts, and with no Back-Cover
Texts. A copy of the license is included in the section entitled
"GNU Free Documentation License". -->
<!-- Created by GNU Texinfo 6.7, http://www.gnu.org/software/texinfo/ -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>#line and TeX (GNU Texinfo 6.7)</title>
<meta name="description" content="#line and TeX (GNU Texinfo 6.7)">
<meta name="keywords" content="#line and TeX (GNU Texinfo 6.7)">
<meta name="resource-type" content="document">
<meta name="distribution" content="global">
<meta name="Generator" content="texi2any">
<link href="index.html" rel="start" title="Top">
<link href="Command-and-Variable-Index.html" rel="index" title="Command and Variable Index">
<link href="index.html#SEC_Contents" rel="contents" title="Table of Contents">
<link href="External-Macro-Processors.html" rel="up" title="External Macro Processors">
<link href="_0023line-Syntax-Details.html" rel="next" title="#line Syntax Details">
<link href="_0023line-Directive.html" rel="prev" title="#line Directive">
<style type="text/css">
<!--
a.summary-letter {text-decoration: none}
blockquote.indentedblock {margin-right: 0em}
div.display {margin-left: 3.2em}
div.example {margin-left: 3.2em}
div.lisp {margin-left: 3.2em}
kbd {font-style: oblique}
pre.display {font-family: inherit}
pre.format {font-family: inherit}
pre.menu-comment {font-family: serif}
pre.menu-preformatted {font-family: serif}
span.nolinebreak {white-space: nowrap}
span.roman {font-family: initial; font-weight: normal}
span.sansserif {font-family: sans-serif; font-weight: normal}
ul.no-bullet {list-style: none}
-->
</style>
</head>
<body lang="en">
<span id="g_t_0023line-and-TeX"></span><div class="header">
<p>
Next: <a href="_0023line-Syntax-Details.html" accesskey="n" rel="next">‘<samp>#line</samp>’ Syntax Details</a>, Previous: <a href="_0023line-Directive.html" accesskey="p" rel="prev">‘<samp>#line</samp>’ Directive</a>, Up: <a href="External-Macro-Processors.html" accesskey="u" rel="up">External Macro Processors</a> [<a href="index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Command-and-Variable-Index.html" title="Index" rel="index">Index</a>]</p>
</div>
<hr>
<span id="g_t_0023line-and-TeX-1"></span><h4 class="subsection">17.6.2 ‘<samp>#line</samp>’ and TeX</h4>
<span id="index-TeX-and-_0023line-directives"></span>
<span id="index-_0023line-directives_002c-not-processing-with-TeX"></span>
<p>As mentioned, <code>makeinfo</code> recognizes the ‘<samp>#line</samp>’
directives described in the previous section. However,
<samp>texinfo.tex</samp> does not and cannot. Therefore, such a line will
be incorrectly typeset verbatim if TeX sees it. The solution is to
use <code>makeinfo</code>’s macro expansion options before running
TeX. There are three approaches:
</p>
<ul>
<li> If you run <code>texi2dvi</code> or its variants (see <a href="Format-with-texi2dvi.html">Format with <code>texi2dvi</code></a>), you can pass <samp>-E</samp> and <code>texi2dvi</code>
will run <code>makeinfo</code> first to expand macros and eliminate
‘<samp>#line</samp>’.
</li><li> If you run <code>makeinfo</code> or its variants (see <a href="Generic-Translator-texi2any.html">Generic Translator <code>texi2any</code></a>), you can specify <samp>--no-ifinfo
--iftex -E somefile.out</samp>, and then give <samp>somefile.out</samp> to
<code>texi2dvi</code> in a separate command.
</li><li> Or you can run <samp>makeinfo --dvi --Xopt -E</samp>. (Or <samp>--pdf</samp>
instead of <samp>--dvi</samp>.) <code>makeinfo</code> will then call
<code>texi2dvi -E</code>.
</li></ul>
<span id="index-errormsg_002c-and-line-numbers-in-TeX"></span>
<p>One last caveat regarding use with TeX: since the <code>#line</code>
directives are not recognized, the line numbers emitted by the
<code>@errormsg{}</code> command (see <a href="Conditional-Commands.html">Conditional Commands</a>), or by
TeX itself, are the (incorrect) line numbers from the derived file
which TeX is reading, rather than the preprocessor-specified line
numbers. This is another example of why we recommend running
<code>makeinfo</code> for the best diagnostics (see <a href="makeinfo-Advantages.html"><code>makeinfo</code> Advantages</a>).
</p>
</body>
</html>