2
#=======================================================================
3
# Copyright (C) 2000-2003 Daniele Giacomini <daniele@swlibero.org>
5
# This program is free software; you can redistribute it and/or modify
6
# it under the terms of the GNU General Public License as published by
7
# the Free Software Foundation; either version 2 of the License, or
8
# (at your option) any later version.
10
# This program is distributed in the hope that it will be useful, but
11
# WITHOUT ANY WARRANTY; without even the implied warranty of
12
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13
# General Public License for more details.
15
# You should have received a copy of the GNU General Public License
16
# along with this program; if not, write to the Free Software
17
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19
# Written by Daniele Giacomini <daniele@swlibero.org>
20
#=======================================================================
21
# sgmltexi OPTION... SGML_SOURCE
23
# Front-end for the SGML to Texinfo system.
24
#=======================================================================
28
setlocale (LC_MESSAGES, "");
29
textdomain ("sgmltexi");
37
$VERSION = "2003.00.00";
39
# Configuration files.
40
$CATALOG = "/usr/share/sgml/sgmltexi/sgmltexi.cat";
42
#=======================================================================
43
# Global variables that should not be modified by hand.
44
#=======================================================================
47
$program_canonical_name = "Sgmltexi";
49
# Program executable without path.
50
$program_executable = $0;
51
$program_executable =~ m{([^/]*)$};
52
$program_executable = $1;
54
# List of other temporary files that must be deleted at the end of
56
$temp_files_list = "";
58
#=======================================================================
60
#=======================================================================
62
#-----------------------------------------------------------------------
63
# Show the right syntax for the use of this program.
69
print STDOUT (sprintf (gettext
70
( "Usage: %s OPTIONS... SGML_SOURCE\n"
74
. "Front-end for the SGML to Texinfo system.\n"
77
. "--help display this help and exit.\n"
78
. "--version display version information and exit.\n"
79
. "--force force things.\n"
80
. "--number-sections\n"
81
. " add sections numbering when usually disabled.\n"
82
. "--clean remove stale files associated with the source name.\n"
83
. "--verbose show more messages.\n"
84
. "--input-encoding=ENCODING\n"
85
. " input encoding ISO-8859-n.\n"
86
. "--sgml-include=PARAMETER_ENTITY\n"
87
. "--include=PARAMETER_ENTITY\n"
88
. " assign \"INCLUDE\" to an SGML parameter entity.\n"
90
. " define the paper format: \"letter\", \"a4\",\n"
91
. " \"a4latex\", \"a4wide\", \"a5\", \"small\".\n"
92
. "--setchapternewpage={on|off|odd}\n"
93
. " define the chapter paper feed, overriding the tag\n"
94
. " <setchapternewpage content=\"...\"> inside the source.\n"
95
. "--footnotestyle={end|separate}\n"
96
. " define the footnote location, overriding the tag\n"
97
. " <footnotestyle content=\"...\"> inside the source.\n"
98
. "--headings={on|off|single|double|singleafter|doubleafter}\n"
99
. " turn page headings on or off, and/or specify single-sided\n"
100
. " or double-sided page headings for printing. It overrides the"
101
. " tag <headings content=\"...\"> inside the source.\n"
102
. "--sgml-syntax, --sgml-check\n"
103
. " check SGML syntax and report errors.\n"
104
. "--sp SP output for debugging purpose.\n"
105
. "--texi, --texinfo\n"
106
. " generate a Texinfo source output.\n"
107
. "--dvi generate a DVI output.\n"
108
. "--ps, --postscript\n"
109
. " generate a PostScript output.\n"
110
. "--pdf generate a PDF output.\n"
111
. "--info generate an Info output.\n"
112
. "--text generate a text output.\n"
113
. "--html generate an HTML output.\n"
114
. "--xml generate an XML Texinfo output.\n"
115
. "--docbook generate an XML Docbook output.\n"
118
. "SGML_SOURCE the SGML input file.\n"
120
. "Report bugs to <daniele\@swlibero.org>\n"),
121
$program_executable, $program_executable, $program_executable));
124
#-----------------------------------------------------------------------
125
# Show version information.
131
print STDOUT (sprintf (gettext
134
. "Copyright (C) Daniele Giacomini <daniele\@swlibero.org>\n"
135
. "This is free software; see the source for copying conditions.\n"
136
. "There is NO warranty; not even for MERCHANTABILITY or FITNESS\n"
137
. "FOR A PARTICULAR PURPOSE.\n"
139
. "Written by Daniele Giacomini <daniele\@swlibero.org>\n" ),
140
$program_canonical_name, $VERSION));
143
#-----------------------------------------------------------------------
144
# Define a temporary file.
150
local( $temp_dir ) = "";
151
local( $random_number ) = 0;
152
local( $random_file_name ) = "";
154
# Check for temp dir.
160
# This directory is good.
161
$temp_dir = $ENV{TEMPDIR};
163
elsif (-d "/tmp" && -r "/tmp" && -w "/tmp" && -x "/tmp")
165
# This other directory is good.
168
elsif (-r "." && -w "." && -x ".")
170
# Current directory is good.
175
# We cannot use any temporary file!
176
printf STDERR (gettext ("%s: cannot create any temporary file!\n"),
177
$program_executable);
181
# If we are here, we have a valid temporary directory.
182
# We try to find a good name for the file.
185
# Define the random number (six digits).
186
$random_number = int ((rand) * 1000000);
187
# Define the random file name: TF...tmp.
188
$random_file_name = "$temp_dir/TF$random_number.tmp";
189
# Check if it is new.
190
if (-e $random_file_name)
192
# The file exists already.
197
if (open (TEMP_FILE, "> $random_file_name"))
205
# Don't know what to do.
207
(gettext ("%s: cannot create the temporary file %s\n"),
208
$program_executable, $random_file_name);
212
# This point cannot be reached.
214
(gettext ("%s: function %s unknown error 1\n"),
215
$program_executable, "&temporary_file()");
218
# This point cannot be reached.
220
(gettext ("%s: function %s unknown error 2\n"),
221
$program_executable, "&temporary_file()");
224
# Return the file name.
225
return ("$random_file_name");
228
#-----------------------------------------------------------------------
229
# Determinate the file name without extention.
231
# &root_name (FILE_NAME, EXTENTION)
235
local( $file_name ) = $_[0];
236
local( $extention_name ) = $_[1];
237
local( $root_name ) = "";
239
$file_name =~ m/^(.*)$extention_name$/;
241
if ($root_name eq "")
243
# The extention is not the same.
244
$root_name = $file_name;
246
return ("$root_name");
249
#-----------------------------------------------------------------------
250
# Translate a positive integer into an alphabet sequence:
253
# &integer_to_alphabet (INTEGER)
255
sub integer_to_alphabet
259
#-------------------------------------------------------------------
260
# Generate an alphabet digit.
261
# 1 -> A, 2 -> B,... 26 -> Z
263
# &alphabet_digit (1-26)
267
local ($digit) = $_[0];
378
# Analyze the number.
381
# We cannot translate zero or negative numbers.
386
# We have only one letter.
387
$return = &alphabet_digit($n);
391
# We have two letters: Ax.
393
$return = "A" . &alphabet_digit($n);
397
# We have two letters: Bx.
399
$return = "B" . &alphabet_digit($n);
404
# We have two letters: Cx.
406
$return = "C" . &alphabet_digit($n);
410
# The number is too big.
413
} # &integer_to_alphabet
415
#-----------------------------------------------------------------------
416
# Translate a positive integer into a roman string.
418
# &integer_to_roman (INTEGER)
422
local ( $n ) = $_[0];
423
local ( $digit_1 ) = 0;
424
local ( $digit_2 ) = 0;
425
local ( $digit_3 ) = 0;
426
local ( $digit_4 ) = 0;
428
#-------------------------------------------------------------------
429
# First digit into roman: 1-9
433
local ( $digit ) = $_[0];
477
#-------------------------------------------------------------------
478
# Second digit into roman: 10-90
482
local ($digit) = $_[0];
526
#-------------------------------------------------------------------
527
# Third digit into roman: 100-900
531
local ($digit) = $_[0];
575
#-------------------------------------------------------------------
576
# Fourth digit into roman: 1000-9000
580
local ($digit) = $_[0];
620
return ("MMMMMMMMM");
625
$digit_4 = int( $n / 1000 );
626
$n = ($n - $digit_4*1000);
627
$digit_3 = int( $n / 100 );
628
$n = ($n - $digit_3*100);
629
$digit_2 = int( $n / 10 );
630
$n = ($n - $digit_2*10);
633
return (&digit_4_to_roman($digit_4)
634
. &digit_3_to_roman($digit_3)
635
. &digit_2_to_roman($digit_2)
636
. &digit_1_to_roman($digit_1));
637
} # &integer_to_roman
639
#-----------------------------------------------------------------------
640
# Minimal conversion into SP SDATA entities.
642
# &minimal_sp_text_to_sdata (TEXT)
643
#-----------------------------------------------------------------------
644
sub minimal_sp_text_to_sdata
646
local ($line) = $_[0];
648
# US-ASCII special characters for Texinfo.
649
$line =~ s/\@/\\\|\[commat\]\\\|/g; # ISOnum : commercial at
650
$line =~ s/\{/\\\|\[lcub \]\\\|/g; # ISOnum : left curly bracket
651
$line =~ s/\}/\\\|\[rcub \]\\\|/g; # ISOnum : right curly bracket
656
#-----------------------------------------------------------------------
657
# ISO 8859-1 into SP SDATA entities.
659
# &iso_8859_1_sp_text_to_sdata (TEXT)
660
#-----------------------------------------------------------------------
661
sub iso_8859_1_sp_text_to_sdata
663
local ($line) = $_[0];
665
$line =~ s/\xA1/\\\|\[iexcl \]\\\|/g; # ISOnum : INVERTED EXCLAMATION MARK
666
$line =~ s/\xA2/\\\|\[cent \]\\\|/g; # ISOnum : CENT SIGN
667
$line =~ s/\xA3/\\\|\[pound \]\\\|/g; # ISOnum : POUND SIGN
668
$line =~ s/\xA4/\\\|\[curren\]\\\|/g; # ISOnum : CURRENCY SIGN
669
$line =~ s/\xA5/\\\|\[yen \]\\\|/g; # ISOnum : YEN SIGN
670
$line =~ s/\xA6/\\\|\[brvbar\]\\\|/g; # ISOnum : BROKEN BAR
671
$line =~ s/\xA7/\\\|\[sect \]\\\|/g; # ISOnum : SECTION SIGN
672
$line =~ s/\xA8/\\\|\[die \]\\\|/g; # ISOdia : DIERESIS
673
$line =~ s/\xA9/\\\|\[copy \]\\\|/g; # ISOnum : COPYRIGHT SIGN
674
$line =~ s/\xAA/\\\|\[ordf \]\\\|/g; # ISOnum : FEMININE ORDINAL INDICATOR
675
$line =~ s/\xAB/\\\|\[laquo \]\\\|/g; # ISOnum : LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
676
$line =~ s/\xAC/\\\|\[not \]\\\|/g; # ISOnum : NOT SIGN
677
$line =~ s/\xAD/\\\|\[shy \]\\\|/g; # ISOnum : SOFT HYPHEN
678
$line =~ s/\xAE/\\\|\[reg \]\\\|/g; # ISOnum : REGISTERED SIGN
679
$line =~ s/\xAF/\\\|\[macr \]\\\|/g; # ISOdia : OVERLINE (MACRON)
680
$line =~ s/\xB0/\\\|\[deg \]\\\|/g; # ISOnum : DEGREE SIGN
681
$line =~ s/\xB1/\\\|\[plusmn\]\\\|/g; # ISOnum : PLUS-MINUS SIGN
682
$line =~ s/\xB2/\\\|\[sup2 \]\\\|/g; # ISOnum : SUPERSCRIPT TWO
683
$line =~ s/\xB3/\\\|\[sup3 \]\\\|/g; # ISOnum : SUPERSCRIPT THREE
684
$line =~ s/\xB4/\\\|\[acute \]\\\|/g; # ISOdia : ACUTE ACCENT
685
$line =~ s/\xB5/\\\|\[micro \]\\\|/g; # ISOnum : MICRO SIGN
686
$line =~ s/\xB6/\\\|\[para \]\\\|/g; # ISOnum : PILCROW SIGN
687
$line =~ s/\xB7/\\\|\[middot\]\\\|/g; # ISOnum : MIDDLE DOT
688
$line =~ s/\xB8/\\\|\[cedil \]\\\|/g; # ISOdia : CEDILLA
689
$line =~ s/\xB9/\\\|\[sup1 \]\\\|/g; # ISOnum : SUPERSCRIPT ONE
690
$line =~ s/\xBA/\\\|\[ordm \]\\\|/g; # ISOnum : MASCULINE ORDINAL INDICATOR
691
$line =~ s/\xBB/\\\|\[raquo \]\\\|/g; # ISOnum : RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
692
$line =~ s/\xBC/\\\|\[frac14\]\\\|/g; # ISOnum : VULGAR FRACTION ONE QUARTER
693
$line =~ s/\xBD/\\\|\[frac12\]\\\|/g; # ISOnum : VULGAR FRACTION ONE HALF
694
$line =~ s/\xBE/\\\|\[frac34\]\\\|/g; # ISOnum : VULGAR FRACTION THREE QUARTERS
695
$line =~ s/\xBF/\\\|\[iquest\]\\\|/g; # ISOnum : INVERTED QUESTION MARK
696
$line =~ s/\xC0/\\\|\[Agrave\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER A WITH GRAVE
697
$line =~ s/\xC1/\\\|\[Aacute\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER A WITH ACUTE
698
$line =~ s/\xC2/\\\|\[Acirc \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER A WITH CIRCUMFLEX
699
$line =~ s/\xC3/\\\|\[Atilde\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER A WITH TILDE
700
$line =~ s/\xC4/\\\|\[Auml \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER A WITH DIERESIS
701
$line =~ s/\xC5/\\\|\[Aring \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER A WITH RING ABOVE
702
$line =~ s/\xC6/\\\|\[AElig \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER AE
703
$line =~ s/\xC7/\\\|\[Ccedil\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER C WITH CEDILLA
704
$line =~ s/\xC8/\\\|\[Egrave\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER E WITH GRAVE
705
$line =~ s/\xC9/\\\|\[Eacute\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER E WITH ACUTE
706
$line =~ s/\xCA/\\\|\[Ecirc \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER E WITH CIRCUMFLEX
707
$line =~ s/\xCB/\\\|\[Euml \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER E WITH DIERESIS
708
$line =~ s/\xCC/\\\|\[Igrave\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER I WITH GRAVE
709
$line =~ s/\xCD/\\\|\[Iacute\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER I WITH ACUTE
710
$line =~ s/\xCE/\\\|\[Icirc \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER I WITH CIRCUMFLEX
711
$line =~ s/\xCF/\\\|\[Iuml \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER I WITH DIERESIS
712
$line =~ s/\xD0/\\\|\[ETH \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER ETH (Icelandic)
713
$line =~ s/\xD1/\\\|\[Ntilde\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER N WITH TILDE
714
$line =~ s/\xD2/\\\|\[Ograve\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER O WITH GRAVE
715
$line =~ s/\xD3/\\\|\[Oacute\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER O WITH ACUTE
716
$line =~ s/\xD4/\\\|\[Ocirc \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER O WITH CIRCUMFLEX
717
$line =~ s/\xD5/\\\|\[Otilde\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER O WITH TILDE
718
$line =~ s/\xD6/\\\|\[Ouml \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER O WITH DIERESIS
719
$line =~ s/\xD7/\\\|\[times \]\\\|/g; # ISOnum : MULTIPLICATION SIGN
720
$line =~ s/\xD8/\\\|\[Oslash\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER O WITH STROKE
721
$line =~ s/\xD9/\\\|\[Ugrave\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER U WITH GRAVE
722
$line =~ s/\xDA/\\\|\[Uacute\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER U WITH ACUTE
723
$line =~ s/\xDB/\\\|\[Ucirc \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER U WITH CIRCUMFLEX
724
$line =~ s/\xDC/\\\|\[Uuml \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER U WITH DIERESIS
725
$line =~ s/\xDD/\\\|\[Yacute\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER Y WITH ACUTE
726
$line =~ s/\xDE/\\\|\[THORN \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER THORN (Icelandic)
727
$line =~ s/\xDF/\\\|\[szlig \]\\\|/g; # ISOlat1: LATIN SMALL LETTER SHARP S (German)
728
$line =~ s/\xE0/\\\|\[agrave\]\\\|/g; # ISOlat1: LATIN SMALL LETTER A WITH GRAVE
729
$line =~ s/\xE1/\\\|\[aacute\]\\\|/g; # ISOlat1: LATIN SMALL LETTER A WITH ACUTE
730
$line =~ s/\xE2/\\\|\[acirc \]\\\|/g; # ISOlat1: LATIN SMALL LETTER A WITH CIRCUMFLEX
731
$line =~ s/\xE3/\\\|\[atilde\]\\\|/g; # ISOlat1: LATIN SMALL LETTER A WITH TILDE
732
$line =~ s/\xE4/\\\|\[auml \]\\\|/g; # ISOlat1: LATIN SMALL LETTER A WITH DIERESIS
733
$line =~ s/\xE5/\\\|\[aring \]\\\|/g; # ISOlat1: LATIN SMALL LETTER A WITH RING ABOVE
734
$line =~ s/\xE6/\\\|\[aelig \]\\\|/g; # ISOlat1: LATIN SMALL LETTER AE
735
$line =~ s/\xE7/\\\|\[ccedil\]\\\|/g; # ISOlat1: LATIN SMALL LETTER C WITH CEDILLA
736
$line =~ s/\xE8/\\\|\[egrave\]\\\|/g; # ISOlat1: LATIN SMALL LETTER E WITH GRAVE
737
$line =~ s/\xE9/\\\|\[eacute\]\\\|/g; # ISOlat1: LATIN SMALL LETTER E WITH ACUTE
738
$line =~ s/\xEA/\\\|\[ecirc \]\\\|/g; # ISOlat1: LATIN SMALL LETTER E WITH CIRCUMFLEX
739
$line =~ s/\xEB/\\\|\[euml \]\\\|/g; # ISOlat1: LATIN SMALL LETTER E WITH DIERESIS
740
$line =~ s/\xEC/\\\|\[igrave\]\\\|/g; # ISOlat1: LATIN SMALL LETTER I WITH GRAVE
741
$line =~ s/\xED/\\\|\[iacute\]\\\|/g; # ISOlat1: LATIN SMALL LETTER I WITH ACUTE
742
$line =~ s/\xEE/\\\|\[icirc \]\\\|/g; # ISOlat1: LATIN SMALL LETTER I WITH CIRCUMFLEX
743
$line =~ s/\xEF/\\\|\[iuml \]\\\|/g; # ISOlat1: LATIN SMALL LETTER I WITH DIERESIS
744
$line =~ s/\xF0/\\\|\[eth \]\\\|/g; # ISOlat1: LATIN SMALL LETTER ETH (Icelandic)
745
$line =~ s/\xF1/\\\|\[ntilde\]\\\|/g; # ISOlat1: LATIN SMALL LETTER N WITH TILDE
746
$line =~ s/\xF2/\\\|\[ograve\]\\\|/g; # ISOlat1: LATIN SMALL LETTER O WITH GRAVE
747
$line =~ s/\xF3/\\\|\[oacute\]\\\|/g; # ISOlat1: LATIN SMALL LETTER O WITH ACUTE
748
$line =~ s/\xF4/\\\|\[ocirc \]\\\|/g; # ISOlat1: LATIN SMALL LETTER O WITH CIRCUMFLEX
749
$line =~ s/\xF5/\\\|\[otilde\]\\\|/g; # ISOlat1: LATIN SMALL LETTER O WITH TILDE
750
$line =~ s/\xF6/\\\|\[ouml \]\\\|/g; # ISOlat1: LATIN SMALL LETTER O WITH DIERESIS
751
$line =~ s/\xF7/\\\|\[divide\]\\\|/g; # ISOnum : DIVISION SIGN
752
$line =~ s/\xF8/\\\|\[oslash\]\\\|/g; # ISOlat1: LATIN SMALL LETTER O WITH STROKE
753
$line =~ s/\xF9/\\\|\[ugrave\]\\\|/g; # ISOlat1: LATIN SMALL LETTER U WITH GRAVE
754
$line =~ s/\xFA/\\\|\[uacute\]\\\|/g; # ISOlat1: LATIN SMALL LETTER U WITH ACUTE
755
$line =~ s/\xFB/\\\|\[ucirc \]\\\|/g; # ISOlat1: LATIN SMALL LETTER U WITH CIRCUMFLEX
756
$line =~ s/\xFC/\\\|\[uuml \]\\\|/g; # ISOlat1: LATIN SMALL LETTER U WITH DIERESIS
757
$line =~ s/\xFD/\\\|\[yacute\]\\\|/g; # ISOlat1: LATIN SMALL LETTER Y WITH ACUTE
758
$line =~ s/\xFE/\\\|\[thorn \]\\\|/g; # ISOlat1: LATIN SMALL LETTER THORN (Icelandic)
759
$line =~ s/\xFF/\\\|\[yuml \]\\\|/g; # ISOlat1: LATIN SMALL LETTER Y WITH DIERESIS
765
#-----------------------------------------------------------------------
766
# ISO 8859-2 into SP SDATA entities.
768
# &iso_8859_2_sp_text_to_sdata (TEXT)
769
#-----------------------------------------------------------------------
770
sub iso_8859_2_sp_text_to_sdata
772
local ($line) = $_[0];
774
$line =~ s/\xA1/\\\|\[Aogon \]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER A WITH OGONEK
775
$line =~ s/\xA2/\\\|\[breve \]\\\|/g; # ISOdia : BREVE
776
$line =~ s/\xA3/\\\|\[Lstrok\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER L WITH STROKE
777
$line =~ s/\xA4/\\\|\[curren\]\\\|/g; # ISOnum : CURRENCY SIGN
778
$line =~ s/\xA5/\\\|\[Lcaron\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER L WITH CARON
779
$line =~ s/\xA6/\\\|\[Sacute\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER S WITH ACUTE
780
$line =~ s/\xA7/\\\|\[sect \]\\\|/g; # ISOnum : SECTION SIGN
781
$line =~ s/\xA8/\\\|\[die \]\\\|/g; # ISOdia : DIERESIS
782
$line =~ s/\xA9/\\\|\[Scaron\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER S WITH CARON
783
$line =~ s/\xAA/\\\|\[Scedil\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER S WITH CEDILLA
784
$line =~ s/\xAB/\\\|\[Tcaron\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER T WITH CARON
785
$line =~ s/\xAC/\\\|\[Zacute\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER Z WITH ACUTE
786
$line =~ s/\xAD/\\\|\[shy \]\\\|/g; # ISOnum : SOFT HYPHEN
787
$line =~ s/\xAE/\\\|\[Zcaron\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER Z WITH CARON
788
$line =~ s/\xAF/\\\|\[Zdot \]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER Z WITH DOT ABOVE
789
$line =~ s/\xB0/\\\|\[deg \]\\\|/g; # ISOnum : DEGREE SIGN
790
$line =~ s/\xB1/\\\|\[aogon \]\\\|/g; # ISOlat2: LATIN SMALL LETTER A WITH OGONEK
791
$line =~ s/\xB2/\\\|\[ogon \]\\\|/g; # ISOdia : OGONEK
792
$line =~ s/\xB3/\\\|\[lstrok\]\\\|/g; # ISOlat2: LATIN SMALL LETTER L WITH STROKE
793
$line =~ s/\xB4/\\\|\[acute \]\\\|/g; # ISOdia : ACUTE ACCENT
794
$line =~ s/\xB5/\\\|\[lcaron\]\\\|/g; # ISOlat2: LATIN SMALL LETTER L WITH CARON
795
$line =~ s/\xB6/\\\|\[sacute\]\\\|/g; # ISOlat2: LATIN SMALL LETTER S WITH ACUTE
796
$line =~ s/\xB7/\\\|\[caron \]\\\|/g; # ISOdia : CARON
797
$line =~ s/\xB8/\\\|\[cedil \]\\\|/g; # ISOdia : CEDILLA
798
$line =~ s/\xB9/\\\|\[scaron\]\\\|/g; # ISOlat2: LATIN SMALL LETTER S WITH CARON
799
$line =~ s/\xBA/\\\|\[scedil\]\\\|/g; # ISOlat2: LATIN SMALL LETTER S WITH CEDILLA
800
$line =~ s/\xBB/\\\|\[tcaron\]\\\|/g; # ISOlat2: LATIN SMALL LETTER T WITH CARON
801
$line =~ s/\xBC/\\\|\[zacute\]\\\|/g; # ISOlat2: LATIN SMALL LETTER Z WITH ACUTE
802
$line =~ s/\xBD/\\\|\[dblac \]\\\|/g; # ISOdia : DOUBLE ACUTE ACCENT
803
$line =~ s/\xBE/\\\|\[zcaron\]\\\|/g; # ISOlat2: LATIN SMALL LETTER Z WITH CARON
804
$line =~ s/\xBF/\\\|\[zdot \]\\\|/g; # ISOlat2: LATIN SMALL LETTER Z WITH DOT ABOVE
805
$line =~ s/\xC0/\\\|\[Racute\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER R WITH ACUTE
806
$line =~ s/\xC1/\\\|\[Aacute\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER A WITH ACUTE
807
$line =~ s/\xC2/\\\|\[Acirc \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER A WITH CIRCUMFLEX
808
$line =~ s/\xC3/\\\|\[Abreve\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER A WITH BREVE
809
$line =~ s/\xC4/\\\|\[Auml \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER A WITH DIERESIS
810
$line =~ s/\xC5/\\\|\[Lacute\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER L WITH ACUTE
811
$line =~ s/\xC6/\\\|\[Cacute\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER C WITH ACUTE
812
$line =~ s/\xC7/\\\|\[Ccedil\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER C WITH CEDILLA
813
$line =~ s/\xC8/\\\|\[Ccaron\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER C WITH CARON
814
$line =~ s/\xC9/\\\|\[Eacute\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER E WITH ACUTE
815
$line =~ s/\xCA/\\\|\[Eogon \]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER E WITH OGONEK
816
$line =~ s/\xCB/\\\|\[Euml \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER E WITH DIERESIS
817
$line =~ s/\xCC/\\\|\[Ecaron\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER E WITH CARON
818
$line =~ s/\xCD/\\\|\[Iacute\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER I WITH ACUTE
819
$line =~ s/\xCE/\\\|\[Icirc \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER I WITH CIRCUMFLEX
820
$line =~ s/\xCF/\\\|\[Dcaron\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER D WITH CARON
821
$line =~ s/\xD0/\\\|\[Dstrok\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER D WITH STROKE
822
$line =~ s/\xD1/\\\|\[Nacute\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER N WITH ACUTE
823
$line =~ s/\xD2/\\\|\[Ncaron\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER N WITH CARON
824
$line =~ s/\xD3/\\\|\[Oacute\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER O WITH ACUTE
825
$line =~ s/\xD4/\\\|\[Ocirc \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER O WITH CIRCUMFLEX
826
$line =~ s/\xD5/\\\|\[Odblac\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
827
$line =~ s/\xD6/\\\|\[Ouml \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER O WITH DIERESIS
828
$line =~ s/\xD7/\\\|\[times \]\\\|/g; # ISOnum : MULTIPLICATION SIGN
829
$line =~ s/\xD8/\\\|\[Rcaron\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER R WITH CARON
830
$line =~ s/\xD9/\\\|\[Uring \]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER U WITH RING ABOVE
831
$line =~ s/\xDA/\\\|\[Uacute\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER U WITH ACUTE
832
$line =~ s/\xDB/\\\|\[Udblac\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
833
$line =~ s/\xDC/\\\|\[Uuml \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER U WITH DIERESIS
834
$line =~ s/\xDD/\\\|\[Yacute\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER Y WITH ACUTE
835
$line =~ s/\xDE/\\\|\[Tcedil\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER T WITH CEDILLA
836
$line =~ s/\xDF/\\\|\[szlig \]\\\|/g; # ISOlat1: LATIN SMALL LETTER SHARP S (German)
837
$line =~ s/\xE0/\\\|\[racute\]\\\|/g; # ISOlat2: LATIN SMALL LETTER R WITH ACUTE
838
$line =~ s/\xE1/\\\|\[aacute\]\\\|/g; # ISOlat1: LATIN SMALL LETTER A WITH ACUTE
839
$line =~ s/\xE2/\\\|\[acirc \]\\\|/g; # ISOlat1: LATIN SMALL LETTER A WITH CIRCUMFLEX
840
$line =~ s/\xE3/\\\|\[abreve\]\\\|/g; # ISOlat2: LATIN SMALL LETTER A WITH BREVE
841
$line =~ s/\xE4/\\\|\[auml \]\\\|/g; # ISOlat1: LATIN SMALL LETTER A WITH DIERESIS
842
$line =~ s/\xE5/\\\|\[lacute\]\\\|/g; # ISOlat2: LATIN SMALL LETTER L WITH ACUTE
843
$line =~ s/\xE6/\\\|\[cacute\]\\\|/g; # ISOlat2: LATIN SMALL LETTER C WITH ACUTE
844
$line =~ s/\xE7/\\\|\[ccedil\]\\\|/g; # ISOlat1: LATIN SMALL LETTER C WITH CEDILLA
845
$line =~ s/\xE8/\\\|\[ccaron\]\\\|/g; # ISOlat2: LATIN SMALL LETTER C WITH CARON
846
$line =~ s/\xE9/\\\|\[eacute\]\\\|/g; # ISOlat1: LATIN SMALL LETTER E WITH ACUTE
847
$line =~ s/\xEA/\\\|\[eogon \]\\\|/g; # ISOlat2: LATIN SMALL LETTER E WITH OGONEK
848
$line =~ s/\xEB/\\\|\[euml \]\\\|/g; # ISOlat1: LATIN SMALL LETTER E WITH DIERESIS
849
$line =~ s/\xEC/\\\|\[ecaron\]\\\|/g; # ISOlat2: LATIN SMALL LETTER E WITH CARON
850
$line =~ s/\xED/\\\|\[iacute\]\\\|/g; # ISOlat1: LATIN SMALL LETTER I WITH ACUTE
851
$line =~ s/\xEE/\\\|\[icirc \]\\\|/g; # ISOlat1: LATIN SMALL LETTER I WITH CIRCUMFLEX
852
$line =~ s/\xEF/\\\|\[dcaron\]\\\|/g; # ISOlat2: LATIN SMALL LETTER D WITH CARON
853
$line =~ s/\xF0/\\\|\[dstrok\]\\\|/g; # ISOlat2: LATIN SMALL LETTER D WITH STROKE
854
$line =~ s/\xF1/\\\|\[nacute\]\\\|/g; # ISOlat2: LATIN SMALL LETTER N WITH ACUTE
855
$line =~ s/\xF2/\\\|\[ncaron\]\\\|/g; # ISOlat2: LATIN SMALL LETTER N WITH CARON
856
$line =~ s/\xF3/\\\|\[oacute\]\\\|/g; # ISOlat1: LATIN SMALL LETTER O WITH ACUTE
857
$line =~ s/\xF4/\\\|\[ocirc \]\\\|/g; # ISOlat1: LATIN SMALL LETTER O WITH CIRCUMFLEX
858
$line =~ s/\xF5/\\\|\[odblac\]\\\|/g; # ISOlat2: LATIN SMALL LETTER O WITH DOUBLE ACUTE
859
$line =~ s/\xF6/\\\|\[ouml \]\\\|/g; # ISOlat1: LATIN SMALL LETTER O WITH DIERESIS
860
$line =~ s/\xF7/\\\|\[divide\]\\\|/g; # ISOnum : DIVISION SIGN
861
$line =~ s/\xF8/\\\|\[rcaron\]\\\|/g; # ISOlat2: LATIN SMALL LETTER R WITH CARON
862
$line =~ s/\xF9/\\\|\[uring \]\\\|/g; # ISOlat2: LATIN SMALL LETTER U WITH RING ABOVE
863
$line =~ s/\xFA/\\\|\[uacute\]\\\|/g; # ISOlat1: LATIN SMALL LETTER U WITH ACUTE
864
$line =~ s/\xFB/\\\|\[udblac\]\\\|/g; # ISOlat2: LATIN SMALL LETTER U WITH DOUBLE ACUTE
865
$line =~ s/\xFC/\\\|\[uuml \]\\\|/g; # ISOlat1: LATIN SMALL LETTER U WITH DIERESIS
866
$line =~ s/\xFD/\\\|\[yacute\]\\\|/g; # ISOlat1: LATIN SMALL LETTER Y WITH ACUTE
867
$line =~ s/\xFE/\\\|\[tcedil\]\\\|/g; # ISOlat2: LATIN SMALL LETTER T WITH CEDILLA
868
$line =~ s/\xFF/\\\|\[dot \]\\\|/g; # ISOdia : DOT ABOVE
874
#-----------------------------------------------------------------------
875
# ISO 8859-3 into SP SDATA entities.
877
# &iso_8859_3_sp_text_to_sdata (TEXT)
878
#-----------------------------------------------------------------------
879
sub iso_8859_3_sp_text_to_sdata
881
local ($line) = $_[0];
883
$line =~ s/\xA1/\\\|\[Hstrok\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER H WITH STROKE
884
$line =~ s/\xA2/\\\|\[breve \]\\\|/g; # ISOdia : BREVE
885
$line =~ s/\xA3/\\\|\[pound \]\\\|/g; # ISOnum : POUND SIGN
886
$line =~ s/\xA4/\\\|\[curren\]\\\|/g; # ISOnum : CURRENCY SIGN
887
$line =~ s/\xA6/\\\|\[Hcirc \]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER H WITH CIRCUMFLEX
888
$line =~ s/\xA7/\\\|\[sect \]\\\|/g; # ISOnum : SECTION SIGN
889
$line =~ s/\xA8/\\\|\[die \]\\\|/g; # ISOdia : DIERESIS
890
$line =~ s/\xA9/\\\|\[Idot \]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER I WITH DOT ABOVE
891
$line =~ s/\xAA/\\\|\[Scedil\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER S WITH CEDILLA
892
$line =~ s/\xAB/\\\|\[Gbreve\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER G WITH BREVE
893
$line =~ s/\xAC/\\\|\[Jcirc \]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER J WITH CIRCUMFLEX
894
$line =~ s/\xAD/\\\|\[shy \]\\\|/g; # ISOnum : SOFT HYPHEN
895
$line =~ s/\xAF/\\\|\[Zdot \]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER Z WITH DOT ABOVE
896
$line =~ s/\xB0/\\\|\[deg \]\\\|/g; # ISOnum : DEGREE SIGN
897
$line =~ s/\xB1/\\\|\[hstrok\]\\\|/g; # ISOlat2: LATIN SMALL LETTER H WITH STROKE
898
$line =~ s/\xB2/\\\|\[sup2 \]\\\|/g; # ISOnum : SUPERSCRIPT TWO
899
$line =~ s/\xB3/\\\|\[sup3 \]\\\|/g; # ISOnum : SUPERSCRIPT THREE
900
$line =~ s/\xB4/\\\|\[acute \]\\\|/g; # ISOdia : ACUTE ACCENT
901
$line =~ s/\xB5/\\\|\[micro \]\\\|/g; # ISOnum : MICRO SIGN
902
$line =~ s/\xB6/\\\|\[hcirc \]\\\|/g; # ISOlat2: LATIN SMALL LETTER H WITH CIRCUMFLEX
903
$line =~ s/\xB7/\\\|\[middot\]\\\|/g; # ISOnum : MIDDLE DOT
904
$line =~ s/\xB8/\\\|\[cedil \]\\\|/g; # ISOdia : CEDILLA
905
$line =~ s/\xB9/\\\|\[inodot\]\\\|/g; # ISOlat2: LATIN SMALL LETTER I DOT LESS
906
$line =~ s/\xBA/\\\|\[scedil\]\\\|/g; # ISOlat2: LATIN SMALL LETTER S WITH CEDILLA
907
$line =~ s/\xBB/\\\|\[gbreve\]\\\|/g; # ISOlat2: LATIN SMALL LETTER G WITH BREVE
908
$line =~ s/\xBC/\\\|\[jcirc \]\\\|/g; # ISOlat2: LATIN SMALL LETTER J WITH CIRCUMFLEX
909
$line =~ s/\xBD/\\\|\[frac12\]\\\|/g; # ISOnum : VULGAR FRACTION ONE HALF
910
$line =~ s/\xBF/\\\|\[zdot \]\\\|/g; # ISOlat2: LATIN SMALL LETTER Z WITH DOT ABOVE
911
$line =~ s/\xC0/\\\|\[Agrave\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER A WITH GRAVE
912
$line =~ s/\xC1/\\\|\[Aacute\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER A WITH ACUTE
913
$line =~ s/\xC2/\\\|\[Acirc \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER A WITH CIRCUMFLEX
914
$line =~ s/\xC4/\\\|\[Auml \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER A WITH DIERESIS
915
$line =~ s/\xC5/\\\|\[Cdot \]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER C WITH DOT ABOVE
916
$line =~ s/\xC6/\\\|\[Ccirc \]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER C WITH CIRCUMFLEX
917
$line =~ s/\xC7/\\\|\[Ccedil\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER C WITH CEDILLA
918
$line =~ s/\xC8/\\\|\[Egrave\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER E WITH GRAVE
919
$line =~ s/\xC9/\\\|\[Eacute\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER E WITH ACUTE
920
$line =~ s/\xCA/\\\|\[Ecirc \]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER E WITH CIRCUMFLEX
921
$line =~ s/\xCB/\\\|\[Euml \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER E WITH DIERESIS
922
$line =~ s/\xCC/\\\|\[Igrave\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER I WITH GRAVE
923
$line =~ s/\xCD/\\\|\[Iacute\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER I WITH ACUTE
924
$line =~ s/\xCE/\\\|\[Icirc \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER I WITH CIRCUMFLEX
925
$line =~ s/\xCF/\\\|\[Iuml \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER I WITH DIERESIS
926
$line =~ s/\xD1/\\\|\[Ntilde\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER N WITH TILDE
927
$line =~ s/\xD2/\\\|\[Ograve\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER O WITH GRAVE
928
$line =~ s/\xD3/\\\|\[Oacute\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER O WITH ACUTE
929
$line =~ s/\xD4/\\\|\[Ocirc \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER O WITH CIRCUMFLEX
930
$line =~ s/\xD5/\\\|\[Gdot \]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER G WITH DOT ABOVE
931
$line =~ s/\xD6/\\\|\[Ouml \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER O WITH DIERESIS
932
$line =~ s/\xD7/\\\|\[times \]\\\|/g; # ISOnum : MULTIPLICATION SIGN
933
$line =~ s/\xD8/\\\|\[Gcirc \]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER G WITH CIRCUMFLEX
934
$line =~ s/\xD9/\\\|\[Ugrave\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER U WITH GRAVE ABOVE
935
$line =~ s/\xDA/\\\|\[Uacute\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER U WITH ACUTE
936
$line =~ s/\xDB/\\\|\[Ucirc \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER U WITH CIRCUMFLEX
937
$line =~ s/\xDC/\\\|\[Uuml \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER U WITH DIERESIS
938
$line =~ s/\xDD/\\\|\[Ubreve\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER U WITH BREVE
939
$line =~ s/\xDE/\\\|\[Scirc \]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER S WITH CIRCUMFLEX
940
$line =~ s/\xDF/\\\|\[szlig \]\\\|/g; # ISOlat1: LATIN SMALL LETTER SHARP S (German)
941
$line =~ s/\xE0/\\\|\[agrave\]\\\|/g; # ISOlat1: LATIN SMALL LETTER A WITH GRAVE
942
$line =~ s/\xE1/\\\|\[aacute\]\\\|/g; # ISOlat1: LATIN SMALL LETTER A WITH ACUTE
943
$line =~ s/\xE2/\\\|\[acirc \]\\\|/g; # ISOlat1: LATIN SMALL LETTER A WITH CIRCUMFLEX
944
$line =~ s/\xE4/\\\|\[auml \]\\\|/g; # ISOlat1: LATIN SMALL LETTER A WITH DIERESIS
945
$line =~ s/\xE5/\\\|\[cdot \]\\\|/g; # ISOlat2: LATIN SMALL LETTER C WITH DOT ABOVE
946
$line =~ s/\xE6/\\\|\[ccirce\]\\\|/g; # ISOlat2: LATIN SMALL LETTER C WITH CIRCUMFLEX
947
$line =~ s/\xE7/\\\|\[ccedil\]\\\|/g; # ISOlat1: LATIN SMALL LETTER C WITH CEDILLA
948
$line =~ s/\xE8/\\\|\[egrave\]\\\|/g; # ISOlat1: LATIN SMALL LETTER E WITH GRAVE
949
$line =~ s/\xE9/\\\|\[eacute\]\\\|/g; # ISOlat2: LATIN SMALL LETTER E WITH ACUTE
950
$line =~ s/\xEA/\\\|\[ecirc \]\\\|/g; # ISOlat2: LATIN SMALL LETTER E WITH CIRCUMFLEX
951
$line =~ s/\xEB/\\\|\[euml \]\\\|/g; # ISOlat1: LATIN SMALL LETTER E WITH DIERESIS
952
$line =~ s/\xEC/\\\|\[igrave\]\\\|/g; # ISOlat1: LATIN SMALL LETTER I WITH GRAVE
953
$line =~ s/\xED/\\\|\[iacute\]\\\|/g; # ISOlat1: LATIN SMALL LETTER I WITH ACUTE
954
$line =~ s/\xEE/\\\|\[icirc \]\\\|/g; # ISOlat1: LATIN SMALL LETTER I WITH CIRCUMFLEX
955
$line =~ s/\xEF/\\\|\[iuml \]\\\|/g; # ISOlat1: LATIN SMALL LETTER I WITH DIERESIS
956
$line =~ s/\xF1/\\\|\[ntilde\]\\\|/g; # ISOlat1: LATIN SMALL LETTER N WITH TILDE
957
$line =~ s/\xF2/\\\|\[ograve\]\\\|/g; # ISOlat1: LATIN SMALL LETTER O WITH GRAVE
958
$line =~ s/\xF3/\\\|\[oacute\]\\\|/g; # ISOlat1: LATIN SMALL LETTER O WITH ACUTE
959
$line =~ s/\xF4/\\\|\[ocirc \]\\\|/g; # ISOlat1: LATIN SMALL LETTER O WITH CIRCUMFLEX
960
$line =~ s/\xF5/\\\|\[gdot \]\\\|/g; # ISOlat2: LATIN SMALL LETTER G WITH DOT ABOVE
961
$line =~ s/\xF6/\\\|\[ouml \]\\\|/g; # ISOlat1: LATIN SMALL LETTER O WITH DIERESIS
962
$line =~ s/\xF7/\\\|\[divide\]\\\|/g; # ISOnum : DIVISION SIGN
963
$line =~ s/\xF8/\\\|\[gcirc \]\\\|/g; # ISOlat2: LATIN SMALL LETTER G WITH CIRCUMFLEX
964
$line =~ s/\xF9/\\\|\[ugrave\]\\\|/g; # ISOlat1: LATIN SMALL LETTER U WITH GRAVE
965
$line =~ s/\xFA/\\\|\[uacute\]\\\|/g; # ISOlat1: LATIN SMALL LETTER U WITH ACUTE
966
$line =~ s/\xFB/\\\|\[ucirc \]\\\|/g; # ISOlat1: LATIN SMALL LETTER U WITH CIRCUMFLEX
967
$line =~ s/\xFC/\\\|\[uuml \]\\\|/g; # ISOlat1: LATIN SMALL LETTER U WITH DIERESIS
968
$line =~ s/\xFD/\\\|\[ubreve\]\\\|/g; # ISOlat2: LATIN SMALL LETTER U WITH BREVE
969
$line =~ s/\xFE/\\\|\[scirc \]\\\|/g; # ISOlat2: LATIN SMALL LETTER S WITH CIRCUMFLEX
970
$line =~ s/\xFF/\\\|\[dot \]\\\|/g; # ISOdia : DOT ABOVE
975
#-----------------------------------------------------------------------
976
# ISO 8859-4 into SP SDATA entities.
978
# &iso_8859_4_sp_text_to_sdata (TEXT)
979
#-----------------------------------------------------------------------
980
sub iso_8859_4_sp_text_to_sdata
982
local ($line) = $_[0];
984
$line =~ s/\xA1/\\\|\[Aogon \]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER A WITH OGONEK
985
$line =~ s/\xA2/\\\|\[kgreen\]\\\|/g; # ISOlat2: LATIN SMALL LETTER KRA (Greenlandic)
986
$line =~ s/\xA3/\\\|\[Rcedil\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER R WITH CEDILLA
987
$line =~ s/\xA4/\\\|\[curren\]\\\|/g; # ISOnum : CURRENCY SIGN
988
$line =~ s/\xA5/\\\|\[Itilde\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER I WITH TILDE
989
$line =~ s/\xA6/\\\|\[Lcedil\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER L WITH CEDILLA
990
$line =~ s/\xA7/\\\|\[sect \]\\\|/g; # ISOnum : SECTION SIGN
991
$line =~ s/\xA8/\\\|\[die \]\\\|/g; # ISOdia : DIERESIS
992
$line =~ s/\xA9/\\\|\[Scaron\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER S WITH CARON
993
$line =~ s/\xAA/\\\|\[Emacr \]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER E WITH MACRON
994
$line =~ s/\xAB/\\\|\[Gcedil\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER G WITH CEDILLA
995
$line =~ s/\xAC/\\\|\[Tstrok\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER T WITH STROKE
996
$line =~ s/\xAD/\\\|\[shy \]\\\|/g; # ISOnum : SOFT HYPHEN
997
$line =~ s/\xAE/\\\|\[Zcaron\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER Z WITH CARON
998
$line =~ s/\xAF/\\\|\[macr \]\\\|/g; # ISOdia : MACRON
999
$line =~ s/\xB0/\\\|\[deg \]\\\|/g; # ISOnum : DEGREE SIGN
1000
$line =~ s/\xB1/\\\|\[aogon \]\\\|/g; # ISOlat2: LATIN SMALL LETTER A WITH OGONEK
1001
$line =~ s/\xB2/\\\|\[ogon \]\\\|/g; # ISOdia : OGONEK
1002
$line =~ s/\xB3/\\\|\[rcedil\]\\\|/g; # ISOlat2: LATIN SMALL LETTER R WITH CEDILLA
1003
$line =~ s/\xB4/\\\|\[acute \]\\\|/g; # ISOdia : ACUTE ACCENT
1004
$line =~ s/\xB5/\\\|\[itilde\]\\\|/g; # ISOlat2: LATIN SMALL LETTER I WITH TILDE
1005
$line =~ s/\xB6/\\\|\[lcedil\]\\\|/g; # ISOlat2: LATIN SMALL LETTER L WITH CEDILLA
1006
$line =~ s/\xB7/\\\|\[caron \]\\\|/g; # ISOdia : CARON
1007
$line =~ s/\xB8/\\\|\[cedil \]\\\|/g; # ISOdia : CEDILLA
1008
$line =~ s/\xB9/\\\|\[scaron\]\\\|/g; # ISOlat2: LATIN SMALL LETTER S WITH CARON
1009
$line =~ s/\xBA/\\\|\[emacr \]\\\|/g; # ISOlat2: LATIN SMALL LETTER E WITH MACRON
1010
$line =~ s/\xBB/\\\|\[gcedil\]\\\|/g; # ISOlat2: LATIN SMALL LETTER G WITH CEDILLA
1011
$line =~ s/\xBC/\\\|\[tstrok\]\\\|/g; # ISOlat2: LATIN SMALL LETTER J WITH STROKE
1012
$line =~ s/\xBD/\\\|\[ENG \]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER ENG (Lappish)
1013
$line =~ s/\xBE/\\\|\[zcaron\]\\\|/g; # ISOlat2: LATIN SMALL LETTER Z WITH CARON
1014
$line =~ s/\xBF/\\\|\[eng \]\\\|/g; # ISOlat2: LATIN SMALL LETTER ENG (Lappish)
1015
$line =~ s/\xC0/\\\|\[Amacr \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER A WITH MACRON
1016
$line =~ s/\xC1/\\\|\[Aacute\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER A WITH ACUTE
1017
$line =~ s/\xC2/\\\|\[Acirc \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER A WITH CIRCUMFLEX
1018
$line =~ s/\xC3/\\\|\[Atilde\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER A WITH TILDE
1019
$line =~ s/\xC4/\\\|\[Auml \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER A WITH DIERESIS
1020
$line =~ s/\xC5/\\\|\[Aring \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER A WITH RING ABOVE
1021
$line =~ s/\xC6/\\\|\[AElig \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER AE
1022
$line =~ s/\xC7/\\\|\[Iogon \]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER I WITH OGONEK
1023
$line =~ s/\xC8/\\\|\[Ccaron\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER C WITH CARON
1024
$line =~ s/\xC9/\\\|\[Eacute\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER E WITH ACUTE
1025
$line =~ s/\xCA/\\\|\[Eogon \]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER E WITH OGONEK
1026
$line =~ s/\xCB/\\\|\[Euml \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER E WITH DIERESIS
1027
$line =~ s/\xCC/\\\|\[Edot \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER E WITH DOT ABOVE
1028
$line =~ s/\xCD/\\\|\[Iacute\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER I WITH ACUTE
1029
$line =~ s/\xCE/\\\|\[Icirc \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER I WITH CIRCUMFLEX
1030
$line =~ s/\xCF/\\\|\[Imacr \]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER I WITH MACRON
1031
$line =~ s/\xD0/\\\|\[Dstrok\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER D WITH STROKE
1032
$line =~ s/\xD1/\\\|\[Ncedil\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER N WITH CEDILLA
1033
$line =~ s/\xD2/\\\|\[Omacr \]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER O WITH MACRON
1034
$line =~ s/\xD3/\\\|\[Kcedil\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER K WITH CEDILLA
1035
$line =~ s/\xD4/\\\|\[Ocirc \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER O WITH CIRCUMFLEX
1036
$line =~ s/\xD5/\\\|\[Otilde\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER O WITH TILDE
1037
$line =~ s/\xD6/\\\|\[Ouml \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER O WITH DIERESIS
1038
$line =~ s/\xD7/\\\|\[times \]\\\|/g; # ISOnum : MULTIPLICATION SIGN
1039
$line =~ s/\xD8/\\\|\[Oslash\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER O WITH STROKE
1040
$line =~ s/\xD9/\\\|\[Uogon \]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER U WITH OGONEK
1041
$line =~ s/\xDA/\\\|\[Uacute\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER U WITH ACUTE
1042
$line =~ s/\xDB/\\\|\[Ucirc \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER U WITH CIRCUMFLEX
1043
$line =~ s/\xDC/\\\|\[Uuml \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER U WITH DIERESIS
1044
$line =~ s/\xDD/\\\|\[Utilde\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER U WITH TILDE
1045
$line =~ s/\xDE/\\\|\[Umacr \]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER U WITH MACRON
1046
$line =~ s/\xDF/\\\|\[szlig \]\\\|/g; # ISOlat1: LATIN SMALL LETTER SHARP S (German)
1047
$line =~ s/\xE0/\\\|\[amacr \]\\\|/g; # ISOlat1: LATIN SMALL LETTER A WITH MACRON
1048
$line =~ s/\xE1/\\\|\[aacute\]\\\|/g; # ISOlat1: LATIN SMALL LETTER A WITH ACUTE
1049
$line =~ s/\xE2/\\\|\[acirc \]\\\|/g; # ISOlat1: LATIN SMALL LETTER A WITH CIRCUMFLEX
1050
$line =~ s/\xE3/\\\|\[atilde\]\\\|/g; # ISOlat1: LATIN SMALL LETTER A WITH TILDE
1051
$line =~ s/\xE4/\\\|\[auml \]\\\|/g; # ISOlat1: LATIN SMALL LETTER A WITH DIERESIS
1052
$line =~ s/\xE5/\\\|\[aring \]\\\|/g; # ISOlat1: LATIN SMALL LETTER A WITH RING ABOVE
1053
$line =~ s/\xE6/\\\|\[aelig \]\\\|/g; # ISOlat1: LATIN SMALL LETTER AE
1054
$line =~ s/\xE7/\\\|\[iogon \]\\\|/g; # ISOlat2: LATIN SMALL LETTER I WITH OGONEK
1055
$line =~ s/\xE8/\\\|\[ccaron\]\\\|/g; # ISOlat2: LATIN SMALL LETTER C WITH CARON
1056
$line =~ s/\xE9/\\\|\[eacute\]\\\|/g; # ISOlat2: LATIN SMALL LETTER E WITH ACUTE
1057
$line =~ s/\xEA/\\\|\[eogon \]\\\|/g; # ISOlat2: LATIN SMALL LETTER E WITH OGONEK
1058
$line =~ s/\xEB/\\\|\[euml \]\\\|/g; # ISOlat1: LATIN SMALL LETTER E WITH DIERESIS
1059
$line =~ s/\xEC/\\\|\[edot \]\\\|/g; # ISOlat2: LATIN SMALL LETTER E WITH DOT ABOVE
1060
$line =~ s/\xED/\\\|\[iacute\]\\\|/g; # ISOlat1: LATIN SMALL LETTER I WITH ACUTE
1061
$line =~ s/\xEE/\\\|\[icirc \]\\\|/g; # ISOlat1: LATIN SMALL LETTER I WITH CIRCUMFLEX
1062
$line =~ s/\xEF/\\\|\[imacr \]\\\|/g; # ISOlat2: LATIN SMALL LETTER I WITH MACRON
1063
$line =~ s/\xF0/\\\|\[dstrok\]\\\|/g; # ISOlat2: LATIN SMALL LETTER D WITH STROKE
1064
$line =~ s/\xF1/\\\|\[ncedil\]\\\|/g; # ISOlat2: LATIN SMALL LETTER N WITH CEDILLA
1065
$line =~ s/\xF2/\\\|\[omacr \]\\\|/g; # ISOlat2: LATIN SMALL LETTER O WITH MACRON
1066
$line =~ s/\xF3/\\\|\[kcedil\]\\\|/g; # ISOlat2: LATIN SMALL LETTER K WITH CEDILLA
1067
$line =~ s/\xF4/\\\|\[ocirc \]\\\|/g; # ISOlat1: LATIN SMALL LETTER O WITH CIRCUMFLEX
1068
$line =~ s/\xF5/\\\|\[otilde\]\\\|/g; # ISOlat1: LATIN SMALL LETTER O WITH TILDE
1069
$line =~ s/\xF6/\\\|\[ouml \]\\\|/g; # ISOlat1: LATIN SMALL LETTER O WITH DIERESIS
1070
$line =~ s/\xF7/\\\|\[divide\]\\\|/g; # ISOnum : DIVISION SIGN
1071
$line =~ s/\xF8/\\\|\[oslash\]\\\|/g; # ISOlat1: LATIN SMALL LETTER O WITH STROKE
1072
$line =~ s/\xF9/\\\|\[uogon \]\\\|/g; # ISOlat2: LATIN SMALL LETTER U WITH OGONEK
1073
$line =~ s/\xFA/\\\|\[uacute\]\\\|/g; # ISOlat1: LATIN SMALL LETTER U WITH ACUTE
1074
$line =~ s/\xFB/\\\|\[ucirc \]\\\|/g; # ISOlat1: LATIN SMALL LETTER U WITH CIRCUMFLEX
1075
$line =~ s/\xFC/\\\|\[uuml \]\\\|/g; # ISOlat1: LATIN SMALL LETTER U WITH DIERESIS
1076
$line =~ s/\xFD/\\\|\[utilde\]\\\|/g; # ISOlat2: LATIN SMALL LETTER U WITH TILDE
1077
$line =~ s/\xFE/\\\|\[umacr \]\\\|/g; # ISOlat2: LATIN SMALL LETTER U WITH MACRON
1078
$line =~ s/\xFF/\\\|\[dot \]\\\|/g; # ISOdia : DOT ABOVE
1084
#-----------------------------------------------------------------------
1085
# ISO 8859-5 into SP SDATA entities.
1087
# &iso_8859_5_sp_text_to_sdata (TEXT)
1088
#-----------------------------------------------------------------------
1089
sub iso_8859_5_sp_text_to_sdata
1091
local ($line) = $_[0];
1093
$line =~ s/\xA1/\\\|\[IOcy \]\\\|/g; # ISOcyr1: CYRILLIC CAPITAL LETTER IO
1094
$line =~ s/\xA2/\\\|\[DJcy \]\\\|/g; # ISOcyr2: CYRILLIC CAPITAL LETTER DJE (Serbocroatian)
1095
$line =~ s/\xA3/\\\|\[GJcy \]\\\|/g; # ISOcyr2: CYRILLIC CAPITAL LETTER GJE (Macedonian)
1096
$line =~ s/\xA4/\\\|\[IEcy \]\\\|/g; # ISOcyr1: CYRILLIC CAPITAL LETTER UKRAINIAN IE
1097
$line =~ s/\xA5/\\\|\[DScy \]\\\|/g; # ISOcyr2: CYRILLIC CAPITAL LETTER DZE (Macedonian)
1098
$line =~ s/\xA6/\\\|\[Iukcy \]\\\|/g; # ISOcyr2: CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
1099
$line =~ s/\xA7/\\\|\[YIcy \]\\\|/g; # ISOcyr2: CYRILLIC CAPITAL LETTER YI (Ukrainian)
1100
$line =~ s/\xA8/\\\|\[Jukcy \]\\\|/g; # ISOcyr2: CYRILLIC CAPITAL LETTER JE
1101
$line =~ s/\xA9/\\\|\[LJcy \]\\\|/g; # ISOcyr2: CYRILLIC CAPITAL LETTER LJE
1102
$line =~ s/\xAA/\\\|\[NJcy \]\\\|/g; # ISOcyr2: CYRILLIC CAPITAL LETTER NJE
1103
$line =~ s/\xAB/\\\|\[TSHcy \]\\\|/g; # ISOcyr2: CYRILLIC CAPITAL LETTER TSHE (Serbocroatian)
1104
$line =~ s/\xAC/\\\|\[KJcy \]\\\|/g; # ISOcyr2: CYRILLIC CAPITAL LETTER KJE (Macedonian)
1105
$line =~ s/\xAD/\\\|\[shy \]\\\|/g; # ISOnum : SOFT HYPHEN
1106
$line =~ s/\xAE/\\\|\[Ubrcy \]\\\|/g; # ISOcyr2: CYRILLIC CAPITAL LETTER SHORT U (Byelorussian)
1107
$line =~ s/\xAF/\\\|\[DZcy \]\\\|/g; # ISOcyr2: CYRILLIC CAPITAL LETTER DZHE
1108
$line =~ s/\xB0/\\\|\[Acy \]\\\|/g; # ISOcyr1: CYRILLIC CAPITAL LETTER A
1109
$line =~ s/\xB1/\\\|\[Bcy \]\\\|/g; # ISOcyr1: CYRILLIC CAPITAL LETTER BE
1110
$line =~ s/\xB2/\\\|\[Vcy \]\\\|/g; # ISOcyr1: CYRILLIC CAPITAL LETTER VE
1111
$line =~ s/\xB3/\\\|\[Gcy \]\\\|/g; # ISOcyr1: CYRILLIC CAPITAL LETTER GHE
1112
$line =~ s/\xB4/\\\|\[Dcy \]\\\|/g; # ISOcyr1: CYRILLIC CAPITAL LETTER DE
1113
$line =~ s/\xB5/\\\|\[IEcy \]\\\|/g; # ISOcyr1: CYRILLIC CAPITAL LETTER IE
1114
$line =~ s/\xB6/\\\|\[ZHcy \]\\\|/g; # ISOcyr1: CYRILLIC CAPITAL LETTER ZHE
1115
$line =~ s/\xB7/\\\|\[Zcy \]\\\|/g; # ISOcyr1: CYRILLIC CAPITAL LETTER ZE
1116
$line =~ s/\xB8/\\\|\[Icy \]\\\|/g; # ISOcyr1: CYRILLIC CAPITAL LETTER I
1117
$line =~ s/\xB9/\\\|\[Jcy \]\\\|/g; # ISOcyr1: CYRILLIC CAPITAL LETTER SHORT I
1118
$line =~ s/\xBA/\\\|\[Kcy \]\\\|/g; # ISOcyr1: CYRILLIC CAPITAL LETTER KA
1119
$line =~ s/\xBB/\\\|\[Lcy \]\\\|/g; # ISOcyr1: CYRILLIC CAPITAL LETTER EL
1120
$line =~ s/\xBC/\\\|\[Mcy \]\\\|/g; # ISOcyr1: CYRILLIC CAPITAL LETTER EM
1121
$line =~ s/\xBD/\\\|\[Ncy \]\\\|/g; # ISOcyr1: CYRILLIC CAPITAL LETTER EN
1122
$line =~ s/\xBE/\\\|\[Ocy \]\\\|/g; # ISOcyr1: CYRILLIC CAPITAL LETTER O
1123
$line =~ s/\xBF/\\\|\[Pcy \]\\\|/g; # ISOcyr1: CYRILLIC CAPITAL LETTER PE
1124
$line =~ s/\xC0/\\\|\[Rcy \]\\\|/g; # ISOcyr1: CYRILLIC CAPITAL LETTER ER
1125
$line =~ s/\xC1/\\\|\[Scy \]\\\|/g; # ISOcyr1: CYRILLIC CAPITAL LETTER ES
1126
$line =~ s/\xC2/\\\|\[Tcy \]\\\|/g; # ISOcyr1: CYRILLIC CAPITAL LETTER TE
1127
$line =~ s/\xC3/\\\|\[Ucy \]\\\|/g; # ISOcyr1: CYRILLIC CAPITAL LETTER U
1128
$line =~ s/\xC4/\\\|\[Fcy \]\\\|/g; # ISOcyr1: CYRILLIC CAPITAL LETTER EF
1129
$line =~ s/\xC5/\\\|\[KHcy \]\\\|/g; # ISOcyr1: CYRILLIC CAPITAL LETTER HA
1130
$line =~ s/\xC6/\\\|\[TScy \]\\\|/g; # ISOcyr1: CYRILLIC CAPITAL LETTER TSE
1131
$line =~ s/\xC7/\\\|\[CHcy \]\\\|/g; # ISOcyr1: CYRILLIC CAPITAL LETTER CHE
1132
$line =~ s/\xC8/\\\|\[SHcy \]\\\|/g; # ISOcyr1: CYRILLIC CAPITAL LETTER SHA
1133
$line =~ s/\xC9/\\\|\[SHCHcy\]\\\|/g; # ISOcyr1: CYRILLIC CAPITAL LETTER SHCHA
1134
$line =~ s/\xCA/\\\|\[HARDcy\]\\\|/g; # ISOcyr1: CYRILLIC CAPITAL LETTER HARD SIGN
1135
$line =~ s/\xCB/\\\|\[Ycy \]\\\|/g; # ISOcyr1: CYRILLIC CAPITAL LETTER YERU
1136
$line =~ s/\xCC/\\\|\[SOFTcy\]\\\|/g; # ISOcyr1: CYRILLIC CAPITAL LETTER SOFT SIGN
1137
$line =~ s/\xCD/\\\|\[Ecy \]\\\|/g; # ISOcyr1: CYRILLIC CAPITAL LETTER E
1138
$line =~ s/\xCE/\\\|\[YUcy \]\\\|/g; # ISOcyr1: CYRILLIC CAPITAL LETTER YU
1139
$line =~ s/\xCF/\\\|\[YAcy \]\\\|/g; # ISOcyr1: CYRILLIC CAPITAL LETTER YA
1140
$line =~ s/\xD0/\\\|\[acy \]\\\|/g; # ISOcyr1: CYRILLIC SMALL LETTER A
1141
$line =~ s/\xD1/\\\|\[bcy \]\\\|/g; # ISOcyr1: CYRILLIC SMALL LETTER BE
1142
$line =~ s/\xD2/\\\|\[vcy \]\\\|/g; # ISOcyr1: CYRILLIC SMALL LETTER VE
1143
$line =~ s/\xD3/\\\|\[gcy \]\\\|/g; # ISOcyr1: CYRILLIC SMALL LETTER GHE
1144
$line =~ s/\xD4/\\\|\[dcy \]\\\|/g; # ISOcyr1: CYRILLIC SMALL LETTER DE
1145
$line =~ s/\xD5/\\\|\[iecy \]\\\|/g; # ISOcyr1: CYRILLIC SMALL LETTER IE
1146
$line =~ s/\xD6/\\\|\[zhcy \]\\\|/g; # ISOcyr1: CYRILLIC SMALL LETTER ZHE
1147
$line =~ s/\xD7/\\\|\[zcy \]\\\|/g; # ISOcyr1: CYRILLIC SMALL LETTER ZE
1148
$line =~ s/\xD8/\\\|\[icy \]\\\|/g; # ISOcyr1: CYRILLIC SMALL LETTER I
1149
$line =~ s/\xD9/\\\|\[jcy \]\\\|/g; # ISOcyr1: CYRILLIC SMALL LETTER SHORT I
1150
$line =~ s/\xDA/\\\|\[kcy \]\\\|/g; # ISOcyr1: CYRILLIC SMALL LETTER KA
1151
$line =~ s/\xDB/\\\|\[lcy \]\\\|/g; # ISOcyr1: CYRILLIC SMALL LETTER EL
1152
$line =~ s/\xDC/\\\|\[mcy \]\\\|/g; # ISOcyr1: CYRILLIC SMALL LETTER EM
1153
$line =~ s/\xDD/\\\|\[ncy \]\\\|/g; # ISOcyr1: CYRILLIC SMALL LETTER EN
1154
$line =~ s/\xDE/\\\|\[ocy \]\\\|/g; # ISOcyr1: CYRILLIC SMALL LETTER O
1155
$line =~ s/\xDF/\\\|\[pcy \]\\\|/g; # ISOcyr1: CYRILLIC SMALL LETTER PE
1156
$line =~ s/\xE0/\\\|\[rcy \]\\\|/g; # ISOcyr1: CYRILLIC SMALL LETTER ER
1157
$line =~ s/\xE1/\\\|\[scy \]\\\|/g; # ISOcyr1: CYRILLIC SMALL LETTER ES
1158
$line =~ s/\xE2/\\\|\[tcy \]\\\|/g; # ISOcyr1: CYRILLIC SMALL LETTER TE
1159
$line =~ s/\xE3/\\\|\[ucy \]\\\|/g; # ISOcyr1: CYRILLIC SMALL LETTER U
1160
$line =~ s/\xE4/\\\|\[fcy \]\\\|/g; # ISOcyr1: CYRILLIC SMALL LETTER EF
1161
$line =~ s/\xE5/\\\|\[khcy \]\\\|/g; # ISOcyr1: CYRILLIC SMALL LETTER HA
1162
$line =~ s/\xE6/\\\|\[tscy \]\\\|/g; # ISOcyr1: CYRILLIC SMALL LETTER TSE
1163
$line =~ s/\xE7/\\\|\[chcy \]\\\|/g; # ISOcyr1: CYRILLIC SMALL LETTER CHE
1164
$line =~ s/\xE8/\\\|\[shcy \]\\\|/g; # ISOcyr1: CYRILLIC SMALL LETTER SHA
1165
$line =~ s/\xE9/\\\|\[shchcy\]\\\|/g; # ISOcyr1: CYRILLIC SMALL LETTER SHCHA
1166
$line =~ s/\xEA/\\\|\[hardcy\]\\\|/g; # ISOcyr1: CYRILLIC SMALL LETTER HARD SIGN
1167
$line =~ s/\xEB/\\\|\[ycy \]\\\|/g; # ISOcyr1: CYRILLIC SMALL LETTER YERU
1168
$line =~ s/\xEC/\\\|\[softcy\]\\\|/g; # ISOcyr1: CYRILLIC SMALL LETTER SOFT SIGN
1169
$line =~ s/\xED/\\\|\[ecy \]\\\|/g; # ISOcyr1: CYRILLIC SMALL LETTER E
1170
$line =~ s/\xEE/\\\|\[yucy \]\\\|/g; # ISOcyr1: CYRILLIC SMALL LETTER YU
1171
$line =~ s/\xEF/\\\|\[yacy \]\\\|/g; # ISOcyr1: CYRILLIC SMALL LETTER YA
1172
$line =~ s/\xF0/\\\|\[numero\]\\\|/g; # ISOcyr1: NUMERO SIGN
1173
$line =~ s/\xF1/\\\|\[iocy \]\\\|/g; # ISOcyr1: CYRILLIC SMALL LETTER IO
1174
$line =~ s/\xF2/\\\|\[djcy \]\\\|/g; # ISOcyr2: CYRILLIC SMALL LETTER DJE (Serbocroatian)
1175
$line =~ s/\xF3/\\\|\[gjcy \]\\\|/g; # ISOcyr2: CYRILLIC SMALL LETTER GJE (Macedonian)
1176
$line =~ s/\xF4/\\\|\[iecy \]\\\|/g; # ISOcyr1: CYRILLIC SMALL LETTER UKRAINIAN IE
1177
$line =~ s/\xF5/\\\|\[dscy \]\\\|/g; # ISOcyr2: CYRILLIC SMALL LETTER DZE (Macedonian)
1178
$line =~ s/\xF6/\\\|\[iukcy \]\\\|/g; # ISOcyr2: CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
1179
$line =~ s/\xF7/\\\|\[yicy \]\\\|/g; # ISOcyr2: CYRILLIC SMALL LETTER YI (Ukrainian)
1180
$line =~ s/\xF8/\\\|\[jsercy\]\\\|/g; # ISOcyr2: CYRILLIC SMALL LETTER JE
1181
$line =~ s/\xF9/\\\|\[ljcy \]\\\|/g; # ISOcyr2: CYRILLIC SMALL LETTER LJE
1182
$line =~ s/\xFA/\\\|\[njcy \]\\\|/g; # ISOcyr2: CYRILLIC SMALL LETTER NJE
1183
$line =~ s/\xFB/\\\|\[tshcy \]\\\|/g; # ISOcyr2: CYRILLIC SMALL LETTER TSHE (Serbocroatian)
1184
$line =~ s/\xFC/\\\|\[kjcy \]\\\|/g; # ISOcyr2: CYRILLIC SMALL LETTER KJE (Macedonian)
1185
$line =~ s/\xFD/\\\|\[sect \]\\\|/g; # ISOnum : SECTION SIGN
1186
$line =~ s/\xFE/\\\|\[ubrcy \]\\\|/g; # ISOcyr2: CYRILLIC SMALL LETTER SHORT U (Byelorussian)
1187
$line =~ s/\xFF/\\\|\[dzcy \]\\\|/g; # ISOcyr2: CYRILLIC SMALL LETTER DZHE
1192
#-----------------------------------------------------------------------
1193
# ISO 8859-6 into SP SDATA entities.
1195
# There is no ISO entities for arabic characters.
1197
# &iso_8859_6_sp_text_to_sdata (TEXT)
1198
#-----------------------------------------------------------------------
1199
sub iso_8859_6_sp_text_to_sdata
1201
local ($line) = $_[0];
1203
$line =~ s/\xA4/\\\|\[curren\]\\\|/g; # ISOnum : CURRENCY SIGN
1204
$line =~ s/\xAD/\\\|\[shy \]\\\|/g; # ISOnum : SOFT HYPHEN
1209
#-----------------------------------------------------------------------
1210
# ISO 8859-7 into SP SDATA entities.
1212
# &iso_8859_7_sp_text_to_sdata (TEXT)
1213
#-----------------------------------------------------------------------
1214
sub iso_8859_7_sp_text_to_sdata
1216
local ($line) = $_[0];
1218
$line =~ s/\xA1/\\\|\[lsquo \]\\\|/g; # ISOnum : SINGLE HIGH-REVERSED-9 QUOTATION MARK
1219
$line =~ s/\xA2/\\\|\[rsquo \]\\\|/g; # ISOnum : RIGHT SINGLE QUOTATION MARK
1220
$line =~ s/\xA3/\\\|\[pound \]\\\|/g; # ISOnum : POUND SIGN
1221
$line =~ s/\xA6/\\\|\[brvbar\]\\\|/g; # ISOnum : BROKEN BAR
1222
$line =~ s/\xA7/\\\|\[sect \]\\\|/g; # ISOnum : SECTION SIGN
1223
$line =~ s/\xA8/\\\|\[die \]\\\|/g; # ISOdia : DIERESIS
1224
$line =~ s/\xA9/\\\|\[copy \]\\\|/g; # ISOnum : COPYRIGHT SIGN
1225
$line =~ s/\xAB/\\\|\[laquo \]\\\|/g; # ISOnum : LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
1226
$line =~ s/\xAC/\\\|\[not \]\\\|/g; # ISOnum : NOT SIGN
1227
$line =~ s/\xAD/\\\|\[shy \]\\\|/g; # ISOnum : SOFT HYPHEN
1228
$line =~ s/\xAF/\\\|\[mdash \]\\\|/g; # ISOpub : EM DASH
1229
$line =~ s/\xB0/\\\|\[deg \]\\\|/g; # ISOnum : DEGREE SIGN
1230
$line =~ s/\xB1/\\\|\[plusmn\]\\\|/g; # ISOnum : PLUS-MINUS SIGN
1231
$line =~ s/\xB2/\\\|\[sup2 \]\\\|/g; # ISOnum : SUPERSCRIPT TWO
1232
$line =~ s/\xB3/\\\|\[sup3 \]\\\|/g; # ISOnum : SUPERSCRIPT THREE
1233
$line =~ s/\xB4/\\\|\[acute \]\\\|/g; # ISOdia : ACUTE ACCENT
1234
$line =~ s/\xB5/\\\|\[diagr \]\\\|/g; # ISOgrk?: ACUTE ACCENT AND DIERESIS (Tonos and Dialytika)
1235
$line =~ s/\xB6/\\\|\[Aacgr \]\\\|/g; # ISOgrk2: GREEK CAPITAL LETTER ALPHA WITH ACUTE
1236
$line =~ s/\xB7/\\\|\[middot\]\\\|/g; # ISOnum : MIDDLE DOT
1237
$line =~ s/\xB8/\\\|\[Eacgr \]\\\|/g; # ISOgrk2: GREEK CAPITAL LETTER EPSILON WITH ACUTE
1238
$line =~ s/\xB9/\\\|\[EEacgr\]\\\|/g; # ISOgrk2: GREEK CAPITAL LETTER ETA WITH ACUTE
1239
$line =~ s/\xBA/\\\|\[Iacgr \]\\\|/g; # ISOgrk2: GREEK CAPITAL LETTER IOTA WITH ACUTE
1240
$line =~ s/\xBB/\\\|\[raquo \]\\\|/g; # ISOnum : RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
1241
$line =~ s/\xBC/\\\|\[Oacgr \]\\\|/g; # ISOgrk2: GREEK CAPITAL LETTER OMICRON WITH ACUTE
1242
$line =~ s/\xBD/\\\|\[frac12\]\\\|/g; # ISOnum : VULGAR FRACTION ONE HALF
1243
$line =~ s/\xBE/\\\|\[Uacgr \]\\\|/g; # ISOgrk2: GREEK CAPITAL LETTER UPSILON WITH ACUTE
1244
$line =~ s/\xBF/\\\|\[OHacgr\]\\\|/g; # ISOgrk2: GREEK CAPITAL LETTER OMEGA WITH ACUTE
1245
$line =~ s/\xC0/\\\|\[idiagr\]\\\|/g; # ISOgrk2: GREEK SMALL LETTER IOTA WITH ACUTE AND DIERESIS
1246
$line =~ s/\xC1/\\\|\[Agr \]\\\|/g; # ISOgrk1: GREEK CAPITAL LETTER ALPHA
1247
$line =~ s/\xC2/\\\|\[Bgr \]\\\|/g; # ISOgrk1: GREEK CAPITAL LETTER BETA
1248
$line =~ s/\xC3/\\\|\[Ggr \]\\\|/g; # ISOgrk1: GREEK CAPITAL LETTER GAMMA
1249
$line =~ s/\xC4/\\\|\[Dgr \]\\\|/g; # ISOgrk1: GREEK CAPITAL LETTER DELTA
1250
$line =~ s/\xC5/\\\|\[Egr \]\\\|/g; # ISOgrk1: GREEK CAPITAL LETTER EPSILON
1251
$line =~ s/\xC6/\\\|\[Zgr \]\\\|/g; # ISOgrk1: GREEK CAPITAL LETTER ZETA
1252
$line =~ s/\xC7/\\\|\[EEgr \]\\\|/g; # ISOgrk1: GREEK CAPITAL LETTER ETA
1253
$line =~ s/\xC8/\\\|\[THgr \]\\\|/g; # ISOgrk1: GREEK CAPITAL LETTER THETA
1254
$line =~ s/\xC9/\\\|\[Igr \]\\\|/g; # ISOgrk1: GREEK CAPITAL LETTER IOTA
1255
$line =~ s/\xCA/\\\|\[Kgr \]\\\|/g; # ISOgrk1: GREEK CAPITAL LETTER KAPPA
1256
$line =~ s/\xCB/\\\|\[Lgr \]\\\|/g; # ISOgrk1: GREEK CAPITAL LETTER LAMBDA
1257
$line =~ s/\xCC/\\\|\[Mgr \]\\\|/g; # ISOgrk1: GREEK CAPITAL LETTER MU
1258
$line =~ s/\xCD/\\\|\[Ngr \]\\\|/g; # ISOgrk1: GREEK CAPITAL LETTER NU
1259
$line =~ s/\xCE/\\\|\[Xgr \]\\\|/g; # ISOgrk1: GREEK CAPITAL LETTER XI
1260
$line =~ s/\xCF/\\\|\[Ogr \]\\\|/g; # ISOgrk1: GREEK CAPITAL LETTER OMICRON
1261
$line =~ s/\xD0/\\\|\[Pgr \]\\\|/g; # ISOgrk1: GREEK CAPITAL LETTER PI
1262
$line =~ s/\xD1/\\\|\[Rgr \]\\\|/g; # ISOgrk1: GREEK CAPITAL LETTER RHO
1263
$line =~ s/\xD3/\\\|\[Sgr \]\\\|/g; # ISOgrk1: GREEK CAPITAL LETTER SIGMA
1264
$line =~ s/\xD4/\\\|\[Tgr \]\\\|/g; # ISOgrk1: GREEK CAPITAL LETTER TAU
1265
$line =~ s/\xD5/\\\|\[Ugr \]\\\|/g; # ISOgrk1: GREEK CAPITAL LETTER UPSILON
1266
$line =~ s/\xD6/\\\|\[PHgr \]\\\|/g; # ISOgrk1: GREEK CAPITAL LETTER PHI
1267
$line =~ s/\xD7/\\\|\[KHgr \]\\\|/g; # ISOgrk1: GREEK CAPITAL LETTER CHI
1268
$line =~ s/\xD8/\\\|\[PSgr \]\\\|/g; # ISOgrk1: GREEK CAPITAL LETTER PSI
1269
$line =~ s/\xD9/\\\|\[OHgr \]\\\|/g; # ISOgrk1: GREEK CAPITAL LETTER OMEGA
1270
$line =~ s/\xDA/\\\|\[Idigr \]\\\|/g; # ISOgrk2: GREEK CAPITAL LETTER IOTA WITH DIERESIS
1271
$line =~ s/\xDB/\\\|\[Udigr \]\\\|/g; # ISOgrk2: GREEK CAPITAL LETTER UPSILON WITH DIERESIS
1272
$line =~ s/\xDC/\\\|\[aacgr \]\\\|/g; # ISOgrk2: GREEK SMALL LETTER ALPHA WITH ACUTE
1273
$line =~ s/\xDD/\\\|\[eacgr \]\\\|/g; # ISOgrk2: GREEK SMALL LETTER EPSILON WITH ACUTE
1274
$line =~ s/\xDE/\\\|\[eeacgr\]\\\|/g; # ISOgrk2: GREEK SMALL LETTER ETA WITH ACUTE
1275
$line =~ s/\xDF/\\\|\[iacgr \]\\\|/g; # ISOgrk2: GREEK SMALL LETTER IOTA WITH ACUTE
1276
$line =~ s/\xE0/\\\|\[udiagr\]\\\|/g; # ISOgrk2: GREEK SMALL LETTER UPSILON WITH ACUTE AND DIERESIS
1277
$line =~ s/\xE1/\\\|\[agr \]\\\|/g; # ISOgrk1: GREEK SMALL LETTER ALPHA
1278
$line =~ s/\xE2/\\\|\[bgr \]\\\|/g; # ISOgrk1: GREEK SMALL LETTER BETA
1279
$line =~ s/\xE3/\\\|\[ggr \]\\\|/g; # ISOgrk1: GREEK SMALL LETTER GAMMA
1280
$line =~ s/\xE4/\\\|\[dgr \]\\\|/g; # ISOgrk1: GREEK SMALL LETTER DELTA
1281
$line =~ s/\xE5/\\\|\[egr \]\\\|/g; # ISOgrk1: GREEK SMALL LETTER EPSILON
1282
$line =~ s/\xE6/\\\|\[zgr \]\\\|/g; # ISOgrk1: GREEK SMALL LETTER ZETA
1283
$line =~ s/\xE7/\\\|\[eegr \]\\\|/g; # ISOgrk1: GREEK SMALL LETTER ETA
1284
$line =~ s/\xE8/\\\|\[thgr \]\\\|/g; # ISOgrk1: GREEK SMALL LETTER THETA
1285
$line =~ s/\xE9/\\\|\[igr \]\\\|/g; # ISOgrk1: GREEK SMALL LETTER IOTA
1286
$line =~ s/\xEA/\\\|\[kgr \]\\\|/g; # ISOgrk1: GREEK SMALL LETTER KAPPA
1287
$line =~ s/\xEB/\\\|\[lgr \]\\\|/g; # ISOgrk1: GREEK SMALL LETTER LAMBDA
1288
$line =~ s/\xEC/\\\|\[mgr \]\\\|/g; # ISOgrk1: GREEK SMALL LETTER MU
1289
$line =~ s/\xED/\\\|\[ngr \]\\\|/g; # ISOgrk1: GREEK SMALL LETTER NU
1290
$line =~ s/\xEE/\\\|\[xgr \]\\\|/g; # ISOgrk1: GREEK SMALL LETTER XI
1291
$line =~ s/\xEF/\\\|\[ogr \]\\\|/g; # ISOgrk1: GREEK SMALL LETTER OMICRON
1292
$line =~ s/\xF0/\\\|\[pgr \]\\\|/g; # ISOgrk1: GREEK SMALL LETTER PI
1293
$line =~ s/\xF1/\\\|\[rgr \]\\\|/g; # ISOgrk1: GREEK SMALL LETTER RHO
1294
$line =~ s/\xF2/\\\|\[sfgr \]\\\|/g; # ISOgrk1: GREEK SMALL LETTER FINAL SIGMA
1295
$line =~ s/\xF3/\\\|\[sgr \]\\\|/g; # ISOgrk1: GREEK SMALL LETTER SIGMA
1296
$line =~ s/\xF4/\\\|\[tgr \]\\\|/g; # ISOgrk1: GREEK SMALL LETTER TAU
1297
$line =~ s/\xF5/\\\|\[ugr \]\\\|/g; # ISOgrk1: GREEK SMALL LETTER UPSILON
1298
$line =~ s/\xF6/\\\|\[phgr \]\\\|/g; # ISOgrk1: GREEK SMALL LETTER PHI
1299
$line =~ s/\xF7/\\\|\[khgr \]\\\|/g; # ISOgrk1: GREEK SMALL LETTER CHI
1300
$line =~ s/\xF8/\\\|\[psgr \]\\\|/g; # ISOgrk1: GREEK SMALL LETTER PSI
1301
$line =~ s/\xF9/\\\|\[ohgr \]\\\|/g; # ISOgrk1: GREEK SMALL LETTER OMEGA
1302
$line =~ s/\xFA/\\\|\[idigr \]\\\|/g; # ISOgrk2: GREEK SMALL LETTER IOTA WITH DIERESIS
1303
$line =~ s/\xFB/\\\|\[udigr \]\\\|/g; # ISOgrk2: GREEK SMALL LETTER UPSILON WITH DIERESIS
1304
$line =~ s/\xFC/\\\|\[oacgr \]\\\|/g; # ISOgrk2: GREEK SMALL LETTER OMICRON WITH ACUTE
1305
$line =~ s/\xFD/\\\|\[uacgr \]\\\|/g; # ISOgrk2: GREEK SMALL LETTER UPSILON WITH ACUTE
1306
$line =~ s/\xFE/\\\|\[ohacgr\]\\\|/g; # ISOgrk2: GREEK SMALL LETTER OMEGA WITH ACUTE
1311
#-----------------------------------------------------------------------
1312
# ISO 8859-8 into SP SDATA entities.
1314
# There is no ISO entities for hebrew characters.
1316
# &iso_8859_8_sp_text_to_sdata (TEXT)
1317
#-----------------------------------------------------------------------
1318
sub iso_8859_8_sp_text_to_sdata
1320
local ($line) = $_[0];
1322
$line =~ s/\xA2/\\\|\[cent \]\\\|/g; # ISOnum : CENT SIGN
1323
$line =~ s/\xA3/\\\|\[pound \]\\\|/g; # ISOnum : POUND SIGN
1324
$line =~ s/\xA4/\\\|\[curren\]\\\|/g; # ISOnum : CURRENCY SIGN
1325
$line =~ s/\xA5/\\\|\[yen \]\\\|/g; # ISOnum : YEN SIGN
1326
$line =~ s/\xA6/\\\|\[brvbar\]\\\|/g; # ISOnum : BROKEN BAR
1327
$line =~ s/\xA7/\\\|\[sect \]\\\|/g; # ISOnum : SECTION SIGN
1328
$line =~ s/\xA8/\\\|\[die \]\\\|/g; # ISOdia : DIERESIS
1329
$line =~ s/\xA9/\\\|\[copy \]\\\|/g; # ISOnum : COPYRIGHT SIGN
1330
$line =~ s/\xAA/\\\|\[times \]\\\|/g; # ISOnum : MULTIPLICATION SIGN
1331
$line =~ s/\xAB/\\\|\[laquo \]\\\|/g; # ISOnum : LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
1332
$line =~ s/\xAC/\\\|\[not \]\\\|/g; # ISOnum : NOT SIGN
1333
$line =~ s/\xAD/\\\|\[shy \]\\\|/g; # ISOnum : SOFT HYPHEN
1334
$line =~ s/\xAE/\\\|\[reg \]\\\|/g; # ISOnum : REGISTERED SIGN
1335
$line =~ s/\xAF/\\\|\[macr \]\\\|/g; # ISOdia : OVERLINE (MACRON)
1336
$line =~ s/\xB0/\\\|\[deg \]\\\|/g; # ISOnum : DEGREE SIGN
1337
$line =~ s/\xB1/\\\|\[plusmn\]\\\|/g; # ISOnum : PLUS-MINUS SIGN
1338
$line =~ s/\xB2/\\\|\[sup2 \]\\\|/g; # ISOnum : SUPERSCRIPT TWO
1339
$line =~ s/\xB3/\\\|\[sup3 \]\\\|/g; # ISOnum : SUPERSCRIPT THREE
1340
$line =~ s/\xB4/\\\|\[acute \]\\\|/g; # ISOdia : ACUTE ACCENT
1341
$line =~ s/\xB5/\\\|\[micro \]\\\|/g; # ISOnum : MICRO SIGN
1342
$line =~ s/\xB6/\\\|\[para \]\\\|/g; # ISOnum : PILCROW SIGN
1343
$line =~ s/\xB7/\\\|\[middot\]\\\|/g; # ISOnum : MIDDLE DOT
1344
$line =~ s/\xB8/\\\|\[cedil \]\\\|/g; # ISOdia : CEDILLA
1345
$line =~ s/\xB9/\\\|\[sup1 \]\\\|/g; # ISOnum : SUPERSCRIPT ONE
1346
$line =~ s/\xBA/\\\|\[divide\]\\\|/g; # ISOlat1: DIVISION SIGN
1347
$line =~ s/\xBB/\\\|\[raquo \]\\\|/g; # ISOnum : RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
1348
$line =~ s/\xBC/\\\|\[frac14\]\\\|/g; # ISOnum : VULGAR FRACTION ONE QUARTER
1349
$line =~ s/\xBD/\\\|\[frac12\]\\\|/g; # ISOnum : VULGAR FRACTION ONE HALF
1350
$line =~ s/\xBE/\\\|\[frac34\]\\\|/g; # ISOnum : VULGAR FRACTION THREE QUARTERS
1356
#-----------------------------------------------------------------------
1357
# ISO 8859-9 into SP SDATA entities.
1359
# &iso_8859_9_sp_text_to_sdata (TEXT)
1360
#-----------------------------------------------------------------------
1361
sub iso_8859_9_sp_text_to_sdata
1363
local ($line) = $_[0];
1365
$line =~ s/\xA1/\\\|\[iexcl \]\\\|/g; # ISOnum : INVERTED EXCLAMATION MARK
1366
$line =~ s/\xA2/\\\|\[cent \]\\\|/g; # ISOnum : CENT SIGN
1367
$line =~ s/\xA3/\\\|\[pound \]\\\|/g; # ISOnum : POUND SIGN
1368
$line =~ s/\xA4/\\\|\[curren\]\\\|/g; # ISOnum : CURRENCY SIGN
1369
$line =~ s/\xA5/\\\|\[yen \]\\\|/g; # ISOnum : YEN SIGN
1370
$line =~ s/\xA6/\\\|\[brvbar\]\\\|/g; # ISOnum : BROKEN BAR
1371
$line =~ s/\xA7/\\\|\[sect \]\\\|/g; # ISOnum : SECTION SIGN
1372
$line =~ s/\xA8/\\\|\[die \]\\\|/g; # ISOdia : DIERESIS
1373
$line =~ s/\xA9/\\\|\[copy \]\\\|/g; # ISOnum : COPYRIGHT SIGN
1374
$line =~ s/\xAA/\\\|\[ordf \]\\\|/g; # ISOnum : FEMININE ORDINAL INDICATOR
1375
$line =~ s/\xAB/\\\|\[laquo \]\\\|/g; # ISOnum : LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
1376
$line =~ s/\xAC/\\\|\[not \]\\\|/g; # ISOnum : NOT SIGN
1377
$line =~ s/\xAD/\\\|\[shy \]\\\|/g; # ISOnum : SOFT HYPHEN
1378
$line =~ s/\xAE/\\\|\[reg \]\\\|/g; # ISOnum : REGISTERED SIGN
1379
$line =~ s/\xAF/\\\|\[macr \]\\\|/g; # ISOdia : OVERLINE (MACRON)
1380
$line =~ s/\xB0/\\\|\[deg \]\\\|/g; # ISOnum : DEGREE SIGN
1381
$line =~ s/\xB1/\\\|\[plusmn\]\\\|/g; # ISOnum : PLUS-MINUS SIGN
1382
$line =~ s/\xB2/\\\|\[sup2 \]\\\|/g; # ISOnum : SUPERSCRIPT TWO
1383
$line =~ s/\xB3/\\\|\[sup3 \]\\\|/g; # ISOnum : SUPERSCRIPT THREE
1384
$line =~ s/\xB4/\\\|\[acute \]\\\|/g; # ISOdia : ACUTE ACCENT
1385
$line =~ s/\xB5/\\\|\[micro \]\\\|/g; # ISOnum : MICRO SIGN
1386
$line =~ s/\xB6/\\\|\[para \]\\\|/g; # ISOnum : PILCROW SIGN
1387
$line =~ s/\xB7/\\\|\[middot\]\\\|/g; # ISOnum : MIDDLE DOT
1388
$line =~ s/\xB8/\\\|\[cedil \]\\\|/g; # ISOdia : CEDILLA
1389
$line =~ s/\xB9/\\\|\[sup1 \]\\\|/g; # ISOnum : SUPERSCRIPT ONE
1390
$line =~ s/\xBA/\\\|\[ordm \]\\\|/g; # ISOnum : MASCULINE ORDINAL INDICATOR
1391
$line =~ s/\xBB/\\\|\[raquo \]\\\|/g; # ISOnum : RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
1392
$line =~ s/\xBC/\\\|\[frac14\]\\\|/g; # ISOnum : VULGAR FRACTION ONE QUARTER
1393
$line =~ s/\xBD/\\\|\[frac12\]\\\|/g; # ISOnum : VULGAR FRACTION ONE HALF
1394
$line =~ s/\xBE/\\\|\[frac34\]\\\|/g; # ISOnum : VULGAR FRACTION THREE QUARTERS
1395
$line =~ s/\xBF/\\\|\[iquest\]\\\|/g; # ISOnum : INVERTED QUESTION MARK
1396
$line =~ s/\xC0/\\\|\[Agrave\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER A WITH GRAVE
1397
$line =~ s/\xC1/\\\|\[Aacute\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER A WITH ACUTE
1398
$line =~ s/\xC2/\\\|\[Acirc \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER A WITH CIRCUMFLEX
1399
$line =~ s/\xC3/\\\|\[Atilde\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER A WITH TILDE
1400
$line =~ s/\xC4/\\\|\[Auml \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER A WITH DIERESIS
1401
$line =~ s/\xC5/\\\|\[Aring \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER A WITH RING ABOVE
1402
$line =~ s/\xC6/\\\|\[AElig \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER AE
1403
$line =~ s/\xC7/\\\|\[Ccedil\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER C WITH CEDILLA
1404
$line =~ s/\xC8/\\\|\[Egrave\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER E WITH GRAVE
1405
$line =~ s/\xC9/\\\|\[Eacute\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER E WITH ACUTE
1406
$line =~ s/\xCA/\\\|\[Ecirc \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER E WITH CIRCUMFLEX
1407
$line =~ s/\xCB/\\\|\[Euml \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER E WITH DIERESIS
1408
$line =~ s/\xCC/\\\|\[Igrave\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER I WITH GRAVE
1409
$line =~ s/\xCD/\\\|\[Iacute\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER I WITH ACUTE
1410
$line =~ s/\xCE/\\\|\[Icirc \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER I WITH CIRCUMFLEX
1411
$line =~ s/\xCF/\\\|\[Iuml \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER I WITH DIERESIS
1412
$line =~ s/\xD0/\\\|\[Gbreve\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER G WITH BREVE
1413
$line =~ s/\xD1/\\\|\[Ntilde\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER N WITH TILDE
1414
$line =~ s/\xD2/\\\|\[Ograve\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER O WITH GRAVE
1415
$line =~ s/\xD3/\\\|\[Oacute\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER O WITH ACUTE
1416
$line =~ s/\xD4/\\\|\[Ocirc \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER O WITH CIRCUMFLEX
1417
$line =~ s/\xD5/\\\|\[Otilde\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER O WITH TILDE
1418
$line =~ s/\xD6/\\\|\[Ouml \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER O WITH DIERESIS
1419
$line =~ s/\xD7/\\\|\[times \]\\\|/g; # ISOnum : MULTIPLICATION SIGN
1420
$line =~ s/\xD8/\\\|\[Oslash\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER O WITH STROKE
1421
$line =~ s/\xD9/\\\|\[Ugrave\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER U WITH GRAVE
1422
$line =~ s/\xDA/\\\|\[Uacute\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER U WITH ACUTE
1423
$line =~ s/\xDB/\\\|\[Ucirc \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER U WITH CIRCUMFLEX
1424
$line =~ s/\xDC/\\\|\[Uuml \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER U WITH DIERESIS
1425
$line =~ s/\xDD/\\\|\[Idot \]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER I WITH DOT ABOVE
1426
$line =~ s/\xDE/\\\|\[Scedil\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER S WITH CEDILLA
1427
$line =~ s/\xDF/\\\|\[szlig \]\\\|/g; # ISOlat1: LATIN SMALL LETTER SHARP S (German)
1428
$line =~ s/\xE0/\\\|\[agrave\]\\\|/g; # ISOlat1: LATIN SMALL LETTER A WITH GRAVE
1429
$line =~ s/\xE1/\\\|\[aacute\]\\\|/g; # ISOlat1: LATIN SMALL LETTER A WITH ACUTE
1430
$line =~ s/\xE2/\\\|\[acirc \]\\\|/g; # ISOlat1: LATIN SMALL LETTER A WITH CIRCUMFLEX
1431
$line =~ s/\xE3/\\\|\[atilde\]\\\|/g; # ISOlat1: LATIN SMALL LETTER A WITH TILDE
1432
$line =~ s/\xE4/\\\|\[auml \]\\\|/g; # ISOlat1: LATIN SMALL LETTER A WITH DIERESIS
1433
$line =~ s/\xE5/\\\|\[aring \]\\\|/g; # ISOlat1: LATIN SMALL LETTER A WITH RING ABOVE
1434
$line =~ s/\xE6/\\\|\[aelig \]\\\|/g; # ISOlat1: LATIN SMALL LETTER AE
1435
$line =~ s/\xE7/\\\|\[ccedil\]\\\|/g; # ISOlat1: LATIN SMALL LETTER C WITH CEDILLA
1436
$line =~ s/\xE8/\\\|\[egrave\]\\\|/g; # ISOlat1: LATIN SMALL LETTER E WITH GRAVE
1437
$line =~ s/\xE9/\\\|\[eacute\]\\\|/g; # ISOlat1: LATIN SMALL LETTER E WITH ACUTE
1438
$line =~ s/\xEA/\\\|\[eogon \]\\\|/g; # ISOlat2: LATIN SMALL LETTER E WITH OGONEK
1439
$line =~ s/\xEB/\\\|\[euml \]\\\|/g; # ISOlat1: LATIN SMALL LETTER E WITH DIERESIS
1440
$line =~ s/\xEC/\\\|\[edot \]\\\|/g; # ISOlat2: LATIN SMALL LETTER E WITH DOT ABOVE
1441
$line =~ s/\xED/\\\|\[iacute\]\\\|/g; # ISOlat1: LATIN SMALL LETTER I WITH ACUTE
1442
$line =~ s/\xEE/\\\|\[icirc \]\\\|/g; # ISOlat1: LATIN SMALL LETTER I WITH CIRCUMFLEX
1443
$line =~ s/\xEF/\\\|\[imacr \]\\\|/g; # ISOlat2: LATIN SMALL LETTER I WITH MACRON
1444
$line =~ s/\xF0/\\\|\[gbreve\]\\\|/g; # ISOlat2: LATIN SMALL LETTER G WITH BREVE
1445
$line =~ s/\xF1/\\\|\[ntilde\]\\\|/g; # ISOlat1: LATIN SMALL LETTER N WITH TILDE
1446
$line =~ s/\xF2/\\\|\[ograve\]\\\|/g; # ISOlat1: LATIN SMALL LETTER O WITH GRAVE
1447
$line =~ s/\xF3/\\\|\[oacute\]\\\|/g; # ISOlat1: LATIN SMALL LETTER O WITH ACUTE
1448
$line =~ s/\xF4/\\\|\[ocirc \]\\\|/g; # ISOlat1: LATIN SMALL LETTER O WITH CIRCUMFLEX
1449
$line =~ s/\xF5/\\\|\[otilde\]\\\|/g; # ISOlat1: LATIN SMALL LETTER O WITH TILDE
1450
$line =~ s/\xF6/\\\|\[ouml \]\\\|/g; # ISOlat1: LATIN SMALL LETTER O WITH DIERESIS
1451
$line =~ s/\xF7/\\\|\[divide\]\\\|/g; # ISOlat1: DIVISION SIGN
1452
$line =~ s/\xF8/\\\|\[oslash\]\\\|/g; # ISOlat1: LATIN SMALL LETTER O WITH STROKE
1453
$line =~ s/\xF9/\\\|\[ugrave\]\\\|/g; # ISOlat1: LATIN SMALL LETTER U WITH GRAVE
1454
$line =~ s/\xFA/\\\|\[uacute\]\\\|/g; # ISOlat1: LATIN SMALL LETTER U WITH ACUTE
1455
$line =~ s/\xFB/\\\|\[ucirc \]\\\|/g; # ISOlat1: LATIN SMALL LETTER U WITH CIRCUMFLEX
1456
$line =~ s/\xFC/\\\|\[uuml \]\\\|/g; # ISOlat1: LATIN SMALL LETTER U WITH DIERESIS
1457
$line =~ s/\xFD/\\\|\[inodot\]\\\|/g; # ISOlat2: LATIN SMALL LETTER I DOTLESS
1458
$line =~ s/\xFE/\\\|\[scedil\]\\\|/g; # ISOlat2: LATIN SMALL LETTER S WITH CEDILLA
1459
$line =~ s/\xFF/\\\|\[yuml \]\\\|/g; # ISOlat1: LATIN SMALL LETTER Y WITH DIERESIS
1465
#-----------------------------------------------------------------------
1466
# ISO 8859-10 into SP SDATA entities.
1468
# &iso_8859_10_sp_text_to_sdata (TEXT)
1469
#-----------------------------------------------------------------------
1470
sub iso_8859_10_sp_text_to_sdata
1472
local ($line) = $_[0];
1474
$line =~ s/\xA1/\\\|\[Aogon \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER A WITH OGONEK
1475
$line =~ s/\xA2/\\\|\[Emacr \]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER E WITH MACRON
1476
$line =~ s/\xA3/\\\|\[Gcedil\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER G WITH CEDILLA
1477
$line =~ s/\xA4/\\\|\[Imacr \]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER I WITH MACRON
1478
$line =~ s/\xA5/\\\|\[Itilde\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER I WITH TILDE
1479
$line =~ s/\xA6/\\\|\[Kcedil\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER K WITH CEDILLA
1480
$line =~ s/\xA7/\\\|\[Lcedil\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER L WITH CEDILLA
1481
$line =~ s/\xA8/\\\|\[Nacute\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER N WITH ACUTE
1482
$line =~ s/\xA9/\\\|\[Rcedil\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER R WITH CEDILLA
1483
$line =~ s/\xAA/\\\|\[Scaron\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER S WITH CARON
1484
$line =~ s/\xAB/\\\|\[Tstrok\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER T WITH STROKE
1485
$line =~ s/\xAC/\\\|\[Zcaron\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER Z WITH CARON
1486
$line =~ s/\xAD/\\\|\[shy \]\\\|/g; # ISOnum : SOFT HYPHEN
1487
$line =~ s/\xAE/\\\|\[kgreen\]\\\|/g; # ISOlat2: LATIN SMALL LETTER KRA (Greenlandic)
1488
$line =~ s/\xAF/\\\|\[end \]\\\|/g; # ISOlat?: LATIN SMALL LETTER END (Lappish)
1489
$line =~ s/\xB0/\\\|\[dstrok\]\\\|/g; # ISOlat2: LATIN SMALL LETTER d WITH STROKE
1490
$line =~ s/\xB1/\\\|\[aogon \]\\\|/g; # ISOlat2: LATIN SMALL LETTER a WITH OGONEK
1491
$line =~ s/\xB2/\\\|\[emacr \]\\\|/g; # ISOlat2: LATIN SMALL LETTER e WITH MACRON
1492
$line =~ s/\xB3/\\\|\[gcedil\]\\\|/g; # ISOlat2: LATIN SMALL LETTER g WITH CEDILLA
1493
$line =~ s/\xB4/\\\|\[imacr \]\\\|/g; # ISOlat2: LATIN SMALL LETTER i WITH MACRON
1494
$line =~ s/\xB5/\\\|\[itilde\]\\\|/g; # ISOlat2: LATIN SMALL LETTER i WITH TILDE
1495
$line =~ s/\xB6/\\\|\[kcedil\]\\\|/g; # ISOlat2: LATIN SMALL LETTER k WITH CEDILLA
1496
$line =~ s/\xB7/\\\|\[lcedil\]\\\|/g; # ISOlat2: LATIN SMALL LETTER l WITH CEDILLA
1497
$line =~ s/\xB8/\\\|\[nacute\]\\\|/g; # ISOlat2: LATIN SMALL LETTER n WITH ACUTE
1498
$line =~ s/\xB9/\\\|\[rcedil\]\\\|/g; # ISOlat2: LATIN SMALL LETTER r WITH CEDILLA
1499
$line =~ s/\xBA/\\\|\[scaron\]\\\|/g; # ISOlat2: LATIN SMALL LETTER s WITH CARON
1500
$line =~ s/\xBB/\\\|\[tstrok\]\\\|/g; # ISOlat2: LATIN SMALL LETTER t WITH STROKE
1501
$line =~ s/\xBC/\\\|\[zcaron\]\\\|/g; # ISOlat2: LATIN SMALL LETTER z WITH CARON
1502
$line =~ s/\xBD/\\\|\[sect \]\\\|/g; # ISOnum : SECTION SIGN
1503
$line =~ s/\xBE/\\\|\[szlig \]\\\|/g; # ISOlat1: LATIN SMALL LETTER SHARP s (German)
1504
$line =~ s/\xBF/\\\|\[eng \]\\\|/g; # ISOlat2: LATIN SMALL LETTER ENG (Lappish)
1505
$line =~ s/\xC0/\\\|\[Amacr \]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER A WITH MACRON
1506
$line =~ s/\xC1/\\\|\[Aacute\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER A WITH ACUTE
1507
$line =~ s/\xC2/\\\|\[Acirc \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER A WITH CIRCUMFLEX
1508
$line =~ s/\xC3/\\\|\[Atilde\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER A WITH TILDE
1509
$line =~ s/\xC4/\\\|\[Auml \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER A WITH DIERESIS
1510
$line =~ s/\xC5/\\\|\[Aring \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER A WITH RING ABOVE
1511
$line =~ s/\xC6/\\\|\[AElig \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER AE
1512
$line =~ s/\xC7/\\\|\[Iogon \]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER I WITH OGONEK
1513
$line =~ s/\xC8/\\\|\[Ccaron\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER C WITH CARON
1514
$line =~ s/\xC9/\\\|\[Eacute\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER E WITH ACUTE
1515
$line =~ s/\xCA/\\\|\[Eogon \]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER E WITH OGONEK
1516
$line =~ s/\xCB/\\\|\[Euml \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER E WITH DIERESIS
1517
$line =~ s/\xCC/\\\|\[Edot \]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER E WITH DOT ABOVE
1518
$line =~ s/\xCD/\\\|\[Iacute\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER I WITH ACUTE
1519
$line =~ s/\xCE/\\\|\[Icirc \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER I WITH CIRCUMFLEX
1520
$line =~ s/\xCF/\\\|\[Iuml \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER I WITH DIERESIS
1521
$line =~ s/\xD0/\\\|\[Dstrok\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER D WITH STROKE
1522
$line =~ s/\xD1/\\\|\[Ncedil\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER N WITH CEDILLA
1523
$line =~ s/\xD2/\\\|\[Omacr \]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER O WITH MACRON
1524
$line =~ s/\xD3/\\\|\[Oacute\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER O WITH ACUTE
1525
$line =~ s/\xD4/\\\|\[Ocirc \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER O WITH CIRCUMFLEX
1526
$line =~ s/\xD5/\\\|\[Otilde\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER O WITH TILDE
1527
$line =~ s/\xD6/\\\|\[Ouml \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER O WITH DIERESIS
1528
$line =~ s/\xD7/\\\|\[Utilde\]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER U WITH TILDE
1529
$line =~ s/\xD8/\\\|\[Oslash\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER O WITH STROKE
1530
$line =~ s/\xD9/\\\|\[Uogon \]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER U WITH OGONEK
1531
$line =~ s/\xDA/\\\|\[Uacute\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER U WITH ACUTE
1532
$line =~ s/\xDB/\\\|\[Ucirc \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER U WITH CIRCUMFLEX
1533
$line =~ s/\xDC/\\\|\[Uuml \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER U WITH DIERESIS
1534
$line =~ s/\xDD/\\\|\[Yacute\]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER Y WITH ACUTE
1535
$line =~ s/\xDE/\\\|\[THORN \]\\\|/g; # ISOlat1: LATIN CAPITAL LETTER THORN (Icelandic)
1536
$line =~ s/\xDF/\\\|\[Umacr \]\\\|/g; # ISOlat2: LATIN CAPITAL LETTER U WITH MACRON
1537
$line =~ s/\xE0/\\\|\[amacr \]\\\|/g; # ISOlat2: LATIN SMALL LETTER a WITH MACRON
1538
$line =~ s/\xE1/\\\|\[aacute\]\\\|/g; # ISOlat1: LATIN SMALL LETTER a WITH ACUTE
1539
$line =~ s/\xE2/\\\|\[acirc \]\\\|/g; # ISOlat1: LATIN SMALL LETTER a WITH CIRCUMFLEX
1540
$line =~ s/\xE3/\\\|\[atilde\]\\\|/g; # ISOlat1: LATIN SMALL LETTER a WITH TILDE
1541
$line =~ s/\xE4/\\\|\[auml \]\\\|/g; # ISOlat1: LATIN SMALL LETTER a WITH DIERESIS
1542
$line =~ s/\xE5/\\\|\[aring \]\\\|/g; # ISOlat1: LATIN SMALL LETTER a WITH RING ABOVE
1543
$line =~ s/\xE6/\\\|\[aelig \]\\\|/g; # ISOlat1: LATIN SMALL LETTER ae
1544
$line =~ s/\xE7/\\\|\[iogon \]\\\|/g; # ISOlat2: LATIN SMALL LETTER i WITH OGONEK
1545
$line =~ s/\xE8/\\\|\[ccaron\]\\\|/g; # ISOlat2: LATIN SMALL LETTER c WITH CARON
1546
$line =~ s/\xE9/\\\|\[eacute\]\\\|/g; # ISOlat1: LATIN SMALL LETTER e WITH ACUTE
1547
$line =~ s/\xEA/\\\|\[eogon \]\\\|/g; # ISOlat2: LATIN SMALL LETTER e WITH OGONEK
1548
$line =~ s/\xEB/\\\|\[euml \]\\\|/g; # ISOlat1: LATIN SMALL LETTER e WITH DIERESIS
1549
$line =~ s/\xEC/\\\|\[edot \]\\\|/g; # ISOlat2: LATIN SMALL LETTER e WITH DOT ABOVE
1550
$line =~ s/\xED/\\\|\[iacute\]\\\|/g; # ISOlat1: LATIN SMALL LETTER i WITH ACUTE
1551
$line =~ s/\xEE/\\\|\[icirc \]\\\|/g; # ISOlat1: LATIN SMALL LETTER i WITH CIRCUMFLEX
1552
$line =~ s/\xEF/\\\|\[iuml \]\\\|/g; # ISOlat1: LATIN SMALL LETTER i WITH DIERESIS
1553
$line =~ s/\xF0/\\\|\[eth \]\\\|/g; # ISOlat1: LATIN SMALL LETTER ETH (Icelandic)
1554
$line =~ s/\xF1/\\\|\[ncedil\]\\\|/g; # ISOlat2: LATIN SMALL LETTER n WITH CEDILLA
1555
$line =~ s/\xF2/\\\|\[omacr \]\\\|/g; # ISOlat2: LATIN SMALL LETTER o WITH MACRON
1556
$line =~ s/\xF3/\\\|\[oacute\]\\\|/g; # ISOlat1: LATIN SMALL LETTER o WITH ACUTE
1557
$line =~ s/\xF4/\\\|\[ocirc \]\\\|/g; # ISOlat1: LATIN SMALL LETTER o WITH CIRCUMFLEX
1558
$line =~ s/\xF5/\\\|\[otilde\]\\\|/g; # ISOlat1: LATIN SMALL LETTER o WITH TILDE
1559
$line =~ s/\xF6/\\\|\[ouml \]\\\|/g; # ISOlat1: LATIN SMALL LETTER o WITH DIERESIS
1560
$line =~ s/\xF7/\\\|\[utilde\]\\\|/g; # ISOlat2: LATIN SMALL LETTER u WITH TILDE
1561
$line =~ s/\xF8/\\\|\[oslash\]\\\|/g; # ISOlat1: LATIN SMALL LETTER o WITH STROKE
1562
$line =~ s/\xF9/\\\|\[uogon \]\\\|/g; # ISOlat2: LATIN SMALL LETTER u WITH OGONEK
1563
$line =~ s/\xFA/\\\|\[uacute\]\\\|/g; # ISOlat1: LATIN SMALL LETTER u WITH ACUTE
1564
$line =~ s/\xFB/\\\|\[ucirc \]\\\|/g; # ISOlat1: LATIN SMALL LETTER u WITH CIRCUMFLEX
1565
$line =~ s/\xFC/\\\|\[uuml \]\\\|/g; # ISOlat1: LATIN SMALL LETTER u WITH DIERESIS
1566
$line =~ s/\xFD/\\\|\[yacute\]\\\|/g; # ISOlat1: LATIN SMALL LETTER y WITH ACUTE
1567
$line =~ s/\xFE/\\\|\[thorn \]\\\|/g; # ISOlat1: LATIN SMALL LETTER THORN (Icelandic)
1568
$line =~ s/\xFF/\\\|\[umacr \]\\\|/g; # ISOlat2: LATIN SMALL LETTER u WITH MACRON
1574
#-----------------------------------------------------------------------
1575
# Convert an SP SDATA string into Texinfo back-end code.
1577
# &sp_sdata_text_to_sp_texinfo (TEXT)
1578
#-----------------------------------------------------------------------
1579
sub sp_sdata_text_to_sp_texinfo
1581
local ($line) = $_[0];
1584
$line =~ s/\\\|\[emsp \]\\\|/\@ /g; # em space
1585
$line =~ s/\\\|\[ensp \]\\\|/\[ensp \]/g; # en space (1/2-em)
1586
$line =~ s/\\\|\[emsp3 \]\\\|/\[emsp3 \]/g; # 1/3-em space
1587
$line =~ s/\\\|\[emsp4 \]\\\|/\[emsp4 \]/g; # 1/4-em space
1588
$line =~ s/\\\|\[numsp \]\\\|/\[numsp \]/g; # digit space (width of a number)
1589
$line =~ s/\\\|\[puncsp\]\\\|/\[puncsp\]/g; # punctuation space (width of comma)
1590
$line =~ s/\\\|\[thinsp\]\\\|/\[thinsp\]/g; # thin space (1/6-em)
1591
$line =~ s/\\\|\[hairsp\]\\\|/\[hairsp\]/g; # hair space
1592
$line =~ s/\\\|\[mdash \]\\\|/\[mdash \]/g; # em dash
1593
$line =~ s/\\\|\[ndash \]\\\|/\[ndash \]/g; # en dash
1594
$line =~ s/\\\|\[dash \]\\\|/\[dash \]/g; # hyphen (true graphic)
1595
$line =~ s/\\\|\[blank \]\\\|/\[blank \]/g; # significant blank symbol
1596
$line =~ s/\\\|\[hellip\]\\\|/\[hellip\]/g; # ellipsis (horizontal)
1597
$line =~ s/\\\|\[nldr \]\\\|/\[nldr \]/g; # double baseline dot (en leader)
1598
$line =~ s/\\\|\[frac13\]\\\|/1\/3/g; # fraction one-third
1599
$line =~ s/\\\|\[frac23\]\\\|/2\/3/g; # fraction two-thirds
1600
$line =~ s/\\\|\[frac15\]\\\|/1\/5/g; # fraction one-fifth
1601
$line =~ s/\\\|\[frac25\]\\\|/2\/5/g; # fraction two-fifths
1602
$line =~ s/\\\|\[frac35\]\\\|/3\/5/g; # fraction three-fifths
1603
$line =~ s/\\\|\[frac45\]\\\|/4\/5/g; # fraction four-fifths
1604
$line =~ s/\\\|\[frac16\]\\\|/1\/6/g; # fraction one-sixth
1605
$line =~ s/\\\|\[frac56\]\\\|/5\/6/g; # fraction five-sixths
1606
$line =~ s/\\\|\[incare\]\\\|/\[incare\]/g; # in-care-of symbol
1607
$line =~ s/\\\|\[block \]\\\|/\[block \]/g; # full block
1608
$line =~ s/\\\|\[uhblk \]\\\|/\[uhblk \]/g; # upper half block
1609
$line =~ s/\\\|\[lhblk \]\\\|/\[lhblk \]/g; # lower half block
1610
$line =~ s/\\\|\[blk14 \]\\\|/\[blk14 \]/g; # 25% shaded block
1611
$line =~ s/\\\|\[blk12 \]\\\|/\[blk12 \]/g; # 50% shaded block
1612
$line =~ s/\\\|\[blk34 \]\\\|/\[blk34 \]/g; # 75% shaded block
1613
$line =~ s/\\\|\[marker\]\\\|/\[marker\]/g; # histogram marker
1614
$line =~ s/\\\|\[cir \]\\\|/\[cir \]/g; # circle, open
1615
$line =~ s/\\\|\[squ \]\\\|/\[squ \]/g; # square, open
1616
$line =~ s/\\\|\[rect \]\\\|/\[rect \]/g; # rectangle, open
1617
$line =~ s/\\\|\[utri \]\\\|/\[utri \]/g; # up triangle, open
1618
$line =~ s/\\\|\[dtri \]\\\|/\[dtri \]/g; # down triangle, open
1619
$line =~ s/\\\|\[star \]\\\|/\[star \]/g; # star, open
1620
$line =~ s/\\\|\[bull \]\\\|/\@bullet\{\}/g; # round bullet, filled
1621
$line =~ s/\\\|\[squf \]\\\|/\[squf \]/g; # sq bullet, filled
1622
$line =~ s/\\\|\[utrif \]\\\|/\[utrif \]/g; # up tri, filled
1623
$line =~ s/\\\|\[dtrif \]\\\|/\[dtrif \]/g; # dn tri, filled
1624
$line =~ s/\\\|\[ltrif \]\\\|/\[ltrif \]/g; # l tri, filled
1625
$line =~ s/\\\|\[rtrif \]\\\|/\[rtrif \]/g; # r tri, filled
1626
$line =~ s/\\\|\[clubs \]\\\|/\[clubs \]/g; # club suit symbol
1627
$line =~ s/\\\|\[diams \]\\\|/\[diams \]/g; # diamond suit symbol
1628
$line =~ s/\\\|\[hearts\]\\\|/\[hearts\]/g; # heart suit symbol
1629
$line =~ s/\\\|\[spades\]\\\|/\[spades\]/g; # spades suit symbol
1630
$line =~ s/\\\|\[malt \]\\\|/\[malt \]/g; # maltese cross
1631
$line =~ s/\\\|\[dagger\]\\\|/\[dagger\]/g; # dagger
1632
$line =~ s/\\\|\[Dagger\]\\\|/\[Dagger\]/g; # double dagger
1633
$line =~ s/\\\|\[check \]\\\|/\[check \]/g; # tick, check mark
1634
$line =~ s/\\\|\[ballot\]\\\|/\[ballot\]/g; # ballot cross
1635
$line =~ s/\\\|\[sharp \]\\\|/\[sharp \]/g; # musical sharp
1636
$line =~ s/\\\|\[flat \]\\\|/\[flat \]/g; # musical flat
1637
$line =~ s/\\\|\[male \]\\\|/\[male \]/g; # male symbol
1638
$line =~ s/\\\|\[female\]\\\|/\[female\]/g; # female symbol
1639
$line =~ s/\\\|\[phone \]\\\|/\[phone \]/g; # telephone symbol
1640
$line =~ s/\\\|\[telrec\]\\\|/\[telrec\]/g; # telephone recorder symbol
1641
$line =~ s/\\\|\[copysr\]\\\|/\[copysr\]/g; # sound recording copyright sign
1642
$line =~ s/\\\|\[caret \]\\\|/\[caret \]/g; # caret (insertion mark)
1643
$line =~ s/\\\|\[lsquor\]\\\|/\[lsquor\]/g; # rising single quote, left (low)
1644
$line =~ s/\\\|\[ldquor\]\\\|/\[ldquor\]/g; # rising dbl quote, left (low)
1646
$line =~ s/\\\|\[fflig \]\\\|/\[fflig \]/g; # small ff ligature
1647
$line =~ s/\\\|\[filig \]\\\|/\[filig \]/g; # small fi ligature
1648
$line =~ s/\\\|\[fjlig \]\\\|/\[fjlig \]/g; # small fj ligature
1649
$line =~ s/\\\|\[ffilig\]\\\|/\[ffilig\]/g; # small ffi ligature
1650
$line =~ s/\\\|\[ffllig\]\\\|/\[ffllig\]/g; # small ffl ligature
1651
$line =~ s/\\\|\[fllig \]\\\|/\[fllig \]/g; # small fl ligature
1653
$line =~ s/\\\|\[mldr \]\\\|/\[mldr \]/g; # em leader
1654
$line =~ s/\\\|\[rdquor\]\\\|/\[rdquor\]/g; # rising dbl quote, right (high)
1655
$line =~ s/\\\|\[rsquor\]\\\|/\[rsquor\]/g; # rising single quote, right (high)
1656
$line =~ s/\\\|\[vellip\]\\\|/\[vellip\]/g; # vertical ellipsis
1658
$line =~ s/\\\|\[hybull\]\\\|/\[hybull\]/g; # rectangle, filled (hyphen bullet)
1659
$line =~ s/\\\|\[loz \]\\\|/\[loz \]/g; # lozenge or total mark
1660
$line =~ s/\\\|\[lozf \]\\\|/\[lozf \]/g; # lozenge, filled
1661
$line =~ s/\\\|\[ltri \]\\\|/\[ltri \]/g; # l triangle, open
1662
$line =~ s/\\\|\[rtri \]\\\|/\[rtri \]/g; # r triangle, open
1663
$line =~ s/\\\|\[starf \]\\\|/\[starf \]/g; # star, filled
1665
$line =~ s/\\\|\[natur \]\\\|/\[natur \]/g; # music natural
1666
$line =~ s/\\\|\[rx \]\\\|/\[rx \]/g; # pharmaceutical prescription (Rx)
1667
$line =~ s/\\\|\[sext \]\\\|/\[sext \]/g; # sextile (6-pointed star)
1669
$line =~ s/\\\|\[target\]\\\|/\[target\]/g; # register mark or target
1670
$line =~ s/\\\|\[dlcrop\]\\\|/\[dlcrop\]/g; # downward left crop mark
1671
$line =~ s/\\\|\[drcrop\]\\\|/\[drcrop\]/g; # downward right crop mark
1672
$line =~ s/\\\|\[ulcrop\]\\\|/\[ulcrop\]/g; # upward left crop mark
1673
$line =~ s/\\\|\[urcrop\]\\\|/\[urcrop\]/g; # upward right crop mark
1677
$line =~ s/\\\|\[half \]\\\|/1\/2/g; # fraction one-half
1678
$line =~ s/\\\|\[frac12\]\\\|/1\/2/g; # fraction one-half
1679
$line =~ s/\\\|\[frac14\]\\\|/1\/4/g; # fraction one-quarter
1680
$line =~ s/\\\|\[frac34\]\\\|/3\/4/g; # fraction three-quarters
1681
$line =~ s/\\\|\[frac18\]\\\|/1\/8/g; # fraction one-eighth
1682
$line =~ s/\\\|\[frac38\]\\\|/3\/8/g; # fraction three-eighths
1683
$line =~ s/\\\|\[frac58\]\\\|/5\/8/g; # fraction five-eighths
1684
$line =~ s/\\\|\[frac78\]\\\|/7\/8/g; # fraction seven-eighths
1686
$line =~ s/\\\|\[sup1 \]\\\|/\[sup1 \]/g; # superscript one
1687
$line =~ s/\\\|\[sup2 \]\\\|/\[sup2 \]/g; # superscript two
1688
$line =~ s/\\\|\[sup3 \]\\\|/\[sup3 \]/g; # superscript three
1690
$line =~ s/\\\|\[plus \]\\\|/+/g; # plus sign
1691
$line =~ s/\\\|\[plusmn\]\\\|/+\/\@minus{}/g; # plus-or-minus sign
1692
$line =~ s/\\\|\[lt \]\\\|/</g; # less-than sign
1693
$line =~ s/\\\|\[equals\]\\\|/=/g; # equals sign
1694
$line =~ s/\\\|\[gt \]\\\|/>/g; # greater-than sign
1695
$line =~ s/\\\|\[divide\]\\\|/\[divide\]/g; # divide sign
1696
$line =~ s/\\\|\[times \]\\\|/\[times \]/g; # multiply sign
1698
$line =~ s/\\\|\[curren\]\\\|/\[curren\]/g; # general currency sign
1699
$line =~ s/\\\|\[pound \]\\\|/\@pounds\{\}/g; # pound sign
1700
$line =~ s/\\\|\[dollar\]\\\|/\$/g; # dollar sign
1701
$line =~ s/\\\|\[cent \]\\\|/\[cent \]/g; # cent sign
1702
$line =~ s/\\\|\[yen \]\\\|/\[yen \]/g; # yen sign
1704
$line =~ s/\\\|\[num \]\\\|/\#/g; # number sign
1705
$line =~ s/\\\|\[percnt\]\\\|/%/g; # percent sign
1706
$line =~ s/\\\|\[amp \]\\\|/&/g; # ampersand
1707
$line =~ s/\\\|\[ast \]\\\|/*/g; # asterisk
1708
$line =~ s/\\\|\[commat\]\\\|/\@@/g; # commercial at
1709
$line =~ s/\\\|\[lsqb \]\\\|/\[/g; # left square bracket
1710
$line =~ s/\\\|\[bsol \]\\\|/\\/g; # reverse solidus
1711
$line =~ s/\\\|\[rsqb \]\\\|/\]/g; # right square bracket
1712
$line =~ s/\\\|\[lcub \]\\\|/\@\{/g; # left curly bracket
1713
$line =~ s/\\\|\[horbar\]\\\|/\[horbar\]/g; # horizontal bar
1714
$line =~ s/\\\|\[verbar\]\\\|/\|/g; # vertical bar
1715
$line =~ s/\\\|\[rcub \]\\\|/\@\}/g; # right curly bracket
1716
$line =~ s/\\\|\[micro \]\\\|/\[micro \]/g; # micro sign
1717
$line =~ s/\\\|\[ohm \]\\\|/\[ohm \]/g; # ohm sign
1718
$line =~ s/\\\|\[deg \]\\\|/\[deg \]/g; # degree sign
1719
$line =~ s/\\\|\[ordm \]\\\|/\[ordm \]/g; # ordinal indicator, masculine
1720
$line =~ s/\\\|\[ordf \]\\\|/\[ordf \]/g; # ordinal indicator, feminine
1721
$line =~ s/\\\|\[sect \]\\\|/\[sect \]/g; # section sign
1722
$line =~ s/\\\|\[para \]\\\|/\[para \]/g; # pilcrow (paragraph sign)
1723
$line =~ s/\\\|\[middot\]\\\|/\@bullet\{\}/g; # middle dot
1724
$line =~ s/\\\|\[larr \]\\\|/\[larr \]/g; # leftward arrow
1725
$line =~ s/\\\|\[rarr \]\\\|/\[rarr \]/g; # rightward arrow
1726
$line =~ s/\\\|\[uarr \]\\\|/\[uarr \]/g; # upward arrow
1727
$line =~ s/\\\|\[darr \]\\\|/\[darr \]/g; # downward arrow
1728
$line =~ s/\\\|\[copy \]\\\|/\@copyright\{\}/g; # copyright sign
1729
$line =~ s/\\\|\[reg \]\\\|/\[reg \]/g; # registered sign
1730
$line =~ s/\\\|\[trade \]\\\|/\[trade \]/g; # trade mark sign
1731
$line =~ s/\\\|\[brvbar\]\\\|/\[brvbar\]/g; # broken (vertical) bar
1732
$line =~ s/\\\|\[not \]\\\|/\[not \]/g; # not sign
1733
$line =~ s/\\\|\[sung \]\\\|/\[sung \]/g; # music note (sung text sign)
1735
$line =~ s/\\\|\[excl \]\\\|/!/g; # exclamation mark
1736
$line =~ s/\\\|\[iexcl \]\\\|/\@exclamdown\{\}/g; # inverted exclamation mark
1737
$line =~ s/\\\|\[quot \]\\\|/"/g; # quotation mark
1738
$line =~ s/\\\|\[apos \]\\\|/'/g; # apostrophe
1739
$line =~ s/\\\|\[lpar \]\\\|/\(/g; # left parenthesis
1740
$line =~ s/\\\|\[rpar \]\\\|/\)/g; # right parenthesis
1741
$line =~ s/\\\|\[comma \]\\\|/,/g; # comma
1742
$line =~ s/\\\|\[lowbar\]\\\|/\_/g; # low line
1743
$line =~ s/\\\|\[hyphen\]\\\|/-/g; # hyphen
1744
$line =~ s/\\\|\[period\]\\\|/\./g; # full stop, period
1745
$line =~ s/\\\|\[sol \]\\\|/\//g; # solidus
1746
$line =~ s/\\\|\[colon \]\\\|/:/g; # colon
1747
$line =~ s/\\\|\[semi \]\\\|/;/g; # semicolon
1748
$line =~ s/\\\|\[quest \]\\\|/\?/g; # question mark
1749
$line =~ s/\\\|\[iquest\]\\\|/\@questiondown\{\}/g; # inverted question mark
1750
$line =~ s/\\\|\[laquo \]\\\|/\[laquo \]/g; # angle quotation mark, left
1751
$line =~ s/\\\|\[raquo \]\\\|/\[raquo \]/g; # angle quotation mark, right
1752
$line =~ s/\\\|\[lsquo \]\\\|/\[lsquo \]/g; # single quotation mark, left
1753
$line =~ s/\\\|\[rsquo \]\\\|/\[rsquo \]/g; # single quotation mark, right
1754
$line =~ s/\\\|\[ldquo \]\\\|/\[ldquo \]/g; # double quotation mark, left
1755
$line =~ s/\\\|\[rdquo \]\\\|/\[rdquo \]/g; # double quotation mark, right
1756
$line =~ s/\\\|\[nbsp \]\\\|/\@tie\{\}/g; # no break (required) space
1757
$line =~ s/\\\|\[shy \]\\\|/\[shy \]/g; # soft hyphen
1761
$line =~ s/\\\|\[aleph \]\\\|/\[aleph \]/g; # aleph, Hebrew
1762
$line =~ s/\\\|\[and \]\\\|/\[and \]/g; # logical and
1763
$line =~ s/\\\|\[ang90 \]\\\|/\[ang90 \]/g; # right (90 degree) angle
1764
$line =~ s/\\\|\[angsph\]\\\|/\[angsph\]/g; # angle-spherical
1765
$line =~ s/\\\|\[ap \]\\\|/\[ap \]/g; # approximate
1766
$line =~ s/\\\|\[becaus\]\\\|/\[becaus\]/g; # because
1767
$line =~ s/\\\|\[bottom\]\\\|/\[bottom\]/g; # perpendicular
1768
$line =~ s/\\\|\[cap \]\\\|/\[cap \]/g; # intersection
1769
$line =~ s/\\\|\[cong \]\\\|/\[cong \]/g; # congruent with
1770
$line =~ s/\\\|\[conint\]\\\|/\[conint\]/g; # contour integral operator
1771
$line =~ s/\\\|\[cup \]\\\|/\[cup \]/g; # union or logical sum
1772
$line =~ s/\\\|\[equiv \]\\\|/\@equiv\{\}/g; # identical with
1773
$line =~ s/\\\|\[exist \]\\\|/\[exist \]/g; # at least one exists
1774
$line =~ s/\\\|\[forall\]\\\|/\[forall\]/g; # for all
1775
$line =~ s/\\\|\[fnof \]\\\|/\[fnof \]/g; # function of (italic small f)
1776
$line =~ s/\\\|\[ge \]\\\|/\[ge \]/g; # greater-than-or-equal
1777
$line =~ s/\\\|\[iff \]\\\|/\[iff \]/g; # if and only if
1778
$line =~ s/\\\|\[infin \]\\\|/\[infin \]/g; # infinity
1779
$line =~ s/\\\|\[int \]\\\|/\[int \]/g; # integral operator
1780
$line =~ s/\\\|\[isin \]\\\|/\[isin \]/g; # set membership
1781
$line =~ s/\\\|\[lang \]\\\|/\[lang \]/g; # left angle bracket
1782
$line =~ s/\\\|\[lArr \]\\\|/\[lArr \]/g; # is implied by
1783
$line =~ s/\\\|\[le \]\\\|/\[le \]/g; # less-than-or-equal
1784
$line =~ s/\\\|\[minus \]\\\|/\@minus\{\}/g; # minus sign
1785
$line =~ s/\\\|\[mnplus\]\\\|/\[mnplus\]/g; # minus-or-plus sign
1786
$line =~ s/\\\|\[nabla \]\\\|/\[nabla \]/g; # del, Hamilton operator
1787
$line =~ s/\\\|\[ne \]\\\|/\[ne \]/g; # not equal
1788
$line =~ s/\\\|\[ni \]\\\|/\[ni \]/g; # contains
1789
$line =~ s/\\\|\[or \]\\\|/\[or \]/g; # logical or
1790
$line =~ s/\\\|\[par \]\\\|/\[par \]/g; # parallel
1791
$line =~ s/\\\|\[part \]\\\|/\[part \]/g; # partial differential
1792
$line =~ s/\\\|\[permil\]\\\|/\[permil\]/g; # per thousand
1793
$line =~ s/\\\|\[perp \]\\\|/\[perp \]/g; # perpendicular
1794
$line =~ s/\\\|\[prime \]\\\|/\[prime \]/g; # prime or minute
1795
$line =~ s/\\\|\[Prime \]\\\|/\[Prime \]/g; # double prime or second
1796
$line =~ s/\\\|\[prop \]\\\|/\[prop \]/g; # is proportional to
1797
$line =~ s/\\\|\[radic \]\\\|/\[radic \]/g; # radical
1798
$line =~ s/\\\|\[rang \]\\\|/\[rang \]/g; # right angle bracket
1799
$line =~ s/\\\|\[rArr \]\\\|/\[rArr \]/g; # implies
1800
$line =~ s/\\\|\[sim \]\\\|/\[sim \]/g; # similar
1801
$line =~ s/\\\|\[sime \]\\\|/\[sime \]/g; # similar, equals
1802
$line =~ s/\\\|\[square\]\\\|/\[square\]/g; # square
1803
$line =~ s/\\\|\[sub \]\\\|/\[sub \]/g; # subset or is implied by
1804
$line =~ s/\\\|\[sube \]\\\|/\[sube \]/g; # subset, equals
1805
$line =~ s/\\\|\[sup \]\\\|/\[sup \]/g; # superset or implies
1806
$line =~ s/\\\|\[supe \]\\\|/\[supe \]/g; # superset, equals
1807
$line =~ s/\\\|\[there4\]\\\|/\[there4\]/g; # therefore
1808
$line =~ s/\\\|\[Verbar\]\\\|/\[Verbar\]/g; # dbl vertical bar
1810
$line =~ s/\\\|\[angst \]\\\|/\[angst \]/g; # capital A, ring
1811
$line =~ s/\\\|\[bernou\]\\\|/\[bernou\]/g; # Bernoulli function (script capital B)
1812
$line =~ s/\\\|\[compfn\]\\\|/\[compfn\]/g; # composite function (small circle)
1813
$line =~ s/\\\|\[Dot \]\\\|/\[Dot \]/g; # dieresis or umlaut mark
1814
$line =~ s/\\\|\[DotDot\]\\\|/\[DotDot\]/g; # four dots above
1815
$line =~ s/\\\|\[hamilt\]\\\|/\[hamilt\]/g; # Hamiltonian (script capital H)
1816
$line =~ s/\\\|\[lagran\]\\\|/\[lagran\]/g; # Lagrangian (script capital L)
1817
$line =~ s/\\\|\[lowast\]\\\|/\[lowast\]/g; # low asterisk
1818
$line =~ s/\\\|\[notin \]\\\|/\[notin \]/g; # negated set membership
1819
$line =~ s/\\\|\[order \]\\\|/\[order \]/g; # order of (script small o)
1820
$line =~ s/\\\|\[phmmat\]\\\|/\[phmmat\]/g; # physics M-matrix (script capital M)
1821
$line =~ s/\\\|\[tdot \]\\\|/\[tdot \]/g; # three dots above
1822
$line =~ s/\\\|\[tprime\]\\\|/\[tprime\]/g; # triple prime
1823
$line =~ s/\\\|\[wedgeq\]\\\|/\[wedgeq\]/g; # corresponds to (wedge, equals)
1827
$line =~ s/\\\|\[aacute\]\\\|/\@\'a/g; # small a, acute accent
1828
$line =~ s/\\\|\[Aacute\]\\\|/\@\'A/g; # capital A, acute accent
1829
$line =~ s/\\\|\[acirc \]\\\|/\@\^a/g; # small a, circumflex accent
1830
$line =~ s/\\\|\[Acirc \]\\\|/\@\^A/g; # capital A, circumflex accent
1831
$line =~ s/\\\|\[agrave\]\\\|/\@\`a/g; # small a, grave accent
1832
$line =~ s/\\\|\[Agrave\]\\\|/\@\`A/g; # capital A, grave accent
1833
$line =~ s/\\\|\[aring \]\\\|/\@ringaccent\{a\}/g; # small a, ring
1834
$line =~ s/\\\|\[Aring \]\\\|/\@ringaccent\{A\}/g; # capital A, ring
1835
$line =~ s/\\\|\[atilde\]\\\|/\@\~a/g; # small a, tilde
1836
$line =~ s/\\\|\[Atilde\]\\\|/\@\~A/g; # capital A, tilde
1837
$line =~ s/\\\|\[auml \]\\\|/\@\"a/g; # small a, dieresis or umlaut mark
1838
$line =~ s/\\\|\[Auml \]\\\|/\@\"A/g; # capital A, dieresis or umlaut mark
1839
$line =~ s/\\\|\[aelig \]\\\|/\@ae\{\}/g; # small ae diphthong (ligature)
1840
$line =~ s/\\\|\[AElig \]\\\|/\@AE\{\}/g; # capital AE diphthong (ligature)
1841
$line =~ s/\\\|\[ccedil\]\\\|/\@,\{c\}/g; # small c, cedilla
1842
$line =~ s/\\\|\[Ccedil\]\\\|/\@,\{C\}/g; # capital C, cedilla
1843
$line =~ s/\\\|\[eth \]\\\|/\[eth \]/g; # small eth, Icelandic
1844
$line =~ s/\\\|\[ETH \]\\\|/\[ETH \]/g; # capital Eth, Icelandic
1845
$line =~ s/\\\|\[eacute\]\\\|/\@\'e/g; # small e, acute accent
1846
$line =~ s/\\\|\[Eacute\]\\\|/\@\'E/g; # capital E, acute accent
1847
$line =~ s/\\\|\[ecirc \]\\\|/\@\^e/g; # small e, circumflex accent
1848
$line =~ s/\\\|\[Ecirc \]\\\|/\@\^E/g; # capital E, circumflex accent
1849
$line =~ s/\\\|\[egrave\]\\\|/\@\`e/g; # small e, grave accent
1850
$line =~ s/\\\|\[Egrave\]\\\|/\@\`E/g; # capital E, grave accent
1851
$line =~ s/\\\|\[euml \]\\\|/\@\"e/g; # small e, dieresis or umlaut mark
1852
$line =~ s/\\\|\[Euml \]\\\|/\@\"E/g; # capital E, dieresis or umlaut mark
1853
$line =~ s/\\\|\[iacute\]\\\|/\@\'i/g; # small i, acute accent
1854
$line =~ s/\\\|\[Iacute\]\\\|/\@\'I/g; # capital I, acute accent
1855
$line =~ s/\\\|\[icirc \]\\\|/\@\^i/g; # small i, circumflex accent
1856
$line =~ s/\\\|\[Icirc \]\\\|/\@\^I/g; # capital I, circumflex accent
1857
$line =~ s/\\\|\[igrave\]\\\|/\@\`i/g; # small i, grave accent
1858
$line =~ s/\\\|\[Igrave\]\\\|/\@\`I/g; # capital I, grave accent
1859
$line =~ s/\\\|\[iuml \]\\\|/\@\"i/g; # small i, dieresis or umlaut mark
1860
$line =~ s/\\\|\[Iuml \]\\\|/\@\"I/g; # capital I, dieresis or umlaut mark
1861
$line =~ s/\\\|\[ntilde\]\\\|/\@\~n/g; # small n, tilde
1862
$line =~ s/\\\|\[Ntilde\]\\\|/\@\~N/g; # capital N, tilde
1863
$line =~ s/\\\|\[oacute\]\\\|/\@\'o/g; # small o, acute accent
1864
$line =~ s/\\\|\[Oacute\]\\\|/\@\'O/g; # capital O, acute accent
1865
$line =~ s/\\\|\[ocirc \]\\\|/\@\^o/g; # small o, circumflex accent
1866
$line =~ s/\\\|\[Ocirc \]\\\|/\@\^O/g; # capital O, circumflex accent
1867
$line =~ s/\\\|\[ograve\]\\\|/\@\`o/g; # small o, grave accent
1868
$line =~ s/\\\|\[Ograve\]\\\|/\@\`O/g; # capital O, grave accent
1869
$line =~ s/\\\|\[oslash\]\\\|/\@o\{\}/g; # small o, slash
1870
$line =~ s/\\\|\[Oslash\]\\\|/\@O\{\}/g; # capital O, slash
1871
$line =~ s/\\\|\[otilde\]\\\|/\@\~o/g; # small o, tilde
1872
$line =~ s/\\\|\[Otilde\]\\\|/\@\~O/g; # capital O, tilde
1873
$line =~ s/\\\|\[ouml \]\\\|/\@\"o/g; # small o, dieresis or umlaut mark
1874
$line =~ s/\\\|\[Ouml \]\\\|/\@\"O/g; # capital O, dieresis or umlaut mark
1875
$line =~ s/\\\|\[szlig \]\\\|/\@ss\{\}/g; # small sharp s, German (sz ligature)
1876
$line =~ s/\\\|\[thorn \]\\\|/\[thorn \]/g; # small thorn, Icelandic
1877
$line =~ s/\\\|\[THORN \]\\\|/\[THORN \]/g; # capital THORN, Icelandic
1878
$line =~ s/\\\|\[uacute\]\\\|/\@\'u/g; # small u, acute accent
1879
$line =~ s/\\\|\[Uacute\]\\\|/\@\'U/g; # capital U, acute accent
1880
$line =~ s/\\\|\[ucirc \]\\\|/\@\^u/g; # small u, circumflex accent
1881
$line =~ s/\\\|\[Ucirc \]\\\|/\@\^U/g; # capital U, circumflex accent
1882
$line =~ s/\\\|\[ugrave\]\\\|/\@\`u/g; # small u, grave accent
1883
$line =~ s/\\\|\[Ugrave\]\\\|/\@\`U/g; # capital U, grave accent
1884
$line =~ s/\\\|\[uuml \]\\\|/\@\"u/g; # small u, dieresis or umlaut mark
1885
$line =~ s/\\\|\[Uuml \]\\\|/\@\"U/g; # capital U, dieresis or umlaut mark
1886
$line =~ s/\\\|\[yacute\]\\\|/\@\'y/g; # small y, acute accent
1887
$line =~ s/\\\|\[Yacute\]\\\|/\@\'Y/g; # capital Y, acute accent
1888
$line =~ s/\\\|\[yuml \]\\\|/\@\"y/g; # small y, dieresis or umlaut mark
1891
$line =~ s/\\\|\[abreve\]\\\|/\[abreve\]/g; # small a, breve
1892
$line =~ s/\\\|\[Abreve\]\\\|/\[Abreve\]/g; # capital A, breve
1893
$line =~ s/\\\|\[amacr \]\\\|/\[amacr \]/g; # small a, macron
1894
$line =~ s/\\\|\[Amacr \]\\\|/\[Amacr \]/g; # capital A, macron
1895
$line =~ s/\\\|\[aogon \]\\\|/\[aogon \]/g; # small a, ogonek
1896
$line =~ s/\\\|\[Aogon \]\\\|/\[Aogon \]/g; # capital A, ogonek
1897
$line =~ s/\\\|\[cacute\]\\\|/\@\'c/g; # small c, acute accent
1898
$line =~ s/\\\|\[Cacute\]\\\|/\@\'C/g; # capital C, acute accent
1899
$line =~ s/\\\|\[ccaron\]\\\|/\[ccaron\]/g; # small c, caron
1900
$line =~ s/\\\|\[Ccaron\]\\\|/\[Ccaron\]/g; # capital C, caron
1901
$line =~ s/\\\|\[ccirc \]\\\|/\@\^c/g; # small c, circumflex accent
1902
$line =~ s/\\\|\[Ccirc \]\\\|/\@\^C/g; # capital C, circumflex accent
1903
$line =~ s/\\\|\[cdot \]\\\|/\@dotaccent\{c\}/g; # small c, dot above
1904
$line =~ s/\\\|\[Cdot \]\\\|/\@dotaccent\{C\}/g; # capital C, dot above
1905
$line =~ s/\\\|\[dcaron\]\\\|/\[dcaron\]/g; # small d, caron
1906
$line =~ s/\\\|\[Dcaron\]\\\|/\[Dcaron\]/g; # capital D, caron
1907
$line =~ s/\\\|\[dstrok\]\\\|/\@d\{\}/g; # small d, stroke
1908
$line =~ s/\\\|\[Dstrok\]\\\|/\[Dstrok\]/g; # capital D, stroke
1909
$line =~ s/\\\|\[ecaron\]\\\|/\[ecaron\]/g; # small e, caron
1910
$line =~ s/\\\|\[Ecaron\]\\\|/\[Ecaron\]/g; # capital E, caron
1911
$line =~ s/\\\|\[edot \]\\\|/\@dotaccent\{e\}/g; # small e, dot above
1912
$line =~ s/\\\|\[Edot \]\\\|/\@dotaccent\{E\}/g; # capital E, dot above
1913
$line =~ s/\\\|\[emacr \]\\\|/\[emacr \]/g; # small e, macron
1914
$line =~ s/\\\|\[Emacr \]\\\|/\[Emacr \]/g; # capital E, macron
1915
$line =~ s/\\\|\[eogon \]\\\|/\[eogon \]/g; # small e, ogonek
1916
$line =~ s/\\\|\[Eogon \]\\\|/\[Eogon \]/g; # capital E, ogonek
1917
$line =~ s/\\\|\[gacute\]\\\|/\@\'g/g; # small g, acute accent
1918
$line =~ s/\\\|\[gbreve\]\\\|/\[gbreve\]/g; # small g, breve
1919
$line =~ s/\\\|\[Gbreve\]\\\|/\[Gbreve\]/g; # capital G, breve
1920
$line =~ s/\\\|\[Gcedil\]\\\|/\@\,\{G\}/g; # capital G, cedilla
1921
$line =~ s/\\\|\[gcirc \]\\\|/\@\^g/g; # small g, circumflex accent
1922
$line =~ s/\\\|\[Gcirc \]\\\|/\@\^G/g; # capital G, circumflex accent
1923
$line =~ s/\\\|\[gdot \]\\\|/\@dotaccent\{g\}/g; # small g, dot above
1924
$line =~ s/\\\|\[Gdot \]\\\|/\@dotaccent\{G\}/g; # capital G, dot above
1925
$line =~ s/\\\|\[hcirc \]\\\|/\@\^h/g; # small h, circumflex accent
1926
$line =~ s/\\\|\[Hcirc \]\\\|/\@\^H/g; # capital H, circumflex accent
1927
$line =~ s/\\\|\[hstrok\]\\\|/\[hstrok\]/g; # small h, stroke
1928
$line =~ s/\\\|\[Hstrok\]\\\|/\@H\{\}/g; # capital H, stroke
1929
$line =~ s/\\\|\[Idot \]\\\|/\@dotaccent\{I\}/g; # capital I, dot above
1930
$line =~ s/\\\|\[Imacr \]\\\|/\[Imacr \]/g; # capital I, macron
1931
$line =~ s/\\\|\[imacr \]\\\|/\[imacr \]/g; # small i, macron
1932
$line =~ s/\\\|\[ijlig \]\\\|/\[ijlig \]/g; # small ij ligature
1933
$line =~ s/\\\|\[IJlig \]\\\|/\[IJlig \]/g; # capital IJ ligature
1934
$line =~ s/\\\|\[inodot\]\\\|/\[inodot\]/g; # small i without dot
1935
$line =~ s/\\\|\[iogon \]\\\|/\[iogon \]/g; # small i, ogonek
1936
$line =~ s/\\\|\[Iogon \]\\\|/\[Iogon \]/g; # capital I, ogonek
1937
$line =~ s/\\\|\[itilde\]\\\|/\@\~i/g; # small i, tilde
1938
$line =~ s/\\\|\[Itilde\]\\\|/\@\~I/g; # capital I, tilde
1939
$line =~ s/\\\|\[jcirc \]\\\|/\@\^j/g; # small j, circumflex accent
1940
$line =~ s/\\\|\[Jcirc \]\\\|/\@\^J/g; # capital J, circumflex accent
1941
$line =~ s/\\\|\[kcedil\]\\\|/\@\,\{k\}/g; # small k, cedilla
1942
$line =~ s/\\\|\[Kcedil\]\\\|/\@\,\{K\}/g; # capital K, cedilla
1943
$line =~ s/\\\|\[kgreen\]\\\|/\[kgreen\]/g; # small k, Greenlandic
1944
$line =~ s/\\\|\[lacute\]\\\|/\@\'l/g; # small l, acute accent
1945
$line =~ s/\\\|\[Lacute\]\\\|/\@\'L/g; # capital L, acute accent
1946
$line =~ s/\\\|\[lcaron\]\\\|/\[lcaron\]/g; # small l, caron
1947
$line =~ s/\\\|\[Lcaron\]\\\|/\[Lcaron\]/g; # capital L, caron
1948
$line =~ s/\\\|\[lcedil\]\\\|/\@\,\{l\}/g; # small l, cedilla
1949
$line =~ s/\\\|\[Lcedil\]\\\|/\@\,\{L\}/g; # capital L, cedilla
1950
$line =~ s/\\\|\[lmidot\]\\\|/\[lmidot\]/g; # small l, middle dot
1951
$line =~ s/\\\|\[Lmidot\]\\\|/\[Lmidot\]/g; # capital L, middle dot
1952
$line =~ s/\\\|\[lstrok\]\\\|/\@l\{\}/g; # small l, stroke
1953
$line =~ s/\\\|\[Lstrok\]\\\|/\@L\{\}/g; # capital L, stroke
1954
$line =~ s/\\\|\[nacute\]\\\|/\@\'n/g; # small n, acute accent
1955
$line =~ s/\\\|\[Nacute\]\\\|/\@\'N/g; # capital N, acute accent
1956
$line =~ s/\\\|\[eng \]\\\|/\[eng \]/g; # small eng, Lapp
1957
$line =~ s/\\\|\[ENG \]\\\|/\[ENG \]/g; # capital ENG, Lapp
1958
$line =~ s/\\\|\[napos \]\\\|/\[napos \]/g; # small n, apostrophe
1959
$line =~ s/\\\|\[ncaron\]\\\|/\[ncaron\]/g; # small n, caron
1960
$line =~ s/\\\|\[Ncaron\]\\\|/\[Ncaron\]/g; # capital N, caron
1961
$line =~ s/\\\|\[ncedil\]\\\|/\@\,\{n\}/g; # small n, cedilla
1962
$line =~ s/\\\|\[Ncedil\]\\\|/\@\,\{N\}/g; # capital N, cedilla
1963
$line =~ s/\\\|\[odblac\]\\\|/\@H\{o\}/g; # small o, double acute accent
1964
$line =~ s/\\\|\[Odblac\]\\\|/\@H\{O\}/g; # capital O, double acute accent
1965
$line =~ s/\\\|\[Omacr \]\\\|/\[Omacr \]/g; # capital O, macron
1966
$line =~ s/\\\|\[omacr \]\\\|/\[omacr \]/g; # small o, macron
1967
$line =~ s/\\\|\[oelig \]\\\|/\@oe\{\}/g; # small oe ligature
1968
$line =~ s/\\\|\[OElig \]\\\|/\@OE\{\}/g; # capital OE ligature
1969
$line =~ s/\\\|\[racute\]\\\|/\@\'r/g; # small r, acute accent
1970
$line =~ s/\\\|\[Racute\]\\\|/\@\'R/g; # capital R, acute accent
1971
$line =~ s/\\\|\[rcaron\]\\\|/\[rcaron\]/g; # small r, caron
1972
$line =~ s/\\\|\[Rcaron\]\\\|/\[Rcaron\]/g; # capital R, caron
1973
$line =~ s/\\\|\[rcedil\]\\\|/\@\,\{r\}/g; # small r, cedilla
1974
$line =~ s/\\\|\[Rcedil\]\\\|/\@\,\{R\}/g; # capital R, cedilla
1975
$line =~ s/\\\|\[sacute\]\\\|/\@\'s/g; # small s, acute accent
1976
$line =~ s/\\\|\[Sacute\]\\\|/\@\'S/g; # capital S, acute accent
1977
$line =~ s/\\\|\[scaron\]\\\|/\[scaron\]/g; # small s, caron
1978
$line =~ s/\\\|\[Scaron\]\\\|/\[Scaron\]/g; # capital S, caron
1979
$line =~ s/\\\|\[scedil\]\\\|/\@\,\{s\}/g; # small s, cedilla
1980
$line =~ s/\\\|\[Scedil\]\\\|/\@\,\{S\}/g; # capital S, cedilla
1981
$line =~ s/\\\|\[scirc \]\\\|/\@\^s/g; # small s, circumflex accent
1982
$line =~ s/\\\|\[Scirc \]\\\|/\@\^S/g; # capital S, circumflex accent
1983
$line =~ s/\\\|\[tcaron\]\\\|/\[tcaron\]/g; # small t, caron
1984
$line =~ s/\\\|\[Tcaron\]\\\|/\[Tcaron\]/g; # capital T, caron
1985
$line =~ s/\\\|\[tcedil\]\\\|/\@\,\{t\}/g; # small t, cedilla
1986
$line =~ s/\\\|\[Tcedil\]\\\|/\@\,\{T\}/g; # capital T, cedilla
1987
$line =~ s/\\\|\[tstrok\]\\\|/\@t\{\}/g; # small t, stroke
1988
$line =~ s/\\\|\[Tstrok\]\\\|/\[Tstrok\]/g; # capital T, stroke
1989
$line =~ s/\\\|\[ubreve\]\\\|/\[ubreve\]/g; # small u, breve
1990
$line =~ s/\\\|\[Ubreve\]\\\|/\[Ubreve\]/g; # capital U, breve
1991
$line =~ s/\\\|\[udblac\]\\\|/\@H\{u\}/g; # small u, double acute accent
1992
$line =~ s/\\\|\[Udblac\]\\\|/\@H\{U\}/g; # capital U, double acute accent
1993
$line =~ s/\\\|\[umacr \]\\\|/\[umacr \]/g; # small u, macron
1994
$line =~ s/\\\|\[Umacr \]\\\|/\[Umacr \]/g; # capital U, macron
1995
$line =~ s/\\\|\[uogon \]\\\|/\[uogon \]/g; # small u, ogonek
1996
$line =~ s/\\\|\[Uogon \]\\\|/\[Uogon \]/g; # capital U, ogonek
1997
$line =~ s/\\\|\[uring \]\\\|/\@ringaccent\{u\}/g; # small u, ring
1998
$line =~ s/\\\|\[Uring \]\\\|/\@ringaccent\{U\}/g; # capital U, ring
1999
$line =~ s/\\\|\[utilde\]\\\|/\@\~u/g; # small u, tilde
2000
$line =~ s/\\\|\[Utilde\]\\\|/\@\~U/g; # capital U, tilde
2001
$line =~ s/\\\|\[wcirc \]\\\|/\@\^w/g; # small w, circumflex accent
2002
$line =~ s/\\\|\[Wcirc \]\\\|/\@\^W/g; # capital W, circumflex accent
2003
$line =~ s/\\\|\[ycirc \]\\\|/\@\^y/g; # small y, circumflex accent
2004
$line =~ s/\\\|\[Ycirc \]\\\|/\@\^Y/g; # capital Y, circumflex accent
2005
$line =~ s/\\\|\[Yuml \]\\\|/\@"Y/g; # capital Y, dieresis or umlaut mark
2006
$line =~ s/\\\|\[zacute\]\\\|/\@\'z/g; # small z, acute accent
2007
$line =~ s/\\\|\[Zacute\]\\\|/\@\'Z/g; # capital Z, acute accent
2008
$line =~ s/\\\|\[zcaron\]\\\|/\[zcaron\]/g; # small z, caron
2009
$line =~ s/\\\|\[Zcaron\]\\\|/\[Zcaron\]/g; # capital Z, caron
2010
$line =~ s/\\\|\[zdot \]\\\|/\@dotaccent\{z\}/g; # small z, dot above
2011
$line =~ s/\\\|\[Zdot \]\\\|/\@dotaccent\{Z\}/g; # capital Z, dot above
2014
# Sgmltexi added entities for Texinfo compatibility.
2015
$line =~ s/\\\|\[3dots \]\\\|/\@dots\{\}/g; # three dots
2016
$line =~ s/\\\|\[4dots \]\\\|/\@enddots\{\}/g; # four dots
2017
$line =~ s/\\\|\[TeX \]\\\|/\@TeX\{\}/g; # TeX
2018
$line =~ s/\\\|\[result\]\\\|/\@result\{\}/g; #
2019
$line =~ s/\\\|\[expans\]\\\|/\@expansion\{\}/g; #
2020
$line =~ s/\\\|\[print \]\\\|/\@print\{\}/g; #
2021
$line =~ s/\\\|\[error \]\\\|/\@error\{\}/g; #
2022
$line =~ s/\\\|\[point \]\\\|/\@point\{\}/g; #
2023
$line =~ s/\\\|\[today \]\\\|/\@today\{\}/g; #
2024
$line =~ s/\\\|\[esexcl\]\\\|/\@\!/g; # end of sentence exclamation mark
2025
$line =~ s/\\\|\[esperi\]\\\|/\@\./g; # end of sentence period
2026
$line =~ s/\\\|\[nes \]\\\|/\@\:/g; # not ending sentence
2027
$line =~ s/\\\|\[esques\]\\\|/\@\?/g; # end of sentence question mark
2032
#-----------------------------------------------------------------------
2033
# Jump a %block; element that starts on its own line, and that
2034
# terminates on a line by itself.
2035
# This %block; element is meant in the way that it cannot contain
2036
# itself recursively.
2040
local ($input_stream) = $_[0];
2041
local ($output_stream) = $_[1];
2042
local ($line) = $_[2];
2043
local ($termination_re) = $_[3];
2045
# Try to jump the block.
2046
while ($line !~ m/$termination_re/i)
2048
# Print the line and read the next.
2049
print $output_stream "$line";
2050
$line = <$input_stream>;
2052
# Print the last line.
2053
print $output_stream "$line";
2056
#-----------------------------------------------------------------------
2057
# Diagnostic output; it depends on the following global variables:
2063
local ($string) = $_[0];
2065
# Append to the diagnostic file.
2066
open (DIAG, ">> $root_file_name.diag");
2070
print STDOUT ($string);
2072
# In any case, print it on the DIAG file
2073
print DIAG ($string);
2080
#-----------------------------------------------------------------------
2083
# Transform SP output for some special character, depending on the
2084
# back-end system limitations.
2086
# &sp_filter (INPUT_FILE, TYPESETTING,
2087
# ORIGINAL_FILE_NAME) --> OUTPUT_FILE
2091
local ($input_file) = $_[0];
2092
local ($typesetting) = $_[1];
2093
local ($original_file_name) = $_[2];
2094
local ($output_file) = &temporary_file;
2095
chomp ($output_file);
2098
local ($line_prefix) = "";
2099
local ($line_content) = "";
2101
# Tell what we are doing.
2102
&diag_output (sprintf (gettext ("%s:%s: post-SP re-elaborations\n"),
2103
$program_executable, $original_file_name));
2105
# Here there is no need to use references for file handler names,
2106
# but this way we use uniform code.
2107
local ($input_stream) = "$input_file";
2108
local ($output_stream) = "$output_file";
2111
#-------------------------------------------------------------------
2114
# &jump_sp_element (INPUT_STREAM, OUTPUT_STREAM, LINE,
2115
# CONCLUSION_STRING)
2119
local ($input_stream) = $_[0];
2120
local ($output_stream) = $_[1];
2121
local ($line) = $_[2];
2122
local ($conclusion) = $_[3];
2125
while ($line !~ m/^$conclusion$/i)
2127
# Transfer the line, read the next and increase the counter.
2128
print $output_stream ("$line");
2129
$line = <$input_stream>;
2132
# Last line (the one with the end string) must be transfered.
2133
print $output_stream ("$line");
2137
#-------------------------------------------------------------------
2138
# Start of &sp_filter()
2139
#-------------------------------------------------------------------
2141
# Open input and output files.
2142
open ($input_stream, "< $input_file");
2143
open ($output_stream, "> $output_file");
2145
# Do what is required
2146
while ($line = <$input_stream>)
2148
# Literal text is jumped.
2149
if ($line =~ m/^\(TEXINFO$/i)
2151
&jump_sp_element ($input_stream, $output_stream, $line,
2154
elsif ($line =~ m/^\(TEX$/i)
2156
&jump_sp_element ($input_stream, $output_stream, $line,
2159
elsif ($line =~ m/^\(HTML$/i)
2161
&jump_sp_element ($input_stream, $output_stream, $line,
2164
elsif ($line =~ m/^\(VERB$/i)
2166
&jump_sp_element ($input_stream, $output_stream, $line,
2169
elsif ($line =~ m/^\(VERBATIMPRE$/i)
2171
&jump_sp_element ($input_stream, $output_stream, $line,
2172
"\\)VERBATIMPRE\$");
2174
elsif ($line =~ m/^(-)(.*)$/)
2176
# This is a text line, because it starts with a "-".
2177
# Must be re-elaborated.
2182
#-----------------------------------------------------------
2183
# Start converting special character into SDATA entities.
2184
#-----------------------------------------------------------
2186
$line_content = &minimal_sp_text_to_sdata ($line_content);
2188
if ($input_encoding eq "ISO-8859-1")
2190
$line_content = &iso_8859_1_sp_text_to_sdata ($line_content);
2192
elsif ($input_encoding eq "ISO-8859-2")
2194
$line_content = &iso_8859_2_sp_text_to_sdata ($line_content);
2196
elsif ($input_encoding eq "ISO-8859-3")
2198
$line_content = &iso_8859_3_sp_text_to_sdata ($line_content);
2200
elsif ($input_encoding eq "ISO-8859-4")
2202
$line_content = &iso_8859_4_sp_text_to_sdata ($line_content);
2204
elsif ($input_encoding eq "ISO-8859-5")
2206
$line_content = &iso_8859_5_sp_text_to_sdata ($line_content);
2208
elsif ($input_encoding eq "ISO-8859-6")
2210
$line_content = &iso_8859_6_sp_text_to_sdata ($line_content);
2212
elsif ($input_encoding eq "ISO-8859-7")
2214
$line_content = &iso_8859_7_sp_text_to_sdata ($line_content);
2216
elsif ($input_encoding eq "ISO-8859-8")
2218
$line_content = &iso_8859_8_sp_text_to_sdata ($line_content);
2220
elsif ($input_encoding eq "ISO-8859-9")
2222
$line_content = &iso_8859_9_sp_text_to_sdata ($line_content);
2224
elsif ($input_encoding eq "ISO-8859-10")
2226
$line_content = &iso_8859_10_sp_text_to_sdata ($line_content);
2229
#-----------------------------------------------------------
2230
# Some special symbols for this transformation
2231
# are declared as SDATA entities, with the
2233
# When SP insert these SDATA entities, they became
2235
# This ensure that the substitution mechanism
2236
# doesn't do mistakes.
2237
# Some special characters must be transformed
2238
# before into "\|[name ]\|", then they are
2239
# translated back into the right way.
2240
# This way, characters that require a special
2241
# form when use with some programs, may be
2242
# inserted literally, as long that this
2243
# can be done for SGML, and also as SGML entities.
2244
#-----------------------------------------------------------
2246
$line_content = &sp_sdata_text_to_sp_texinfo ($line_content);
2249
$line = $line_prefix . $line_content . "\n";
2250
# The line is transfered.
2251
print $output_stream ($line);
2253
elsif ($line =~ m/^(A.*?CDATA)(.*)$/ )
2255
# This is a CDATA attribute, because it starts with a "A..CDATA".
2256
# Must be re-elaborated.
2261
#-----------------------------------------------------------
2262
# Start converting special character into SDATA entities.
2263
#-----------------------------------------------------------
2265
$line_content = &minimal_sp_text_to_sdata ($line_content);
2267
if ($input_encoding eq "ISO-8859-1")
2269
$line_content = &iso_8859_1_sp_text_to_sdata ($line_content);
2271
elsif ($input_encoding eq "ISO-8859-2")
2273
$line_content = &iso_8859_2_sp_text_to_sdata ($line_content);
2275
elsif ($input_encoding eq "ISO-8859-3")
2277
$line_content = &iso_8859_3_sp_text_to_sdata ($line_content);
2279
elsif ($input_encoding eq "ISO-8859-4")
2281
$line_content = &iso_8859_4_sp_text_to_sdata ($line_content);
2283
elsif ($input_encoding eq "ISO-8859-5")
2285
$line_content = &iso_8859_5_sp_text_to_sdata ($line_content);
2287
elsif ($input_encoding eq "ISO-8859-6")
2289
$line_content = &iso_8859_6_sp_text_to_sdata ($line_content);
2291
elsif ($input_encoding eq "ISO-8859-7")
2293
$line_content = &iso_8859_7_sp_text_to_sdata ($line_content);
2295
elsif ($input_encoding eq "ISO-8859-8")
2297
$line_content = &iso_8859_8_sp_text_to_sdata ($line_content);
2299
elsif ($input_encoding eq "ISO-8859-9")
2301
$line_content = &iso_8859_9_sp_text_to_sdata ($line_content);
2303
elsif ($input_encoding eq "ISO-8859-10")
2305
$line_content = &iso_8859_10_sp_text_to_sdata ($line_content);
2308
#-----------------------------------------------------------
2309
# Start converting SDATA into back-end code.
2310
#-----------------------------------------------------------
2312
$line_content = &sp_sdata_text_to_sp_texinfo ($line_content);
2315
$line = $line_prefix . $line_content . "\n";
2316
# The line is transfered.
2317
print $output_stream ($line);
2321
# The line is transfered.
2322
print $output_stream ($line);
2327
close ($input_stream);
2328
close ($output_stream);
2330
# Return the temporary file name.
2331
return ($output_file);
2335
#======================================================================
2337
#----------------------------------------------------------------------
2339
local ($source_file_name) = "";
2340
local ($input_encoding) = "";
2341
local ($output_encoding) = "";
2342
local ($action) = "";
2344
local ($number_sections) = 0;
2345
local ($paper) = "";
2346
local ($setchapternewpage) = "";
2347
local ($footnotestyle) = "";
2348
local ($headings) = "";
2349
local ($sgml_include) = ();
2350
local ($nsgmls_include_options) = "";
2351
local ($end_of_options) = 0;
2353
local ($typesetting) = "TEXINFO";
2354
local ($makeinfo_options) = "";
2356
# used to tell what kind of target is the post-SP elaboration for.
2357
local ($sgml_target) = $typesetting;
2359
local ($root_file_name) = "";
2360
local ($post_sp_temp_file) = &temporary_file;
2361
local ($post_sp_filter_temp_file) = "";
2363
local ($verbose) = 0;
2367
for ($n = 0; $n <= $#ARGV; $n++)
2369
# Analyze argument $n.
2370
if ($ARGV[$n] !~ m/^-/)
2372
# Options are terminated as this argument has no minus at the
2373
# beginning. This must be a file name.
2374
if ($end_of_options)
2376
# As options are already terminated, this is an extra
2377
# argument: a mistake.
2378
print STDERR (sprintf (gettext ("%s: no more arguments allowed after the file name: %s\n"),
2379
$program_executable, $ARGV[$n]));
2384
# This is the first time that we encounter an argument
2385
# without "-". Must be the source file.
2386
$end_of_options = 1;
2387
$source_file_name = $ARGV[$n];
2391
elsif ($ARGV[$n] eq "--help")
2393
# The user is asking for help.
2397
elsif ($ARGV[$n] eq "--version")
2399
# The user wants to know the program version.
2404
elsif ($ARGV[$n] eq "--force")
2406
# The user wants to get the output even with errors.
2409
elsif ($ARGV[$n] eq "--number-sections")
2411
# The user wants to get numbers on sections also with makeinfo.
2412
$number_sections = 1;
2414
elsif ($ARGV[$n] eq "--sgml-syntax"
2415
|| $ARGV[$n] eq "--sgml-check")
2417
# The user wants to check the SGML source.
2418
# We need to verify that the action wasn't already defined.
2421
$action = "sgml-check";
2425
print STDERR (sprintf (gettext ("%s: only one action option is allowed: %s\n"),
2426
$program_executable, $ARGV[$n]));
2430
elsif ($ARGV[$n] eq "--sgml-syntax-hard"
2431
|| $ARGV[$n] eq "--sgml-check-hard")
2433
# The user wants to check all SGML aspects.
2434
# We need to verify that the action wasn't already defined.
2437
$action = "sgml-check-hard";
2441
print STDERR (sprintf (gettext ("%s: only one action option is allowed: %s\n"),
2442
$program_executable, $ARGV[$n]));
2446
elsif ($ARGV[$n] =~ m/^--input-encoding=(.*)$/)
2448
# The user tells the input encoding.
2449
# We need to verify that the encoding wasn't already defined.
2450
if ($input_encoding eq "")
2452
$input_encoding = $1;
2453
$output_encoding = "ISO-646";
2457
print STDERR (sprintf (gettext ("%s: only one option is allowed: %s\n"),
2458
$program_executable, $ARGV[$n]));
2462
elsif ($ARGV[$n] =~ m/^--sgml-include=(.*)$/
2463
|| $ARGV[$n] =~ m/^--include=(.*)$/)
2465
# The user tells the name of an SGML parameter entity
2466
# that should be assigned with the word "INCLUDE". That
2469
# <!ENTITY % name "INCLUDE">
2471
# This option is cumulative; this way, we add to an array.
2472
$sgml_include[$#sgml_include+1] = $1;
2474
elsif ( $ARGV[$n] =~ m/^--paper=(.+)$/ )
2476
# The user tells what page size.
2477
# We need to verify that the dimensions weren't already defined.
2483
|| $paper eq "a4latex"
2484
|| $paper eq "a4wide"
2486
|| $paper eq "letter"
2487
|| $paper eq "small")
2489
# The paper formats are ok.
2494
print STDERR (sprintf (gettext ("%s: paper size unknown %s\n"),
2495
$program_executable, $ARGV[$n]));
2502
print STDERR (sprintf (gettext ("%s: only one paper size option is allowed %s\n"),
2503
$program_executable, $ARGV[$n]));
2507
elsif ( $ARGV[$n] =~ m/^--setchapternewpage=(.+)$/ )
2509
# The user tells to override the <setchapternewpage> tag.
2510
# We need to verify that it wasn't already defined.
2511
if ($setchapternewpage eq "")
2513
$setchapternewpage = lc $1;
2514
if ($setchapternewpage eq ""
2515
|| $setchapternewpage eq "on"
2516
|| $setchapternewpage eq "off"
2517
|| $setchapternewpage eq "odd")
2519
# The setchapternewpage attribute is ok.
2524
print STDERR (sprintf (gettext ("%s: setchapternewpage attribute unknown %s\n"),
2525
$program_executable, $ARGV[$n]));
2531
print STDERR (sprintf (gettext ("%s: only one setchapternewpage option is allowed %s\n"),
2532
$program_executable, $ARGV[$n]));
2536
elsif ( $ARGV[$n] =~ m/^--footnotestyle=(.+)$/ )
2538
# The user tells to override the <footnotestyle> tag.
2539
# We need to verify that it wasn't already defined.
2540
if ($footnotestyle eq "")
2542
$footnotestyle = lc $1;
2543
if ($footnotestyle eq ""
2544
|| $footnotestyle eq "end"
2545
|| $footnotestyle eq "separate")
2547
# The footnotestyle attribute is ok.
2552
print STDERR (sprintf (gettext ("%s: footnotestyle attribute unknown %s\n"),
2553
$program_executable, $ARGV[$n]));
2559
print STDERR (sprintf (gettext ("%s: only one footnotestyle option is allowed %s\n"),
2560
$program_executable, $ARGV[$n]));
2564
elsif ( $ARGV[$n] =~ m/^--headings=(.+)$/ )
2566
# The user tells to override the <headings> tag.
2567
# We need to verify that it wasn't already defined.
2568
if ($headings eq "")
2572
|| $headings eq "on"
2573
|| $headings eq "off"
2574
|| $headings eq "single"
2575
|| $headings eq "double"
2576
|| $headings eq "singleafter"
2577
|| $headings eq "doubleafter")
2579
# The headings attribute is ok.
2584
print STDERR (sprintf (gettext ("%s: headings attribute unknown %s\n"),
2585
$program_executable, $ARGV[$n]));
2591
print STDERR (sprintf (gettext ("%s: only one headings option is allowed %s\n"),
2592
$program_executable, $ARGV[$n]));
2596
elsif ($ARGV[$n] eq "--texi"
2597
|| $ARGV[$n] eq "--texinfo")
2599
# The user wants to generate a Texinfo source.
2600
# We need to verify that the action wasn't already defined.
2603
$action = "texinfo";
2607
print STDERR (sprintf (gettext ("%s: only one action option is allowed: %s\n"),
2608
$program_executable, $ARGV[$n]));
2612
elsif ( $ARGV[$n] eq "--dvi" )
2614
# The user wants to generate a DVI output.
2615
# We need to verify that the action wasn't already defined.
2622
print STDERR (sprintf (gettext ("%s: only one action option is allowed: %s\n"),
2623
$program_executable, $ARGV[$n]));
2627
elsif ( $ARGV[$n] eq "--sp" )
2629
# The user wants to generate a SP output for debugging.
2630
# We need to verify that the action wasn't already defined.
2637
print STDERR (sprintf (gettext ("%s: only one action option is allowed: %s\n"),
2638
$program_executable, $ARGV[$n]));
2642
elsif ($ARGV[$n] eq "--ps"
2643
|| $ARGV[$n] eq "--postscript")
2645
# The user wants to generate a PostScript output.
2646
# We need to verify that the action wasn't already defined.
2653
print STDERR (sprintf (gettext ("%s: only one action option is allowed: %s\n"),
2654
$program_executable, $ARGV[$n]));
2658
elsif ($ARGV[$n] eq "--info")
2660
# The user wants to generate an Info output.
2661
# We need to verify that the action wasn't already defined.
2668
print STDERR (sprintf (gettext ("%s: only one action option is allowed: %s\n"),
2669
$program_executable, $ARGV[$n]));
2673
elsif ($ARGV[$n] eq "--text")
2675
# The user wants to generate a pure text output.
2676
# We need to verify that the action wasn't already defined.
2683
print STDERR (sprintf (gettext ("%s: only one action option is allowed: %s\n"),
2684
$program_executable, $ARGV[$n]));
2688
elsif ($ARGV[$n] eq "--pdf")
2690
# The user wants to generate a PDF output.
2691
# We need to verify that the action wasn't already defined.
2698
print STDERR (sprintf (gettext ("%s: only one action option is allowed: %s\n"),
2699
$program_executable, $ARGV[$n]));
2703
elsif ($ARGV[$n] eq "--html")
2705
# The user wants to generate a HTML output.
2706
# We need to verify that the action wasn't already defined.
2713
print STDERR (sprintf (gettext ("%s: only one action option is allowed: %s\n"),
2714
$program_executable, $ARGV[$n]));
2718
elsif ($ARGV[$n] eq "--xml")
2720
# The user wants to generate a XML output.
2721
# We need to verify that the action wasn't already defined.
2728
print STDERR (sprintf (gettext ("%s: only one action option is allowed: %s\n"),
2729
$program_executable, $ARGV[$n]));
2733
elsif ($ARGV[$n] eq "--docbook")
2735
# The user wants to generate a XML Docbook output.
2736
# We need to verify that the action wasn't already defined.
2739
$action = "docbook";
2743
print STDERR (sprintf (gettext ("%s: only one action option is allowed: %s\n"),
2744
$program_executable, $ARGV[$n]));
2748
elsif ($ARGV[$n] eq "--verbose")
2750
# Verbose mode was required.
2753
elsif ($ARGV[$n] eq "--clean")
2755
# The user wants to generate a DVI output.
2756
# We need to verify that the action wasn't already defined.
2763
print STDERR (sprintf (gettext ("%s: only one action option is allowed: %s\n"),
2764
$program_executable, $ARGV[$n]));
2770
# Must be an unknown option.
2771
print STDERR (sprintf (gettext ("%s: unknown option: %s\n"),
2772
$program_executable, $ARGV[$n]));
2778
# Are arguments logical?
2779
# Define default values an prepare some values.
2781
if ($input_encoding eq ""
2782
|| $input_encoding eq "ISO-8859-1"
2783
|| $input_encoding eq "ISO-8859-2"
2784
|| $input_encoding eq "ISO-8859-3"
2785
|| $input_encoding eq "ISO-8859-4"
2786
|| $input_encoding eq "ISO-8859-5"
2787
|| $input_encoding eq "ISO-8859-6"
2788
|| $input_encoding eq "ISO-8859-7"
2789
|| $input_encoding eq "ISO-8859-8"
2790
|| $input_encoding eq "ISO-8859-9"
2791
|| $input_encoding eq "ISO-8859-10")
2798
print STDERR (sprintf (gettext ("%s: unsupported input encoding: %s\n"),
2799
$program_executable, $input_encoding));
2805
$action = "texinfo";
2808
for ($n = 0 ; $n <= $#sgml_include ; $n++)
2810
$nsgmls_include_options
2811
= $nsgmls_include_options . " -i" . $sgml_include[$n];
2814
#----------------------------------------------------------------------
2815
# We assume that if we are here, all arguments are ok.
2816
# If we are here, there is something to do.
2817
#----------------------------------------------------------------------
2819
# Define the root file name.
2820
$root_file_name = &root_name ("$source_file_name", ".sgml");
2822
# Prepare the diagnostic messages file. It will be reopened when
2824
open (DIAG, "> $root_file_name.diag");
2827
# If we have to clean from stale files; we do here:
2828
if ($action eq "clean")
2830
system( "mv $root_file_name.ps $root_file_name.ps1 > /dev/null 2>&1" );
2832
# This deletes also PostScript files.
2833
system( "rm $root_file_name.?? > /dev/null 2>&1" );
2834
system( "mv $root_file_name.ps1 $root_file_name.ps > /dev/null 2>&1" );
2836
system( "rm $root_file_name.??s > /dev/null 2>&1" );
2837
system( "rm $root_file_name.??x > /dev/null 2>&1" );
2838
system( "rm $root_file_name.log > /dev/null 2>&1" );
2839
system( "rm $root_file_name.toc > /dev/null 2>&1" );
2840
system( "rm $root_file_name.diag > /dev/null 2>&1" );
2841
system( "rm $root_file_name.*.bak > /dev/null 2>&1" );
2846
# First step filter.
2847
# There isn't any more.
2849
# Second step filter.
2850
# There isn't any more.
2852
# Now we call nsgmls from the SP package and do what it is required.
2853
if ($action eq "sgml-check")
2855
# We just check the SGML. The output is controlled by less, so
2856
# we can read it well.
2858
("cat $source_file_name | nsgmls $nsgmls_include_options -s -c $CATALOG 2>&1 | less");
2860
elsif ($action eq "sgml-check-hard")
2862
# We just check the SGML in an hard way.
2863
# The output is controlled by less, so
2864
# we can read it well.
2866
("cat $source_file_name | nsgmls $nsgmls_include_options -wall -s -c $CATALOG 2>&1 | less");
2870
# Tell what we are doing.
2871
&diag_output (sprintf (gettext ("%s:%s: SGML parse\n"),
2872
$program_executable, $source_file_name));
2874
# We obtain a first pass SP output.
2876
("cat $source_file_name | nsgmls $nsgmls_include_options -c $CATALOG > $post_sp_temp_file");
2878
# Now we have to modify the SP output.
2879
$post_sp_filter_temp_file = &sp_filter ($post_sp_temp_file,
2880
$typesetting, $source_file_name);
2882
if ($action eq "sp")
2884
# All done. The SP output is ready.
2885
# We just copy the temporary file into an appropriate name.
2886
system ("cp $post_sp_filter_temp_file $root_file_name.sp");
2891
# We have to elaborate the post-SP output
2892
# This elaboration will generate the file $root_file_name.texinfo
2894
# We just need to call:
2895
#&sgml_post_sp_elab ($post_sp_filter_temp_file,
2897
# $source_file_name,
2900
# $setchapternewpage,
2903
# $output_encoding);
2905
# But we cannot, as this will take away all resources and
2906
# the system() function will not work well for further
2907
# elaborations (makeinfo and texi2dvi).
2909
# So this function is inside a specific Perl program:
2912
# Notice that arguments must be enclosed with double quotes
2913
# because these arguments may be empty.
2915
# Last argument, $verbose, is meant to be like a global variable.
2917
system ("sgmltexi-sp2texi \"$post_sp_filter_temp_file\" \"$sgml_target\" \"$source_file_name\" \"$root_file_name\" \"$paper\" \"$setchapternewpage\" \"$footnotestyle\" \"$headings\" \"$output_encoding\" \"$verbose\"");
2919
if ($action eq "texinfo"
2920
|| $action eq "texi")
2922
# All done. The Texinfo source is ready.
2925
elsif ($action eq "info")
2930
= $makeinfo_options . "--force ";
2932
if ($number_sections)
2935
= $makeinfo_options . "--number-sections ";
2938
system ("makeinfo $makeinfo_options $root_file_name.texinfo");
2940
elsif ($action eq "text")
2945
= $makeinfo_options . "--force ";
2947
if ($number_sections)
2950
= $makeinfo_options . "--number-sections ";
2953
system ("makeinfo --no-headers --no-split $makeinfo_options --output=$root_file_name.txt $root_file_name.texinfo");
2955
elsif ($action eq "html")
2960
= $makeinfo_options . "--force ";
2962
if ($number_sections)
2965
= $makeinfo_options . "--number-sections ";
2968
system ("makeinfo --html $makeinfo_options $root_file_name.texinfo");
2970
elsif ($action eq "xml")
2975
= $makeinfo_options . "--force ";
2977
if ($number_sections)
2980
= $makeinfo_options . "--number-sections ";
2983
system ("makeinfo --xml $makeinfo_options $root_file_name.texinfo");
2985
elsif ($action eq "docbook")
2990
= $makeinfo_options . "--force ";
2992
if ($number_sections)
2995
= $makeinfo_options . "--number-sections ";
2998
system ("makeinfo --docbook $makeinfo_options $root_file_name.texinfo");
3000
elsif ($action eq "dvi")
3002
system ("texi2dvi $root_file_name.texinfo");
3003
# It seems that it is better to do it twice.
3004
system ("texi2dvi $root_file_name.texinfo");
3006
elsif ($action eq "ps")
3008
system ("texi2dvi $root_file_name.texinfo");
3009
# It seems that it is better to do it twice.
3010
system ("texi2dvi $root_file_name.texinfo");
3013
system ("dvips -K -t a4 -o $root_file_name.ps $root_file_name.dvi");
3015
elsif ($paper eq "letter")
3017
system ("dvips -K -t letter -o $root_file_name.ps $root_file_name.dvi");
3021
system ("dvips -K -o $root_file_name.ps $root_file_name.dvi");
3024
elsif ($action eq "pdf")
3026
system ("texi2dvi --pdf $root_file_name.texinfo");
3027
# It seems that it is better to do it twice.
3028
system ("texi2dvi --pdf $root_file_name.texinfo");
3033
# Delete temporary files.
3034
# It is strange, but sometimes, unlink() doesn't work as expected.
3035
# This is because we use "rm" instead.
3036
unlink ($post_sp_temp_file);
3037
system ("rm -f $post_sp_temp_file");
3038
unlink ($post_sp_filter_temp_file);
3039
system ("rm -f $temp_files_list");
3041
#======================================================================