JezK
Edit File: External-Macro-Processors.html
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ --> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <!-- This manual is for GNU Texinfo (version 6.8, 8 June 2021), a documentation system that can produce both online information and a printed manual from a single source using semantic markup. Copyright (C) 1988, 1990-1993, 1995-1999, 2001-2021 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". --> <title>External Macro Processors (GNU Texinfo 6.8)</title> <meta name="description" content="External Macro Processors (GNU Texinfo 6.8)"> <meta name="keywords" content="External Macro Processors (GNU Texinfo 6.8)"> <meta name="resource-type" content="document"> <meta name="distribution" content="global"> <meta name="Generator" content="texi2any"> <meta name="viewport" content="width=device-width,initial-scale=1"> <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="Defining-New-Texinfo-Commands.html" rel="up" title="Defining New Texinfo Commands"> <link href="_0040definfoenclose.html" rel="prev" title="@definfoenclose"> <style type="text/css"> <!-- a.copiable-anchor {visibility: hidden; text-decoration: none; line-height: 0em} a.summary-letter {text-decoration: none} blockquote.indentedblock {margin-right: 0em} div.display {margin-left: 3.2em} div.example {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} span:hover a.copiable-anchor {visibility: visible} ul.no-bullet {list-style: none} --> </style> </head> <body lang="en"> <div class="section" id="External-Macro-Processors"> <div class="header"> <p> Previous: <a href="_0040definfoenclose.html" accesskey="p" rel="prev"><code>@definfoenclose</code>: Customized Highlighting</a>, Up: <a href="Defining-New-Texinfo-Commands.html" accesskey="u" rel="up">Defining New Texinfo Commands</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="External-Macro-Processors_003a-Line-Directives"></span><h3 class="section">16.6 External Macro Processors: Line Directives</h3> <span id="index-External-macro-processors"></span> <span id="index-Macro-processors_002c-external"></span> <p>Texinfo macros (and its other text substitution facilities) work fine in straightforward cases. If your document needs unusually complex processing, however, their fragility and limitations can be a problem. In this case, you may want to use a different macro processor altogether, such as M4 (see <cite><a data-manual="m4" href="../m4/index.html#Top">M4</a></cite>) or CPP (see <cite><a data-manual="cpp" href="../cpp/index.html#Top">The C Preprocessor</a></cite>). </p> <p>With one exception, Texinfo does not need to know whether its input is “original” source or preprocessed from some other source file. Therefore, you can arrange your build system to invoke whatever programs you like to handle macro expansion or other preprocessing needs. Texinfo does not offer built-in support for any particular preprocessor, since no one program seemed likely to suffice for the requirements of all documents. </p> <span id="index-Line-numbers_002c-in-error-messages"></span> <span id="index-Error-messages_002c-line-numbers-in"></span> <p>The one exception is line numbers in error messages. In that case, the line number should refer to the original source file, whatever it may be. There’s a well-known mechanism for this: the so-called ‘<samp>#line</samp>’ directive. Texinfo supports this. </p> <ul class="section-toc"> <li><a href="_0023line-Directive.html" accesskey="1">‘<samp>#line</samp>’ Directive</a></li> <li><a href="_0023line-and-TeX.html" accesskey="2">‘<samp>#line</samp>’ and TeX</a></li> <li><a href="_0023line-Syntax-Details.html" accesskey="3">‘<samp>#line</samp>’ Syntax Details</a></li> </ul> </div> </body> </html>