--- xml.h.old Mon Oct 14 23:25:11 2002 +++ xml.h Fri Nov 8 15:57:36 2002 @@ -33,6 +33,8 @@ extern char *xml_node_id; extern int xml_last_section_output_position; +extern int xml_in_xref_token; + enum xml_element { TEXINFO=0, SETFILENAME, TITLEFONT, SETTITLE, --- xml.c.old Thu Nov 7 23:14:56 2002 +++ xml.c Fri Nov 8 15:59:58 2002 @@ -359,6 +359,8 @@ static int first_section_opened = 0; static int in_abstract = 0; +int xml_in_xref_token = 0; + static int xml_current_element (); void @@ -375,13 +377,14 @@ char *tem = xmalloc (strlen (id) + 1); char *p = tem; strcpy (tem, id); - while (*p++) + while (*p) { - if (*p == ' ' || *p == '&' || *p == '/' || *p == '+') + if (strchr ("~ &/+^;?()%<>\"", *p)) *p = '-'; + p++; } p = tem; - while (*p == '-') + if (*p == '-') *p = 'i'; return tem; } @@ -821,7 +824,8 @@ if (docbook && !only_macro_expansion && (in_menu || in_detailmenu)) return; - if (!first_section_opened && !in_abstract && xml_current_element () == TEXINFO + if (!executing_string && !first_section_opened && + !in_abstract && xml_current_element () == TEXINFO && !xml_no_para && character != '\r' && character != '\n' && character != ' ') { xml_insert_element (BOOKINFO, START); @@ -829,7 +833,7 @@ in_abstract = 1; } - if (xml_after_table_term && !xml_sort_index) + if (xml_after_table_term && !xml_sort_index && !xml_in_xref_token) { xml_after_table_term = 0; xml_insert_element (ITEM, START); --- makeinfo.c.old Tue Nov 5 20:31:57 2002 +++ makeinfo.c Fri Nov 8 15:57:34 2002 @@ -2910,6 +2910,8 @@ { char *string; + if (docbook) + xml_in_xref_token = 1; if (expand) { int old_offset = input_text_offset; @@ -2935,6 +2937,10 @@ if (curchar () == ',') input_text_offset++; fix_whitespace (string); + + if (docbook) + xml_in_xref_token = 0; + return string; }