JezK
Edit File: HTML-Xref-Node-Name-Expansion.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>HTML Xref Node Name Expansion (GNU Texinfo 6.8)</title> <meta name="description" content="HTML Xref Node Name Expansion (GNU Texinfo 6.8)"> <meta name="keywords" content="HTML Xref Node Name Expansion (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="HTML-Xref.html" rel="up" title="HTML Xref"> <link href="HTML-Xref-Command-Expansion.html" rel="next" title="HTML Xref Command Expansion"> <link href="HTML-Xref-Link-Basics.html" rel="prev" title="HTML Xref Link Basics"> <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="subsection" id="HTML-Xref-Node-Name-Expansion"> <div class="header"> <p> Next: <a href="HTML-Xref-Command-Expansion.html" accesskey="n" rel="next">HTML Cross-reference Command Expansion</a>, Previous: <a href="HTML-Xref-Link-Basics.html" accesskey="p" rel="prev">HTML Cross-reference Link Basics</a>, Up: <a href="HTML-Xref.html" accesskey="u" rel="up">HTML Cross-references</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="HTML-Cross_002dreference-Node-Name-Expansion"></span><h4 class="subsection">21.4.2 HTML Cross-reference Node Name Expansion</h4> <span id="index-HTML-cross_002dreferences-2"></span> <span id="index-node-name-expansion_002c-in-HTML-cross_002dreferences"></span> <span id="index-expansion_002c-of-node-names-in-HTML-cross_002dreferences"></span> <p>As mentioned in the previous section, the key part of the HTML cross reference algorithm is the conversion of node names in the Texinfo source into strings suitable for XHTML identifiers and file names. The restrictions are similar for each: plain ASCII letters, numbers, and the ‘<samp>-</samp>’ and ‘<samp>_</samp>’ characters are all that can be used. (Although HTML anchors can contain most characters, XHTML is more restrictive.) </p> <p>Cross-references in Texinfo can refer either to nodes or anchors (see <a href="_0040anchor.html"><code>@anchor</code>: Defining Arbitrary Cross-reference Targets</a>). However, anchors are treated identically to nodes in this context, so we’ll continue to say “node” names for simplicity. </p> <p>A special exception: the Top node (see <a href="The-Top-Node.html">The ‘Top’ Node and Master Menu</a>) is always mapped to the file <samp>index.html</samp>, to match web server software. However, the HTML <em>target</em> is ‘<samp>Top</samp>’. Thus (in the split case): </p> <div class="example"> <pre class="example">@xref{Top,,, emacs, The GNU Emacs Manual}. ⇒ <a href="emacs/index.html#Top"> </pre></div> <ol> <li> The standard ASCII letters (a-z and A-Z) are not modified. All other characters may be changed as specified below. </li><li> The standard ASCII numbers (0-9) are not modified except when a number is the first character of the node name. In that case, see below. </li><li> Multiple consecutive space, tab and newline characters are transformed into just one space. (It’s not possible to have newlines in node names with the current implementation, but we specify it anyway, just in case.) </li><li> Leading and trailing spaces are removed. </li><li> After the above has been applied, each remaining space character is converted into a ‘<samp>-</samp>’ character. </li><li> Other ASCII 7-bit characters are transformed into ‘<samp>_00<var>xx</var></samp>’, where <var>xx</var> is the ASCII character code in (lowercase) hexadecimal. This includes ‘<samp>_</samp>’, which is mapped to ‘<samp>_005f</samp>’. </li><li> If the node name does not begin with a letter, the literal string ‘<samp>g_t</samp>’ is prefixed to the result. (Due to the rules above, that string can never occur otherwise; it is an arbitrary choice, standing for “GNU Texinfo”.) This is necessary because XHTML requires that identifiers begin with a letter. </li></ol> <p>For example: </p> <div class="example"> <pre class="example">@node A node --- with _'% ⇒ A-node-_002d_002d_002d-with-_005f_0027_0025 </pre></div> <p>Example translations of common characters: </p> <ul> <li> ‘<samp>_</samp>’ ⇒ ‘<samp>_005f</samp>’ </li><li> ‘<samp>-</samp>’ ⇒ ‘<samp>_002d</samp>’ </li><li> ‘<samp>A node</samp>’ ⇒ ‘<samp>A-node</samp>’ </li></ul> <p>On case-folding computer systems, nodes differing only by case will be mapped to the same file. In particular, as mentioned above, Top always maps to the file <samp>index.html</samp>. Thus, on a case-folding system, Top and a node named ‘Index’ will both be written to <samp>index.html</samp>. Fortunately, the targets serve to distinguish these cases, since HTML target names are always case-sensitive, independent of operating system. </p> </div> <hr> <div class="header"> <p> Next: <a href="HTML-Xref-Command-Expansion.html">HTML Cross-reference Command Expansion</a>, Previous: <a href="HTML-Xref-Link-Basics.html">HTML Cross-reference Link Basics</a>, Up: <a href="HTML-Xref.html">HTML Cross-references</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> </body> </html>