summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2021-12-07 21:25:01 +0000
committerKarl Berry <karl@freefriends.org>2021-12-07 21:25:01 +0000
commit0dd1c2de466ec3fc7d6ea0574b19012db5660093 (patch)
tree66cb649132c5594736b56be3033db1217d32bb30 /Master/texmf-dist/source/latex
parentf918b7a99685b6526ca16e5f279eb7a9e46b4359 (diff)
bibarts (7dec21)
git-svn-id: svn://tug.org/texlive/trunk@61242 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex')
-rw-r--r--Master/texmf-dist/source/latex/bibarts/bibsort.c2733
1 files changed, 2224 insertions, 509 deletions
diff --git a/Master/texmf-dist/source/latex/bibarts/bibsort.c b/Master/texmf-dist/source/latex/bibarts/bibsort.c
index 9df9a577cb5..0841620e757 100644
--- a/Master/texmf-dist/source/latex/bibarts/bibsort.c
+++ b/Master/texmf-dist/source/latex/bibarts/bibsort.c
@@ -1,5 +1,5 @@
-/* BibArts 2.2 assists you to write LaTeX texts in arts and humanities. */
-/* Copyright (C) 2019 Timo Baumann bibarts[at]gmx.de (2019/03/03) */
+/* BibArts 2.3 assists you to write LaTeX texts in arts and humanities. */
+/* Copyright (C) 2021 Timo Baumann bibarts[at]gmx.de (2021/12/06) */
/* This program is free software; you can redistribute it and/or modify */
/* it under the terms of the GNU General Public License as published by */
@@ -42,11 +42,11 @@
Do NOT change this file when you do not have a qualified text
editor - it contains control chars: '', '', '', '', | Are the
'', '', '', ' ', ' ', '', '', '', '', '', '', | |'s in
- '', '', '', '', '', '', '', '', '', and ''. | a line?
+ '', '', '', '', '', '', '', '', '', '', and ''| a line?
The C-compiled binary of this file is reading LaTeX .aux files.
- It can NOT read the .bar files, which BibArts did use before 2.0.
- BibArts 2.2 ONLY has an EMULATION for 1.3 texts: Keep copies of 1.x?
+ It can NOT read the .bar files, which BibArts 1.x did use.
+ BibArts 2.3 ONLY has an EMULATION for 1.3 texts: Keep copies of 1.x?
*/
@@ -105,12 +105,16 @@
#define DOKILLREGISTS 3
#define DOKILLK 4
+#define NOTEXCHANGENAMES 0
+#define EXCHANGENAMES 1
+
#define OPENB "\'{\'"
#define NUMLEN 16
int ignorespaces = 0;
int hy_as_space = 0;
- int kill = NOKILLAUTHORS;
+int kill = NOKILLAUTHORS;
+int ex_n = NOTEXCHANGENAMES;
int registpoints = 0;
char *lineptr[MAXLINES];
@@ -228,10 +232,26 @@ const char bareststr[] = "{}{}[][]()";
FILE *infile, *outfile;
char *filelist[MAXFILES];
-int upperascii = 0;
+int get_jobs = 0;
+int lastupperascii = 0;
+int thisupperascii = 0;
+#define UTF_EIGHT_MAXLEN 4
+#define UTF_EIGHT_MAXERR 20
+char err_utf_eight[UTF_EIGHT_MAXERR][UTF_EIGHT_MAXLEN+1];
+int utf_err_c = 0;
+char emp_utf_eight[UTF_EIGHT_MAXERR][UTF_EIGHT_MAXLEN+1];
+int utf_emp_c = 0;
+char this_emp_utf_eight[UTF_EIGHT_MAXLEN+1];
+char this_err_utf_eight[UTF_EIGHT_MAXLEN+1];
+
+#define IS_BASE_ENC 0
+#define IS_TONE_ENC 1
+#define IS_UTFE_ENC 2
+int encode = IS_BASE_ENC;
+
int german = 0;
int nogsty = 0;
-int encode = 0;
+
int EinlROEMseiten = 0;
#define BA_FALSE 0
#define BA_TRUE 1
@@ -255,16 +275,34 @@ int bago = 0; /* new in 2.2 */
char *soptarg = NULL;
char *foptarg = NULL;
-void print_two(int line, int left, int right);
-int isLaTeXcmdletter(char a);
-int entkerne_IeC(char buf[], const char *s);
-
char *mydefault = "";
char *nofnt = "(nofnt)"; /* nur "" wuerde Fehler machen */
char *unused = "(unused)";
void myfree(char *p) { if (p != mydefault && p != nofnt && p != unused && p != NULL) free(p); }
+
+ /* Begin prototypes ... */
+
+void print_two(int line, int left, int right);
+int isLaTeXcmdletter(char a);
+int entkerne_IeC(char buf[], const char *s);
+int isinstr(const char *p, const char *s);
+int lcmdcmp(const char *s, const char *p);
+void swap(int i, int j);
+int vergleich(const char *a, const char *b);
+int Vergleich(const char *a, const char *b);
+int llstrlen(const char *s);
+int do_only(char ret[], const char form[], const char in[]);
+int userusesdq(int deepsort, int linec);
+int texcmp(const char *s, const char *p, int dqcats, int dqcatp);
+int hasinnerentry(const char *p, const char *icmdlist[][2], const int num);
+int subdoubleauthors(int found, int addtxt, char a[], int remi, int i, const char *q, const char *p, int qline, int pline, int fe, char xx[]);
+
+ /* ... end prototypes. */
+
+
+
void openfailed(const char *s)
{
fprintf(stderr, "%%%% == Failed to open \"%s\". ==\n", s);
@@ -328,9 +366,9 @@ char *strnmalloc(const char *q, int len)
/*--------------------------------------------------------------------------*/
-char *getmyname(char *p, int max)
+const char *getmyname(const char *p, int max)
{
- char *m = p;
+ const char *m = p;
int pos = strlen(p);
if (pos > max)
@@ -347,6 +385,14 @@ char *getmyname(char *p, int max)
}
+const char *authortable[][2] = {
+ { "\\vauthor\t", "\\vauthor" },
+ { "\\midvauthor\t", "\\midvauthor" },
+ {NULL, NULL}};
+#define NAUTHOR 2
+
+
+
void licenseinfo(void)
{
printf("%%%% I guess that I am a bin-compilation of bibsort.c. My job is to read\n");
@@ -371,9 +417,33 @@ void licenseinfo(void)
}
-void moreinfo(void)
+void moremoreinfo(const char *myname)
+{
+ printf("%%%% CODEPAGES\n");
+ printf("%%%% LaTeX today writes ASCIIs > 127 in your %s-file(s), if you use\n", AUX_SUFFIX);
+ printf("%%%% \\usepackage[utf8]{inputenc}. Then, you may start me using option\n");
+ printf("%%%% -utf8 I expect characters as definded in utf8enc.dfu 2021/01/27 v1.2l,\n");
+ printf("%%%% except those, which execute \\cyr...- or \\CYR...-cmds. Those and\n");
+ printf("%%%% further utf8-characters will be reported to screen as unknown.\n");
+ printf("%%%% -t1 You set \\UseRawInputEncoding, and ASCIIs > 127, which you use in\n");
+ printf("%%%% your .tex-file(s), reach the %s-file(s); I interpret them.\n", AUX_SUFFIX);
+ printf("%%%% **For apparently all other codepages, LaTeX writes \\cmds.**\n");
+ printf("%%%% PRINTING OF CO-AUTHORS\n");
+ printf("%%%% To introduce a book with two authors, type e.g. in a footnote:\n");
+ printf("%%%% \\xvli{John}{Smith} *{\\vauthor{Peter}{Young}} {... [Title] ...}\n");
+ printf("%%%% Use %s{}{} in front of %s{}{} for further authors.\n", authortable[1][1], authortable[0][1]);
+ printf("%%%% Starting %s with default, \\printvli will print the list as:\n", getmyname(myname, 18));
+ printf("%%%% Smith, John / Peter Young: ... [Title] ...\n");
+ printf("%%%% -e Exchanges the args of %s (and of %s). \\printvli:\n", authortable[0][1], authortable[1][1]);
+ printf("%%%% Smith, John / Young, Peter: ... [Title] ...\n");
+ printf("%%%% In BOTH cases, this entry is sorted as: Smith John Young Peter\n");
+ printf("%%%%\n");
+}
+
+
+void moreinfo(const char *myname)
{
- printf("%%%% -t1 You use [T1]{fontenc} and NO [...]{inputenc}: I sort ASCIIs > 127.\n");
+ printf("%%%% -utf8 See %s -\?\?\?\n", getmyname(myname, 40));
printf("%%%% -m Write into files the meta arguments which I use to sort lines.\n");
printf("%%%% -b If %s is in an arg, only text behind will have a sorting weight.\n", BAGOCMD);
printf("%%%% -n1 You reset fnt counters (no fnt-block-indexing over several pages).\n");
@@ -395,14 +465,14 @@ void moreinfo(void)
}
-void maininfo(char *myname)
+void maininfo(const char *myname)
{
printf("%%%% I read a LaTeX %s file (follow \\@input), and I write my output in files\n", AUX_SUFFIX);
printf("%%%% %s Literature %s Published sources %s Geographic index\n", VLI_SUFFIX, VQU_SUFFIX, GRR_SUFFIX);
printf("%%%% %s Short titles %s Unpublished sources %s Person index\n", VKC_SUFFIX, ARQ_SUFFIX, PRR_SUFFIX);
printf("%%%% %s Periodicals %s Abbreviations %s Subject index\n", PER_SUFFIX, ABK_SUFFIX, SRR_SUFFIX);
printf("%%%%\n");
- printf("%%%% %s <LaTeXFile> [-o <OutFile>] [-g1 [OR] -g2] [<OtherOptions>]\n", getmyname(myname, 13));
+ printf("%%%% %s <LaTeXFile> [-o <OutFile>] [-g1 [OR] -g2] [-utf8] [-e] [...]\n", getmyname(myname, 13));
printf("%%%%\n");
printf("%%%% DefaultSort: 0, .., 9, (A a), (B b), .., (s \\ss S), .., (Z z) and\n"); /* udtable */
printf("%%%% (a [\\.\\'\\`\\^\\\"\\=\\~]a \\aa=\\r{a} [\\b\\c\\k\\d\\H\\t\\u\\v]{a} \\ae), b, ..\n");
@@ -414,7 +484,7 @@ void maininfo(char *myname)
printf("%%%% -d \\include{ / is \\ } (dos). -h Sort a hyphen as a space.\n");
printf("%%%% -i=j Sort \'i\' as \'j\'. -p Sort \"P.S.\" before \"Peter\" (point).\n");
printf("%%%% -l Ignore spaces (leer). -c Don\'t set bad page/fnt nums in {}.\n"); /* TEXTSYMBOPEN[0], TEXTSYMBCLOSE[0] */
- printf("%%%% -r Typeout license (read). -\?\? Further options.\n");
+ printf("%%%% -r Typeout license (read). -\?\? -\?\?\? More or more more options.\n");
printf("%%%%\n");
}
@@ -670,6 +740,17 @@ int endnumberline(const char *p, int r)
/* \TextOrMath {\textdagger \textdagger }{\dagger \dagger } */ /* 8 */
/* \TextOrMath {\textdaggerdbl \textdaggerdbl }{\ddagger \ddagger } */ /* 9 */
+/* 2021 vorgefunden (parallel zu BibArts 2.3) */
+/* \TextOrMath {\textasteriskcentered }{*} */ /* 1 */
+/* \TextOrMath {\textdagger }{\dagger } */ /* 2 */
+/* \TextOrMath {\textdaggerdbl }{\ddagger } */ /* 3 */
+/* \TextOrMath {\textsection }{\mathsection } */ /* 4 */
+/* \TextOrMath {\textparagraph }{\mathparagraph } */ /* 5 */
+/* \TextOrMath {\textbardbl }{\|} */ /* 6 */
+/* \TextOrMath {\textasteriskcentered \textasteriskcentered }{**} */ /* 7 */
+/* \TextOrMath {\textdagger \textdagger }{\dagger \dagger } */ /* 8 */
+/* \TextOrMath {\textdaggerdbl \textdaggerdbl }{\ddagger \ddagger } */ /* 9 */
+
int nextsymbolnum(int oldnum, int beginnum)
@@ -727,7 +808,13 @@ int evalsymbol(int pg, const char *p, const int job)
while (num >= 0)
{
- if ((cmd == 0 || cmd == 6) && cmdtyp < 2 && strncmp(p, "\\delimiter", (len=strlen("\\delimiter"))) == 0)
+ if ((cmd == 0 || cmd == 6) && cmdtyp < 2 && strncmp(p, "\\|", (len=strlen("\\|"))) == 0) /* new in 2.3 */
+ {
+ r = GOODNUM;
+ num = nextsymbolnum(num, (cmd = 6));
+ cmdtyp = 1;
+ }
+ else if ((cmd == 0 || cmd == 6) && cmdtyp < 2 && strncmp(p, "\\delimiter", (len=strlen("\\delimiter"))) == 0)
{
r = BADNUM; /* folgen muessen \"26B30D oder \"026B30D */
cmdtyp = 2; /* cmd == 6 cmd == 6 */
@@ -1157,7 +1244,7 @@ int issonder(const char p)
}
- /* Neugewichtung der Ascii-Zeichen 33 und 48 bis 126. */
+ /* Neugewichtung der ASCII-Zeichen 33 und 48 bis 126. */
/* Im Deutschen werden Zeichen vor Buchstaben und */
/* Buchstaben vor Zahlen einsortiert. */
@@ -1417,7 +1504,6 @@ void QQsort(int left, int right, const int deep, const int deepsort)
{
int i, last, j, l;
- void swap (int, int);
if (left >= right) return;
swap(left, (left + right)/2);
last = left;
@@ -1428,14 +1514,31 @@ void QQsort(int left, int right, const int deep, const int deepsort)
while (l < deepsort)
{
if ((j=vergleich(subCptr[l][i], subCptr[l][left])) != 0) break;
+ if (*subAptr[l][i] == '\0' && *subAptr[l][left] != '\0') { j = -1; break; } /* new in 2.3 */
+ if (*subAptr[l][i] != '\0' && *subAptr[l][left] == '\0') { j = 1; break; } /* new in 2.3 */
if ((j=Vergleich(subBptr[l][i], subBptr[l][left])) != 0) break;
+ if (*subBptr[l][i] == '\0' && *subBptr[l][left] == '\0') /* M */ /* new in 2.3 */
+ {
+ if ((j=vergleich(subAptr[l][i], subAptr[l][left])) != 0) break; /* new in 2.3 */
+ }
+ else
if ((j=vergleich(subBptr[l][i], subBptr[l][left])) != 0) break;
++l;
}
- l = 0;
+
if (j == 0)
- while (l < deepsort && (j=vergleich(subAptr[l][i], subAptr[l][left])) == 0) ++l;
+ {
+ l = 0;
+ while (l < deepsort)
+ {
+ if (*subBptr[l][i] != '\0' || *subBptr[l][left] != '\0') /* M */ /* new in 2.3 */
+ {
+ if ((j=vergleich(subAptr[l][i], subAptr[l][left])) != 0) break;
+ }
+ ++l;
+ }
+ }
if (j == 0)
@@ -1459,9 +1562,15 @@ void QQsort(int left, int right, const int deep, const int deepsort)
if (j == 0)
j = secondoverlettergan(subRptr[LINECOL][i]) - secondoverlettergan(subRptr[LINECOL][left]);
- l = deepsort;
if (j == 0)
- while (l < deep && (j=vergleich(subAptr[l][i], subAptr[l][left])) == 0) ++l;
+ {
+ l = deepsort;
+ while (l < deep)
+ {
+ if ((j=vergleich(subAptr[l][i], subAptr[l][left])) != 0) break;
+ ++l;
+ }
+ }
if (j < 0) swap(++last, i);
@@ -1740,7 +1849,7 @@ void print_not_tightly_err(const char *p, const char c)
++p; len -= 2;
}
- while (len > 30) { --len; ++p; ++sw; }
+ while (len > 27) { --len; ++p; ++sw; }
if (sw > 0) printf("...");
printf("%.*s\".\n", len, p);
@@ -2788,328 +2897,376 @@ void getbrackets(int linec, int alllines, const char *ident, int deep, int filen
}
}
- /* ohne Aequivalent in MathMode sind \\b \\c \\k \\d \\H \\t */
+
+ /* without equivalent in MathMode: \\b \\c \\k \\d \\H \\t */
+ /* 2.3: control-chars are doublettes (CTL+G or [Esc] added) */
const char *weighttable[][2] = {
- { "\\.", "" }, /* CTL+A */ /* MARK_POINT */
- { "\\dot\t", "" },
- { "\\\'", "" }, /* CTL+B */
- { "\\acute\t", "" },
- { "\\`", "" }, /* CTL+C */
- { "\\grave\t", "" },
- { "\\^", "" }, /* CTL+D */
- { "\\hat\t", "" },
- { "\\ddot\t", "" }, /* CTL+E umlaut */
- { "\\ij\t", "i" }, /* Niederlaendische */
- { "\\IJ\t", "I" }, /* Sondersortierung */
- { "\\=", "" }, /* CTL+F */
- { "\\bar\t", "" },
- { "\\vec\t", "" }, /* Ctl+G */
- { "\\~", " " }, /* CTL+K */ /* MARK_TILDE */
- { "\\tilde\t", " " },
- { "\\aa\t", " a" }, /* CTL+L */ /* \\r a \\r A */
- { "\\AA\t", " A" },
- { "\\r\t", " " }, /* \\AA \\aa */
- { "\\mathring\t", " " },
- { "\\b\t", "" }, /* CTL+N */
- { "\\c\t", "" }, /* CTL+O */
- { "\\k\t", "" }, /* CTL+P */ /* rechte Tilde */
- { "\\d\t", "" }, /* CTL+Q */
- { "\\H\t", "" }, /* CTL+R */
- { "\\t\t", "" }, /* CTL+S */
- { "\\u\t", "" }, /* CTL+T */
- { "\\breve\t", "" },
- { "\\v\t", "" }, /* CTL+U */
- { "\\check\t", "" },
- { "\\st\t", "" }, /* CTL+V */ /* NEW in 2.2 */
- { "\\textst\t", "" }, /* NEW in 2.2 */
- { "\\underline\t", "" }, /* CTL+W */ /* CHANGED in 2.2 */
- { "\\underbar\t", "" },
- { "\\ul\t", "" },
- { "\\textul\t", "" }, /* NEW in 2.2 */
- { "\\,", " " },
- { "\\space\t", " " },
- { "\\pteskip\t", " " }, /* 1\te 000 NEW in 2.2 */
- { "\\te\t", ". " }, /* != 1000 NEW in 2.2 */
- { "\\i\t", "i" },
- { "\\imath\t", "i" },
- { "\\j\t", "j" },
- { "\\jmath\t", "j" },
- { "\\ae\t", "ae" }, /* \ */ /* zweiteilig */
- { "\\AE\t", "Ae" }, /* | */ /* <=> Oe */
- { "\\BibArts\t", "BibArts"}, /* | */
- { "\\pBibArts\t", "BibArts"}, /* | */
- { "\\textcent\t", "c" }, /* | */
- { "\\pcopyright\t", "c" }, /* | */
- { "\\copyright\t", "c" }, /* | */
- { "\\textcopyright\t", "c" }, /* | */
- { "\\textcelsius\t", "C" }, /* | */
- { "\\dh\t", "d" }, /* | */
- { "\\dj\t", "d" }, /* | */
- { "\\DH\t", "D" }, /* | */
- { "\\DJ\t", "D" }, /* | */ /* =\\DH */
- { "\\texteuro\t", "E" }, /* | */
- { "\\textflorin\t", "f" }, /* | */
- { "\\l\t", "l" }, /* | */
- { "\\ell\t", "l" }, /* | */
- { "\\Im\t", "I" }, /* | */
- { "\\L\t", "L" }, /* | */
- { "\\LaTeX\t", "LaTeX" }, /* | */
- { "\\ng\t", "n" }, /* | */
- { "\\NG\t", "N" }, /*CTL_X/Y*/
- { "\\o\t", "o" }, /* | */
- { "\\O\t", "O" }, /* | */
- { "\\oe\t", "oe" }, /* | */
- { "\\OE\t", "Oe" }, /* | */
- { "\\textsterling\t", "P" }, /* | */
- { "\\ppounds\t", "P" }, /* | */
- { "\\pounds\t", "P" }, /* | */
- { "\\Re\t", "R" }, /* | */
- { "\\textregistered\t", "R" }, /* | */
- { "\\th\t", "th" }, /* | */
- { "\\TH\t", "Th" }, /* | */
- { "\\TeX\t", "TeX" }, /* | */
- { "\\textwon\t", "W" }, /* | */
- { "\\textyen\t", "Y" }, /* / */
- { "\\alpha\t", "a" }, /* 28 */
- { "\\Alpha\t", "A" }, /* bibarts.sty; new in 2.1 */
- { "\\beta\t", "b" },
- { "\\Beta\t", "B" }, /* bibarts.sty; new in 2.1 */
- { "\\chi\t", "ch" },
- { "\\Chi\t", "Ch" }, /* bibarts.sty; new in 2.1 */
- { "\\delta\t", "d" },
- { "\\Delta\t", "D" },
- { "\\epsilon\t", "e" },
- { "\\Epsilon\t", "E" }, /* bibarts.sty; new in 2.1 */
- { "\\varepsilon\t", "e" }, /* 29 */
- { "\\eta\t", "e" }, /* 30 */
- { "\\Eta\t", "E" }, /* bibarts.sty; new in 2.1 */
- { "\\gamma\t", "g" },
- { "\\Gamma\t", "G" },
- { "\\iota\t", "i" },
- { "\\Iota\t", "I" }, /* bibarts.sty; new in 2.1 */
- { "\\kappa\t", "k" },
- { "\\Kappa\t", "K" }, /* bibarts.sty; new in 2.1 */
- { "\\varkappa\t", "k" },
- { "\\lambda\t", "l" },
- { "\\Lambda\t", "L" },
- { "\\mu\t", "m" },
- { "\\Mu\t", "M" }, /* bibarts.sty; new in 2.1 */
- { "\\nu\t", "n" },
- { "\\Nu\t", "N" }, /* bibarts.sty; new in 2.1 */
- { "\\omicron\t", "o" }, /* bibarts.sty */
- { "\\Omicron\t", "O" }, /* bibarts.sty; new in 2.1 */
- { "\\omega\t", "o" },
- { "\\Omega\t", "O" },
- { "\\pi\t", "p" },
- { "\\Pi\t", "P" },
- { "\\varpi\t", "p" },
- { "\\phi\t", "ph" },
- { "\\Phi\t", "Ph" },
- { "\\varphi\t", "ph" },
- { "\\psi\t", "ps" },
- { "\\Psi\t", "Ps" },
- { "\\rho\t", "r" },
- { "\\Rho\t", "R" }, /* bibarts.sty; new in 2.1 */
- { "\\varrho\t", "r" },
- { "\\sigma\t", "s" },
- { "\\Sigma\t", "S" },
- { "\\varsigma\t", "s" },
- { "\\tau\t", "t" },
- { "\\Tau\t", "T" }, /* bibarts.sty; new in 2.1 */
- { "\\theta\t", "th" },
- { "\\Theta\t", "Th" },
- { "\\vartheta\t", "th" },
- { "\\xi\t", "x" },
- { "\\Xi\t", "X" },
- { "\\upsilon\t", "y" },
- { "\\Upsilon\t", "Y" },
- { "\\zeta\t", "z" },
- { "\\Zeta\t", "Z" }, /* bibarts.sty; new in 2.1 */
+ { "\\.", "" }, /* CTL+A + Ctl+G */ /* MARK_POINT */
+ { "\\dot\t", "" },
+ { "\\\'", "" }, /* CTL+B */
+ { "\\@tabacckludge\t\'", "" }, /* new in 2.3 */
+ { "\\a\t\'", "" }, /* new in 2.3 */
+ { "\\acute\t", "" },
+ { "\\`", "" }, /* CTL+C */
+ { "\\@tabacckludge\t`", "" }, /* new in 2.3 */
+ { "\\a\t`", "" }, /* new in 2.3 */
+ { "\\grave\t", "" },
+ { "\\^", "" }, /* CTL+D */
+ { "\\hat\t", "" },
+ { "\\ddot\t", "" }, /* CTL+E math-diaresis != umlaut */
+ { "\\=", "" }, /* CTL+F */
+ { "\\@tabacckludge\t=", "" }, /* new in 2.3 */
+ { "\\a\t=", "" }, /* new in 2.3 */
+ { "\\bar\t", "" },
+ { "\\vec\t", "" }, /* CTL+F + [ESC] changed in 2.3 */
+ { "\\~", " " }, /* CTL+K */ /* MARK_TILDE */
+ { "\\tilde\t", " " },
+ { "\\aa\t", " a" }, /* CTL+L */ /* \\r a \\r A */
+ { "\\AA\t", " A" },
+ { "\\r\t", " " }, /* \\AA \\aa */
+ { "\\mathring\t", " " },
+ { "\\b\t", "" }, /* CTL+N */
+ { "\\c\t", "" }, /* CTL+O + CTL+G */
+ { "\\textcommabelow\t", "" }, /* CTL+O + [ESC] new in 2.3 */
+ { "\\k\t", "" }, /* CTL+P */ /* rechte Tilde */
+ { "\\d\t", "" }, /* CTL+Q */
+ { "\\H\t", "" }, /* CTL+R */
+ { "\\t\t", "" }, /* CTL+S */
+ { "\\u\t", "" }, /* CTL+T */
+ { "\\breve\t", "" },
+ { "\\v\t", "" }, /* changed in 2.3 */
+ { "\\check\t", "" }, /* changed in 2.3 */
+ { "\\textblank\t", "b" }, /* CTL+U \ new in 2.3; */
+ { "\\textbaht\t", "B" }, /* | new in 2.3 */
+ { "\\textcent\t", "c" }, /* S | changed in 2.3 */
+ { "\\textcentoldstyle\t", "c" }, /* T | changed in 2.3 */
+ { "\\textcolonmonetary\t", "C" }, /* R | new in 2.3 */
+ { "\\dj\t", "d" }, /* 0 | changed in 2.3 */
+ { "\\dh\t", "d" }, /* K | changed in 2.3 (! \textsc{\dh} is like \DH) */
+ { "\\DJ\t", "D" }, /* E | changed in 2.3 */
+ { "\\DH\t", "D" }, /* =\\DJ | changed in 2.3 */
+ { "\\hbar\t", "h" }, /* h-quer | new in 2.3 */
+ { "\\l\t", "l" }, /* | changed in 2.3 */
+ { "\\L\t", "L" }, /* S | changed in 2.3 */
+ { "\\textnaira\t", "N" }, /* T | new in 2.3 */
+ { "\\o\t", "o" }, /* R | changed in 2.3 */
+ { "\\O\t", "O" }, /* O | changed in 2.3 */
+ { "\\textrecipe\t", "R" }, /* K | new in 2.3 */
+ { "\\textpeso\t", "P" }, /* E | new in 2.3 */
+ { "\\textwon\t", "W" }, /* | changed in 2.3 */
+ { "\\textyen\t", "Y" }, /* / changed in 2.3 */
+ { "\\st\t", "" }, /* CTL+V */ /* NEW in 2.2 */
+ { "\\textst\t", "" }, /* NEW in 2.2 */
+ { "\\underbar\t", "" }, /* CTL+W + CTL+G */
+ { "\\underline\t", "" }, /* CTL+W + [ESC] changed in 2.3 */
+ { "\\ul\t", "" }, /* changed in 2.3 */
+ { "\\textul\t", "" }, /* changed in 2.3; NEW in 2.2 */
+ { "\\,", " " },
+ { "\\space\t", " " }, /* if you say \protect\space */
+ { "\\nobreakspace\t", " " }, /* new in 2.3 */ /* MARK_TILDE */
+ { "\\textvisiblespace\t", " " }, /* new in 2.3 */
+ { "\\teskip\t", " " }, /* new in 2.3 */
+ { "\\pteskip\t", " " }, /* 1\te 000 NEW in 2.2 */
+ { "\\te\t", ". " }, /* != 1000 NEW in 2.2 */
+ { "\\textcelsius\t", "C" }, /* changed in 2.3 */
+ { "\\textflorin\t", "f" }, /* changed in 2.3 */
+ { "\\i\t", "i" },
+ { "\\imath\t", "i" },
+ { "\\j\t", "j" },
+ { "\\jmath\t", "j" },
+ { "\\ae\t", "ae" }, /* \ changed in 2.3 */
+ { "\\AE\t", "Ae" }, /* | <=> \\Oe changed in 2.3 */
+ { "\\BibArts\t", "BibArts" }, /* | changed in 2.3 */
+ { "\\pBibArts\t", "BibArts" }, /* | changed in 2.3 */
+ { "\\copyright\t", "C" }, /* | changed in 2.3 */
+ { "\\textcopyright\t", "C" }, /* | changed in 2.3 */
+ { "\\pcopyright\t", "C" }, /* CTL_X changed in 2.3 */
+ { "\\textdong\t", "d" }, /* | new in 2.3 (not really \\b{\\dj}) */
+ { "\\textestimated\t", "e" }, /* | new in 2.3 */
+ { "\\ell\t", "l" }, /* | N changed in 2.3 */
+ { "\\ij\t", "i" }, /* | E changed in 2.3 */
+ { "\\IJ\t", "I" }, /* | A changed in 2.3 */
+ { "\\Im\t", "I" }, /* | R <=> \\Re */
+ { "\\LaTeX\t", "LaTeX" }, /* | changed in 2.3 */
+ { "\\textnumero\t", "N" }, /* | L new in 2.3 */
+ { "\\oe\t", "oe" }, /* | A changed in 2.3 */
+ { "\\OE\t", "Oe" }, /* | T changed in 2.3 */
+ { "\\textcircledP\t", "P" }, /* | I new in 2.3 */
+ { "\\textregistered\t", "R" }, /* | N changed in 2.3 */
+ { "\\Re\t", "R" }, /* | <=> \\Im */
+ { "\\TeX\t", "TeX" }, /* / changed in 2.3 */
+ { "\\texteuro\t", "E" }, /* \ */
+ { "\\textlira\t", "L" }, /* | new in 2.3 */
+ { "\\ng\t", "n" }, /* | changed in 2.3 */
+ { "\\NG\t", "N" }, /* CTL_Y changed in 2.3 */
+ { "\\textsterling\t", "P" }, /* | changed in 2.3 */
+ { "\\ppounds\t", "P" }, /* | F changed in 2.3 */
+ { "\\pounds\t", "P" }, /* | A changed in 2.3 */
+ { "\\th\t", "th" }, /* | R */
+ { "\\TH\t", "Th" }, /* / */
+ { "\\alpha\t", "a" }, /* 28 */
+ { "\\Alpha\t", "A" }, /* bibarts.sty; new in 2.1 */
+ { "\\beta\t", "b" },
+ { "\\Beta\t", "B" }, /* bibarts.sty; new in 2.1 */
+ { "\\chi\t", "ch" },
+ { "\\Chi\t", "Ch" }, /* bibarts.sty; new in 2.1 */
+ { "\\delta\t", "d" },
+ { "\\Delta\t", "D" },
+ { "\\epsilon\t", "e" },
+ { "\\Epsilon\t", "E" }, /* bibarts.sty; new in 2.1 */
+ { "\\varepsilon\t", "e" }, /* changed in 2.3 */
+ { "\\eta\t", "e" }, /* 29 */
+ { "\\Eta\t", "E" }, /* bibarts.sty; new in 2.1 */
+ { "\\gamma\t", "g" },
+ { "\\Gamma\t", "G" },
+ { "\\iota\t", "i" },
+ { "\\Iota\t", "I" }, /* bibarts.sty; new in 2.1 */
+ { "\\kappa\t", "k" },
+ { "\\Kappa\t", "K" }, /* bibarts.sty; new in 2.1 */
+ { "\\varkappa\t", "k" }, /* changed in 2.3 */
+ { "\\lambda\t", "l" },
+ { "\\Lambda\t", "L" },
+ { "\\mu\t", "m" },
+ { "\\textmu\t", "m" }, /* new in 2.3 */
+ { "\\Mu\t", "M" }, /* bibarts.sty; new in 2.1 */
+ { "\\nu\t", "n" },
+ { "\\Nu\t", "N" }, /* bibarts.sty; new in 2.1 */
+ { "\\omicron\t", "o" }, /* bibarts.sty */
+ { "\\Omicron\t", "O" }, /* bibarts.sty; new in 2.1 */
+ { "\\omega\t", "o" }, /* changed in 2.3 */
+ { "\\Omega\t", "O" }, /* changed in 2.3 */
+ { "\\textohm\t", "O" }, /* new in 2.3 */
+ { "\\textmho\t", "O" }, /* new in 2.3 */
+ { "\\pi\t", "p" },
+ { "\\Pi\t", "P" },
+ { "\\varpi\t", "p" }, /* changed in 2.3 */
+ { "\\phi\t", "ph" }, /* changed in 2.3 */
+ { "\\Phi\t", "Ph" }, /* changed in 2.3 */
+ { "\\varphi\t", "ph" }, /* changed in 2.3 */
+ { "\\psi\t", "ps" }, /* 30 */ /* changed in 2.3 */
+ { "\\Psi\t", "Ps" }, /* changed in 2.3 */
+ { "\\rho\t", "r" },
+ { "\\Rho\t", "R" }, /* bibarts.sty; new in 2.1 */
+ { "\\varrho\t", "r" }, /* changed in 2.3 */
+ { "\\sigma\t", "s" },
+ { "\\Sigma\t", "S" },
+ { "\\varsigma\t", "s" }, /* changed in 2.3 */
+ { "\\tau\t", "t" },
+ { "\\Tau\t", "T" }, /* bibarts.sty; new in 2.1 */
+ { "\\theta\t", "th" }, /* changed in 2.3 */
+ { "\\Theta\t", "Th" }, /* changed in 2.3 */
+ { "\\vartheta\t", "th" }, /* changed in 2.3 */
+ { "\\xi\t", "x" },
+ { "\\Xi\t", "X" },
+ { "\\upsilon\t", "y" },
+ { "\\Upsilon\t", "Y" },
+ { "\\zeta\t", "z" },
+ { "\\Zeta\t", "Z" }, /* bibarts.sty; new in 2.1 */
+ { "\\textendash\t", "--" }, /* new in 2.3 */
+ { "\\textemdash\t", "---" }, /* new in 2.3 */
+ { "\\textellipsis\t", "..." }, /* new in 2.3 "-p" */
+ { "\\dots\t", "..." }, /* new in 2.3 "-p" */
+ { "\\textonesuperior\t", "{1} " }, /* new in 2.3 */
+ { "\\texttwosuperior\t", "{2} " }, /* new in 2.3 */
+ { "\\textthreesuperior\t", "{3} " }, /* new in 2.3 */
+ { "\\textonequarter\t", "{1} {4} " }, /* new in 2.3 */
+ { "\\textonehalf\t", "{1} {2} " }, /* new in 2.3 */
+ { "\\textthreequarters\t", "{3} {4} " }, /* new in 2.3 */
+ { "\\textoneoldstyle\t", "1" }, /* new in 2.3 */
+ { "\\texttwooldstyle\t", "2" }, /* new in 2.3 */
+ { "\\textthreeoldstyle\t", "3" }, /* new in 2.3 */
+ { "\\textfouroldstyle\t", "4" }, /* new in 2.3 */
+ { "\\textfiveoldstyle\t", "5" }, /* new in 2.3 */
+ { "\\textsixoldstyle\t", "6" }, /* new in 2.3 */
+ { "\\textsevenoldstyle\t", "7" }, /* new in 2.3 */
+ { "\\texteightoldstyle\t", "8" }, /* new in 2.3 */
+ { "\\textnineoldstyle\t", "9" }, /* new in 2.3 */
+ { "\\textzerooldstyle\t", "0" }, /* new in 2.3 */
{ NULL, NULL }};
-#define NLATEX 135
+#define NLATEX 181
const char *udtable[][2] = {
- { "\\\"a", "a" }, /* \ \"a */
- { "\\\"o", "o" }, /* | \"o */
- { "\\\"u", "u" }, /* CTL+E \"u */
- { "\\\"A", "A" }, /* | \"A */
- { "\\\"O", "O" }, /* | \"O */
- { "\\\"U", "U" }, /* | \"U */
- { "\\ss\t", "s" }, /* \ss */
- { "\\SS\t", "SS" }, /* \SS */
- { "\\sz\t", "s" }, /* \sz */ /* new in 2.1 */
- { "\\SZ\t", "S" }, /* \SZ */ /* new in 2.1 */
+ { "\\\"a", "a" }, /* \ \"a */
+ { "\\\"o", "o" }, /* | \"o */
+ { "\\\"u", "u" }, /* CTL+E \"u */
+ { "\\\"A", "A" }, /* | \"A */
+ { "\\\"O", "O" }, /* | \"O */
+ { "\\\"U", "U" }, /* | \"U */
+ { "\\ss\t", "s" }, /* \ss */
+ { "\\SS\t", "SS" }, /* \SS */
+ { "\\sz\t", "s" }, /* \sz */ /* new in 2.1 */
+ { "\\SZ\t", "S" }, /* \SZ */ /* new in 2.1 */
{ "\\flqq\t", "" }, /* \flqq */ /* new in 2.2 */
{ "\\frqq\t", "" }, /* \frqq */ /* new in 2.2 */
{ "\\glqq\t", "" }, /* \glqq */ /* new in 2.2 */
{ "\\grqq\t", "" }, /* \grqq */ /* new in 2.2 */
{ "\\/", "" }, /* \/ */ /* new in 2.2 */
{ "\\-", "" }, /* \- */ /* new in 2.2 */
- { "\\oldhyc\t", "c" }, /* [c-] */ /* \ */
- { "\\OLDHYC\t", "C" }, /* [C-] */ /* | */
- { "\\oldhyl\t", "l" }, /* [l-] */ /* | */
- { "\\OLDHYL\t", "L" }, /* [L-] */ /* | */
- { "\\oldhym\t", "m" }, /* [m-] */ /* | */
- { "\\OLDHYM\t", "M" }, /* [M-] */ /* | */
- { "\\oldhyn\t", "n" }, /* [n-] */ /* | new */
- { "\\OLDHYN\t", "N" }, /* [N-] */ /* | in */
- { "\\oldhyp\t", "p" }, /* [p-] */ /* | 2.2 */
- { "\\OLDHYP\t", "P" }, /* [P-] */ /* | */
- { "\\oldhyr\t", "r" }, /* [r-] */ /* | */
- { "\\OLDHYR\t", "R" }, /* [R-] */ /* | */
- { "\\oldhyt\t", "t" }, /* [t-] */ /* | */
- { "\\OLDHYT\t", "T" }, /* [T-] */ /* | */
- { "\\oldhyf\t", "f" }, /* [f-] */ /* | */
- { "\\OLDHYF\t", "F" }, /* [F-] */ /* / */
- { "\\hy\t", "-" }, /* MINUS \hy */ /* new in 2.2 */
- { "\\fhy\t", "-" }, /* MINUS \fhy*/ /* new in 2.2 */
- { "\\\"", "" }, /* / \" */
- { "\\3", "s" }, /* \3 */
- { "\\ck\t", "ck" }, /* [c-k] */ /* new in 2.2 */
- { "\\CK\t", "CK" }, /* [C-K] */ /* new in 2.2 */
- { "\\oldhyss\t", "s" }, /* [s-s] */ /* \ */
- { "\\OLDHYSS\t", "SS" }, /* [S-S] */ /* | new */
- { "\\newhyss\t", "s" }, /* [-ss] */ /* | in */
- { "\\NEWHYSS\t", "SS" }, /* [-SS] */ /* | 2.2 */
- { "\\hyss\t", "s" }, /* [s-s/-ss] */ /* | */
- { "\\HYSS\t", "SS" }, /* [S-S/-SS] */ /* / */
+ { "\\oldhyc\t", "c" }, /* [c-] */ /* \ */
+ { "\\OLDHYC\t", "C" }, /* [C-] */ /* | */
+ { "\\oldhyl\t", "l" }, /* [l-] */ /* | */
+ { "\\OLDHYL\t", "L" }, /* [L-] */ /* | */
+ { "\\oldhym\t", "m" }, /* [m-] */ /* | */
+ { "\\OLDHYM\t", "M" }, /* [M-] */ /* | */
+ { "\\oldhyn\t", "n" }, /* [n-] */ /* | new */
+ { "\\OLDHYN\t", "N" }, /* [N-] */ /* | in */
+ { "\\oldhyp\t", "p" }, /* [p-] */ /* | 2.2 */
+ { "\\OLDHYP\t", "P" }, /* [P-] */ /* | */
+ { "\\oldhyr\t", "r" }, /* [r-] */ /* | */
+ { "\\OLDHYR\t", "R" }, /* [R-] */ /* | */
+ { "\\oldhyt\t", "t" }, /* [t-] */ /* | */
+ { "\\OLDHYT\t", "T" }, /* [T-] */ /* | */
+ { "\\oldhyf\t", "f" }, /* [f-] */ /* | */
+ { "\\OLDHYF\t", "F" }, /* [F-] */ /* / */
+ { "\\hy\t", "-" }, /* MINUS \hy */ /* new in 2.2 */
+ { "\\fhy\t", "-" }, /* MINUS \fhy*/ /* new in 2.2 */
+ { "\\\"", "" }, /* / \" */
+ { "\\3", "s" }, /* \3 */
+ { "\\ck\t", "ck" }, /* [c-k] */ /* new in 2.2 */
+ { "\\CK\t", "CK" }, /* [C-K] */ /* new in 2.2 */
+ { "\\oldhyss\t", "s" }, /* [s-s] */ /* \ */
+ { "\\OLDHYSS\t", "SS" }, /* [S-S] */ /* | new */
+ { "\\newhyss\t", "s" }, /* [-ss] */ /* | in */
+ { "\\NEWHYSS\t", "SS" }, /* [-SS] */ /* | 2.2 */
+ { "\\hyss\t", "s" }, /* [s-s/-ss] */ /* | */
+ { "\\HYSS\t", "SS" }, /* [S-S/-SS] */ /* / */
{ NULL, NULL }};
#define NUMTEX 44
const char *gstylist[][2] = {
- { "\"a", NULL }, /* \ "a */
- { "\"o", NULL }, /* | "o */
- { "\"u", NULL }, /* CTL+E "u */
- { "\"A", NULL }, /* | "A */
- { "\"O", NULL }, /* | "O */
- { "\"U", NULL }, /* | "U */
- { "\"s", NULL }, /* "s */
- { "\"S", NULL }, /* "S */
- { "\"z", NULL }, /* "z */ /* new in 2.1 */
- { "\"Z", NULL }, /* "Z */ /* new in 2.1 */
- { "\"<", NULL }, /* "` */ /* new in 2.2 */
- { "\">", NULL }, /* "' */ /* new in 2.2 */
- { "\"`", NULL }, /* "` */ /* new in 2.2 */
- { "\"\'", NULL }, /* "' */ /* new in 2.2 */
- { "\"|", NULL }, /* "| */ /* new in 2.2 */
- { "\"-", NULL }, /* "- */ /* new in 2.2 */
- { "\"c", NULL }, /* [c-] */ /* \ */
- { "\"C", NULL }, /* [C-] */ /* | */
- { "\"l", NULL }, /* [l-] */ /* | */
- { "\"L", NULL }, /* [L-] */ /* | */
- { "\"m", NULL }, /* [m-] */ /* | */
- { "\"M", NULL }, /* [M-] */ /* | */
- { "\"n", NULL }, /* [n-] */ /* | new */
- { "\"N", NULL }, /* [N-] */ /* | in */
- { "\"p", NULL }, /* [p-] */ /* | 2.2 */
- { "\"P", NULL }, /* [P-] */ /* | */
- { "\"r", NULL }, /* [r-] */ /* | */
- { "\"R", NULL }, /* [R-] */ /* | */
- { "\"t", NULL }, /* [t-] */ /* | */
- { "\"T", NULL }, /* [T-] */ /* | */
- { "\"f", NULL }, /* [f-] */ /* | */
- { "\"F", NULL }, /* [F-] */ /* | */
- { "\"=", NULL }, /* MINUS "= */ /* new in 2.2 */
- { "\"~", NULL }, /* MINUS "~ */ /* new in 2.2 */
- { "\"", NULL }, /* / " */
+ { "\"a", NULL }, /* \ "a */
+ { "\"o", NULL }, /* | "o */
+ { "\"u", NULL }, /* CTL+E "u */
+ { "\"A", NULL }, /* | "A */
+ { "\"O", NULL }, /* | "O */
+ { "\"U", NULL }, /* | "U */
+ { "\"s", NULL }, /* "s */
+ { "\"S", NULL }, /* "S */
+ { "\"z", NULL }, /* "z */ /* new in 2.1 */
+ { "\"Z", NULL }, /* "Z */ /* new in 2.1 */
+ { "\"<", NULL }, /* "` */ /* new in 2.2 */
+ { "\">", NULL }, /* "' */ /* new in 2.2 */
+ { "\"`", NULL }, /* "` */ /* new in 2.2 */
+ { "\"\'", NULL }, /* "' */ /* new in 2.2 */
+ { "\"|", NULL }, /* "| */ /* new in 2.2 */
+ { "\"-", NULL }, /* "- */ /* new in 2.2 */
+ { "\"c", NULL }, /* [c-] */ /* \ */
+ { "\"C", NULL }, /* [C-] */ /* | */
+ { "\"l", NULL }, /* [l-] */ /* | */
+ { "\"L", NULL }, /* [L-] */ /* | */
+ { "\"m", NULL }, /* [m-] */ /* | */
+ { "\"M", NULL }, /* [M-] */ /* | */
+ { "\"n", NULL }, /* [n-] */ /* | new */
+ { "\"N", NULL }, /* [N-] */ /* | in */
+ { "\"p", NULL }, /* [p-] */ /* | 2.2 */
+ { "\"P", NULL }, /* [P-] */ /* | */
+ { "\"r", NULL }, /* [r-] */ /* | */
+ { "\"R", NULL }, /* [R-] */ /* | */
+ { "\"t", NULL }, /* [t-] */ /* | */
+ { "\"T", NULL }, /* [T-] */ /* | */
+ { "\"f", NULL }, /* [f-] */ /* | */
+ { "\"F", NULL }, /* [F-] */ /* | */
+ { "\"=", NULL }, /* MINUS "= */ /* new in 2.2 */
+ { "\"~", NULL }, /* MINUS "~ */ /* new in 2.2 */
+ { "\"", NULL }, /* / " */
{ NULL, NULL }};
#define NUMGER 35
const char *gweight[][2] = {
- { NULL, "ae" }, /* \ \"a "a */
- { NULL, "oe" }, /* | \"o "o */
- { NULL, "ue" }, /* CTL+E \"u "u */
- { NULL, "Ae" }, /* | \"A "A */
- { NULL, "Oe" }, /* | \"O "O */
- { NULL, "Ue" }, /* | \"U "U */
- { NULL, "ss" }, /* \ss "s */
+ { NULL, "ae" }, /* \ \"a "a */
+ { NULL, "oe" }, /* | \"o "o */
+ { NULL, "ue" }, /* CTL+E \"u "u */
+ { NULL, "Ae" }, /* | \"A "A */
+ { NULL, "Oe" }, /* | \"O "O */
+ { NULL, "Ue" }, /* | \"U "U */
+ { NULL, "ss" }, /* \ss "s */
{ NULL, "SS" }, /* \SS "S */
- { NULL, "ss" }, /* \sz "z */ /* new in 2.1 */
- { NULL, "SS" }, /* \SZ "Z */ /* new in 2.1 */
- { NULL, "" }, /* \flqq "< */ /* new in 2.2 */
- { NULL, "" }, /* \frqq "> */ /* new in 2.2 */
- { NULL, "" }, /* \glqq "` */ /* new in 2.2 */
- { NULL, "" }, /* \grqq "' */ /* new in 2.2 */
- { NULL, "" }, /* \/ "| */ /* new in 2.2 */
- { NULL, "" }, /* \- "- */ /* new in 2.2 */
- { NULL, "c" }, /* [c-] "c */ /* \ */
- { NULL, "C" }, /* [C-] "C */ /* | */
- { NULL, "l" }, /* [l-] "l */ /* | */
- { NULL, "L" }, /* [L-] "L */ /* | */
- { NULL, "m" }, /* [m-] "m */ /* | */
- { NULL, "M" }, /* [M-] "M */ /* | */
- { NULL, "n" }, /* [n-] "n */ /* | new */
- { NULL, "N" }, /* [N-] "N */ /* | in */
- { NULL, "p" }, /* [p-] "p */ /* | 2.2 */
- { NULL, "P" }, /* [P-] "P */ /* | */
- { NULL, "r" }, /* [r-] "r */ /* | */
- { NULL, "R" }, /* [R-] "R */ /* | */
- { NULL, "t" }, /* [t-] "t */ /* | */
- { NULL, "T" }, /* [T-] "T */ /* | */
- { NULL, "f" }, /* [f-] "f */ /* | */
- { NULL, "F" }, /* [F-] "F */ /* / */
- { NULL, "-" }, /* MINUS \hy "= */ /* new in 2.2 */
- { NULL, "-" }, /* MINUS \fhy "~ */ /* new in 2.2 */
- { NULL, "" }, /* / \" " */
- { NULL, "ss" }, /* \3 [] */
+ { NULL, "ss" }, /* \sz "z */ /* new in 2.1 */
+ { NULL, "SS" }, /* \SZ "Z */ /* new in 2.1 */
+ { NULL, "" }, /* \flqq "< */ /* new in 2.2 */
+ { NULL, "" }, /* \frqq "> */ /* new in 2.2 */
+ { NULL, "" }, /* \glqq "` */ /* new in 2.2 */
+ { NULL, "" }, /* \grqq "' */ /* new in 2.2 */
+ { NULL, "" }, /* \/ "| */ /* new in 2.2 */
+ { NULL, "" }, /* \- "- */ /* new in 2.2 */
+ { NULL, "c" }, /* [c-] "c */ /* \ */
+ { NULL, "C" }, /* [C-] "C */ /* | */
+ { NULL, "l" }, /* [l-] "l */ /* | */
+ { NULL, "L" }, /* [L-] "L */ /* | */
+ { NULL, "m" }, /* [m-] "m */ /* | */
+ { NULL, "M" }, /* [M-] "M */ /* | */
+ { NULL, "n" }, /* [n-] "n */ /* | new */
+ { NULL, "N" }, /* [N-] "N */ /* | in */
+ { NULL, "p" }, /* [p-] "p */ /* | 2.2 */
+ { NULL, "P" }, /* [P-] "P */ /* | */
+ { NULL, "r" }, /* [r-] "r */ /* | */
+ { NULL, "R" }, /* [R-] "R */ /* | */
+ { NULL, "t" }, /* [t-] "t */ /* | */
+ { NULL, "T" }, /* [T-] "T */ /* | */
+ { NULL, "f" }, /* [f-] "f */ /* | */
+ { NULL, "F" }, /* [F-] "F */ /* / */
+ { NULL, "-" }, /* MINUS \hy "= */ /* new in 2.2 */
+ { NULL, "-" }, /* MINUS \fhy "~ */ /* new in 2.2 */
+ { NULL, "" }, /* / \" " */
+ { NULL, "ss" }, /* \3 [] */
{ NULL, "ck" }, /* \ck */ /* new in 2.2 */
{ NULL, "CK" }, /* \CK */ /* new in 2.2 */
- { NULL, "ss" }, /* [s-s] */ /* \ */
+ { NULL, "ss" }, /* [s-s] */ /* \ */
{ NULL, "SS" }, /* [S-S] */ /* | new */
- { NULL, "ss" }, /* [-ss] */ /* | in */
+ { NULL, "ss" }, /* [-ss] */ /* | in */
{ NULL, "SS" }, /* [-SS] */ /* | 2.2 */
- { NULL, "ss" }, /* [s-s/-ss] */ /* | */
+ { NULL, "ss" }, /* [s-s/-ss] */ /* | */
{ NULL, "SS" }, /* [S-S/-SS] */ /* / */
{ NULL, NULL }};
const char *mweight[][2] = {
- { NULL, "a" }, /* \ \"a "a */
- { NULL, "o" }, /* | \"o "o */
- { NULL, "u" }, /* CTL+E \"u "u */
- { NULL, "A" }, /* | \"A "A */
- { NULL, "O" }, /* | \"O "O */
- { NULL, "U" }, /* | \"U "U */
- { NULL, "ss" }, /* \ss "s */
+ { NULL, "a" }, /* \ \"a "a */
+ { NULL, "o" }, /* | \"o "o */
+ { NULL, "u" }, /* CTL+E \"u "u */
+ { NULL, "A" }, /* | \"A "A */
+ { NULL, "O" }, /* | \"O "O */
+ { NULL, "U" }, /* | \"U "U */
+ { NULL, "ss" }, /* \ss "s */
{ NULL, "SS" }, /* \SS "S */
- { NULL, "ss" }, /* \sz "z */ /* new in 2.1 */
- { NULL, "SS" }, /* \SZ "Z */ /* new in 2.1 */
- { NULL, "" }, /* \flqq "< */ /* new in 2.2 */
- { NULL, "" }, /* \frqq "> */ /* new in 2.2 */
- { NULL, "" }, /* \glqq "` */ /* new in 2.2 */
- { NULL, "" }, /* \grqq "' */ /* new in 2.2 */
- { NULL, "" }, /* \/ "| */ /* new in 2.2 */
- { NULL, "" }, /* \- "- */ /* new in 2.2 */
- { NULL, "c" }, /* [c-] "c */ /* \ */
- { NULL, "C" }, /* [C-] "C */ /* | */
- { NULL, "l" }, /* [l-] "l */ /* | */
- { NULL, "L" }, /* [L-] "L */ /* | */
- { NULL, "m" }, /* [m-] "m */ /* | */
- { NULL, "M" }, /* [M-] "M */ /* | */
- { NULL, "n" }, /* [n-] "n */ /* | new */
- { NULL, "N" }, /* [N-] "N */ /* | in */
- { NULL, "p" }, /* [p-] "p */ /* | 2.2 */
- { NULL, "P" }, /* [P-] "P */ /* | */
- { NULL, "r" }, /* [r-] "r */ /* | */
- { NULL, "R" }, /* [R-] "R */ /* | */
- { NULL, "t" }, /* [t-] "t */ /* | */
- { NULL, "T" }, /* [T-] "T */ /* | */
- { NULL, "f" }, /* [f-] "f */ /* | */
- { NULL, "F" }, /* [F-] "F */ /* / */
- { NULL, "-" }, /* \hy "= */ /* new in 2.2 */
- { NULL, "-" }, /* \fhy "~ */ /* new in 2.2 */
- { NULL, "" }, /* / \" " */
- { NULL, "ss" }, /* \3 [] */
+ { NULL, "ss" }, /* \sz "z */ /* new in 2.1 */
+ { NULL, "SS" }, /* \SZ "Z */ /* new in 2.1 */
+ { NULL, "" }, /* \flqq "< */ /* new in 2.2 */
+ { NULL, "" }, /* \frqq "> */ /* new in 2.2 */
+ { NULL, "" }, /* \glqq "` */ /* new in 2.2 */
+ { NULL, "" }, /* \grqq "' */ /* new in 2.2 */
+ { NULL, "" }, /* \/ "| */ /* new in 2.2 */
+ { NULL, "" }, /* \- "- */ /* new in 2.2 */
+ { NULL, "c" }, /* [c-] "c */ /* \ */
+ { NULL, "C" }, /* [C-] "C */ /* | */
+ { NULL, "l" }, /* [l-] "l */ /* | */
+ { NULL, "L" }, /* [L-] "L */ /* | */
+ { NULL, "m" }, /* [m-] "m */ /* | */
+ { NULL, "M" }, /* [M-] "M */ /* | */
+ { NULL, "n" }, /* [n-] "n */ /* | new */
+ { NULL, "N" }, /* [N-] "N */ /* | in */
+ { NULL, "p" }, /* [p-] "p */ /* | 2.2 */
+ { NULL, "P" }, /* [P-] "P */ /* | */
+ { NULL, "r" }, /* [r-] "r */ /* | */
+ { NULL, "R" }, /* [R-] "R */ /* | */
+ { NULL, "t" }, /* [t-] "t */ /* | */
+ { NULL, "T" }, /* [T-] "T */ /* | */
+ { NULL, "f" }, /* [f-] "f */ /* | */
+ { NULL, "F" }, /* [F-] "F */ /* / */
+ { NULL, "-" }, /* \hy "= */ /* new in 2.2 */
+ { NULL, "-" }, /* \fhy "~ */ /* new in 2.2 */
+ { NULL, "" }, /* / \" " */
+ { NULL, "ss" }, /* \3 [] */
{ NULL, "ck" }, /* \ck */ /* new in 2.2 */
{ NULL, "CK" }, /* \CK */ /* new in 2.2 */
- { NULL, "ss" }, /* [s-s] */ /* \ */
+ { NULL, "ss" }, /* [s-s] */ /* \ */
{ NULL, "SS" }, /* [S-S] */ /* | new */
- { NULL, "ss" }, /* [-ss] */ /* | in */
+ { NULL, "ss" }, /* [-ss] */ /* | in */
{ NULL, "SS" }, /* [-SS] */ /* | 2.2 */
- { NULL, "ss" }, /* [s-s/-ss] */ /* | */
+ { NULL, "ss" }, /* [s-s/-ss] */ /* | */
{ NULL, "SS" }, /* [S-S/-SS] */ /* / */
{ NULL, NULL }};
@@ -3125,10 +3282,26 @@ int texlistnum(const char *p, int n, const char *list[][2])
entry = list[i][0];
line = p;
while (*line == *entry && *entry != '\0' && *entry != '\t')
- { ++line; ++entry;
+ {
+ ++line; ++entry;
}
- if (*entry == '\0' || (*entry == '\t' && isLaTeXcmdletter(*line) == 0)) break;
- ++i;
+
+ if (*entry == '\0' || (*entry == '\t' && *(entry+1) == '\0' && isLaTeXcmdletter(*line) == 0))
+ {
+ break;
+ }
+ else /* new in 2.3 */
+ if (*entry == '\t' && *(entry+1) != '\0')
+ {
+ if (*(entry+2) == '\0')
+ {
+ while (*line == ' ') ++line;
+ if (*(entry+1) == *line) break;
+ }
+ else intern_err(34);
+ }
+
+ ++i;
}
if (i == n) return -1;
@@ -3180,6 +3353,14 @@ int nichtvorziehen(char a)
}
+int isinitial(char a)
+{
+ if (a == '' || a == '')
+ return 1;
+ return 0;
+}
+
+
void nzvorziehen(char in[], char *p)
{
int pos = 0, l;
@@ -3189,15 +3370,29 @@ void nzvorziehen(char in[], char *p)
{
if (nichtvorziehen(*p) == 1)
{
- l = pos;
- while (nichtvorziehen(*p) == 1) in[l++] = *p++;
- mem = in[l-1];
- in[l-1] = in[pos];
- in[pos] = mem;
- pos = l;
+ if (isinitial(*(p+1)) == 1)
+ {
+ l = pos;
+ while (nichtvorziehen(*p) && isinitial(*(p+1)) == 1)
+ { in[l++] = *p++; in[l++] = *p++; }
+ mem = in[l-1];
+ in[l-1] = in[pos+1];
+ in[pos+1] = mem;
+ mem = in[l-2];
+ in[l-2] = in[pos];
+ in[pos] = mem;
+ pos = l;
+ }
+ else { ++p; intern_err(35); }
+ }
+ else
+ {
+ if (isinitial(*(p+1)) == 1) { ++p; intern_err(36); }
+ else
+ in[pos++] = *p++;
}
- else in[pos++] = *p++;
}
+
in[pos] = '\0';
}
@@ -3432,15 +3627,1193 @@ char *getTONEenc(unsigned char c)
}
+/*--------------------------------------------------------------------------*/
+
+
+#define DOUBLETTES_BEGIN 194
+#define DOUBLETTES_END 223
+
+#define TRIPLETTES_BEGIN 224
+#define TRIPLETTES_END 239
+
+#define QUADRUPLES_BEGIN 240
+#define QUADRUPLES_END 244
+
+#define UTF_BLOCK_BEGIN 128
+#define UTF_BLOCK_END 191
+
+static char *ohninetyfour[] = {
+ "", /* 194 128 <control> = U+0080 */
+ "", /* 194 129 <control> */
+ "", /* 194 130 <control> */
+ "", /* 194 131 <control> */
+ "", /* 194 132 <control> */
+ "", /* 194 133 <control> */
+ "", /* 194 134 <control> */
+ "", /* 194 135 <control> */
+ "", /* 194 136 <control> */
+ "", /* 194 137 <control> */
+ "", /* 194 138 <control> */
+ "", /* 194 139 <control> */
+ "", /* 194 140 <control> */
+ "", /* 194 141 <control> */
+ "", /* 194 142 <control> */
+ "", /* 194 143 <control> */
+ "", /* 194 144 <control> */
+ "", /* 194 145 <control> */
+ "", /* 194 146 <control> */
+ "", /* 194 147 <control> */
+ "", /* 194 148 <control> */
+ "", /* 194 149 <control> */
+ "", /* 194 150 <control> */
+ "", /* 194 151 <control> */
+ "", /* 194 152 <control> */
+ "", /* 194 153 <control> */
+ "", /* 194 154 <control> */
+ "", /* 194 155 <control> */
+ "", /* 194 156 <control> */
+ "", /* 194 157 <control> */
+ "", /* 194 158 <control> */
+ "", /* 194 159 <control> */
+ "{\\nobreakspace}", /* 194 160 ~ */
+ "{\\textexclamdown}", /* 194 161 !` */
+ "{\\textcent}", /* 194 162 */
+ "{\\textsterling}", /* 194 163 */
+ "{\\textcurrency}", /* 194 164 */
+ "{\\textyen}", /* 194 165 */
+ "{\\textbrokenbar}", /* 194 166 */
+ "{\\textsection}", /* 194 167 */
+ "{\\textasciidieresis}",/* 194 168 \\\"{} */
+ "{\\textcopyright}", /* 194 169 */
+ "{\\textordfeminine}", /* 194 170 */
+ "{\\guillemotleft}", /* 194 171 {\\flqq} */
+ "{\\textlnot}", /* 194 172 NOT SIGN */
+ "{\\-}", /* 194 173 */
+ "{\\textregistered}", /* 194 174 */
+ "{\\textasciimacron}", /* 194 175 \\={} */
+ "{\\textdegree}", /* 194 176 */
+ "{\\textpm}", /* 194 177 aehnlich $\pm$ */
+ "{\\texttwosuperior}", /* 194 178 ^{2} */
+ "{\\textthreesuperior}",/* 194 179 ^{3} */
+ "{\\textasciiacute}", /* 194 180 \\\'{} */
+ "{\\textmu}", /* 194 181 MICRO SIGN */
+ "{\\textparagraph}", /* 194 182 PILCROW SIGN */
+ "{\\textperiodcentered}", /* 194 183 {\\cdot} */
+ "{\\textasciicedilla}", /* 194 184 {\\c\\ } (\text... yet undefined) */
+ "{\\textonesuperior}", /* 194 185 ^{1} */
+ "{\\textordmasculine}", /* 194 186 */
+ "{\\guillemotright}", /* 194 187 {\\frqq} */
+ "{\\textonequarter}", /* 194 188 \\frac{1}{4} */
+ "{\\textonehalf}", /* 194 189 \\frac{1}{2} */
+ "{\\textthreequarters}",/* 194 190 \\frac{3}{4} */
+ "{\\textquestiondown}", /* 194 191 ?` */
+ NULL };
+
+#define OHNINETYFOUR 194
+
+char *get_ohninetyfour(unsigned char c)
+{
+ if (c >= UTF_BLOCK_BEGIN && c <= UTF_BLOCK_END) /* 128 ... 191 */
+ return ohninetyfour[c-UTF_BLOCK_BEGIN];
+ else return "";
+}
+
+
+static char *ohninetyfive[] = {
+ "\\`A", /* 195 128 */
+ "\\\'A", /* 195 129 */
+ "\\^A", /* 195 130 */
+ "\\~A", /* 195 131 */
+ "\\\"A", /* 195 132 */
+ "\\r{A}", /* 195 133 {\\AA} */
+ "{\\AE}", /* 195 134 */
+ "\\c{C}", /* 195 135 */
+ "\\`E", /* 195 136 */
+ "\\\'E", /* 195 137 */
+ "\\^E", /* 195 138 */
+ "\\\"E", /* 195 139 */
+ "\\`I", /* 195 140 */
+ "\\\'I", /* 195 141 */
+ "\\^I", /* 195 142 */
+ "\\\"I", /* 195 143 */
+ "{\\DH}", /* 195 144 not OT1 */
+ "\\~N", /* 195 145 */
+ "\\`O", /* 195 146 */
+ "\\\'O", /* 195 147 */
+ "\\^O", /* 195 148 */
+ "\\~O", /* 195 149 */
+ "\\\"O", /* 195 150 */
+ "{\\texttimes}", /* 195 151 */
+ "{\\O}", /* 195 152 */
+ "\\`U", /* 195 153 */
+ "\\\'U", /* 195 154 */
+ "\\^U", /* 195 155 */
+ "\\\"U", /* 195 156 */
+ "\\\'Y", /* 195 157 */
+ "{\\TH}", /* 195 158 not OT1 */
+ "{\\ss}", /* 195 159 */
+ "\\`a", /* 195 160 */
+ "\\\'a", /* 195 161 */
+ "\\^a", /* 195 162 */
+ "\\~a", /* 195 163 */
+ "\\\"a", /* 195 164 */
+ "\\r{a}", /* 195 165 {\\aa} */
+ "{\\ae}", /* 195 166 */
+ "\\c{c}", /* 195 167 */
+ "\\`e", /* 195 168 */
+ "\\\'e", /* 195 169 */
+ "\\^e", /* 195 170 */
+ "\\\"e", /* 195 171 */
+ "\\`{\\i}", /* 195 172 */
+ "\\\'{\\i}", /* 195 173 */
+ "\\^{\\i}", /* 195 174 */
+ "\\\"{\\i}", /* 195 175 */
+ "{\\dh}", /* 195 176 not OT1 */
+ "\\~n", /* 195 177 */
+ "\\`o", /* 195 178 */
+ "\\\'o", /* 195 179 */
+ "\\^o", /* 195 180 */
+ "\\~o", /* 195 181 */
+ "\\\"o", /* 195 182 */
+ "{\\textdiv}", /* 195 183 */
+ "{\\o}", /* 195 184 */
+ "\\`u", /* 195 185 */
+ "\\\'u", /* 195 186 */
+ "\\^u", /* 195 187 */
+ "\\\"u", /* 195 188 */
+ "\\\'y", /* 195 189 */
+ "{\\th}", /* 195 190 not OT1 */
+ "\\\"y", /* 195 191 */
+ NULL };
+
+#define OHNINETYFIVE 195
+
+char *get_ohninetyfive(unsigned char c)
+{
+ if (c >= UTF_BLOCK_BEGIN && c <= UTF_BLOCK_END) /* 128 ... 191 */
+ return ohninetyfive[c-UTF_BLOCK_BEGIN];
+ else return "";
+}
+
+
+static char *ohninetysix[] = {
+ "\\=A", /* 196 128 */
+ "\\=a", /* 196 129 */
+ "\\u{A}", /* 196 130 */
+ "\\u{a}", /* 196 131 */
+ "\\k{A}", /* 196 132 not OT1 */
+ "\\k{a}", /* 196 133 not OT1 */
+ "\\\'C", /* 196 134 */
+ "\\\'c", /* 196 135 */
+ "\\^C", /* 196 136 */
+ "\\^c", /* 196 137 */
+ "\\.C", /* 196 138 */
+ "\\.c", /* 196 139 */
+ "\\v{C}", /* 196 140 */
+ "\\v{c}", /* 196 141 */
+ "\\v{D}", /* 196 142 */
+ "\\v{d}", /* 196 143 */
+ "{\\DJ}", /* 196 144 not OT1 */
+ "{\\dj}", /* 196 145 not OT1 */
+ "\\=E", /* 196 146 */
+ "\\=e", /* 196 147 */
+ "\\u{E}", /* 196 148 */
+ "\\u{e}", /* 196 149 */
+ "\\.E", /* 196 150 */
+ "\\.e", /* 196 151 */
+ "\\k{E}", /* 196 152 not OT1 */
+ "\\k{e}", /* 196 153 not OT1 */
+ "\\v{E}", /* 196 154 */
+ "\\v{e}", /* 196 155 */
+ "\\^G", /* 196 156 */
+ "\\^g", /* 196 157 */
+ "\\u{G}", /* 196 158 */
+ "\\u{g}", /* 196 159 */
+ "\\.G", /* 196 160 */
+ "\\.g", /* 196 161 */
+ "\\c{G}", /* 196 162 */
+ "\\c{g}", /* 196 163 */
+ "\\^H", /* 196 164 */
+ "\\^h", /* 196 165 */
+ "", /* 196 166 H-quer (not v1.2l) */
+ "", /* 196 167 {\\hbar} [?] (not v1.2l) */
+ "\\~I", /* 196 168 */
+ "\\~{\\i}", /* 196 169 */
+ "\\=I", /* 196 170 */
+ "\\={\\i}", /* 196 171 */
+ "\\u{I}", /* 196 172 */
+ "\\u{\\i}", /* 196 173 */
+ "\\k{I}", /* 196 174 not OT1 */
+ "\\k{i}", /* 196 175 not OT1 */
+ "\\.I", /* 196 176 */
+ "{\\i}", /* 196 177 */
+ "{\\IJ}", /* 196 178 */
+ "{\\ij}", /* 196 179 */
+ "\\^J", /* 196 180 */
+ "\\^{\\j}", /* 196 181 */
+ "\\c{K}", /* 196 182 */
+ "\\c{k}", /* 196 183 */
+ "", /* 196 184 kra (not v1.2l) */
+ "\\\'L", /* 196 185 */
+ "\\\'l", /* 196 186 */
+ "\\c{L}", /* 196 187 */
+ "\\c{l}", /* 196 188 */
+ "\\v{L}", /* 196 189 */
+ "\\v{l}", /* 196 190 */
+ "", /* 196 191 L* (not v1.2l) */
+ NULL };
+
+#define OHNINETYSIX 196
+
+char *get_ohninetysix(unsigned char c)
+{
+ if (c >= UTF_BLOCK_BEGIN && c <= UTF_BLOCK_END) /* 128 ... 191 */
+ return ohninetysix[c-UTF_BLOCK_BEGIN];
+ else return "";
+}
+
+
+static char *ohninetyseven[] = {
+ "", /* 197 128 l* (not v1.2l) */
+ "{\\L}", /* 197 129 */
+ "{\\l}", /* 197 130 */
+ "\\\'N", /* 197 131 */
+ "\\\'n", /* 197 132 */
+ "\\c{N}", /* 197 133 */
+ "\\c{n}", /* 197 134 */
+ "\\v{N}", /* 197 135 */
+ "\\v{n}", /* 197 136 */
+ "", /* 197 137 'n (not v1.2l) */
+ "{\\NG}", /* 197 138 */
+ "{\\ng}", /* 197 139 */
+ "\\=O", /* 197 140 */
+ "\\=o", /* 197 141 */
+ "\\u{O}", /* 197 142 */
+ "\\u{o}", /* 197 143 */
+ "\\H{O}", /* 197 144 */
+ "\\H{o}", /* 197 145 */
+ "{\\OE}", /* 197 146 */
+ "{\\oe}", /* 197 147 */
+ "\\\'R", /* 197 148 */
+ "\\\'r", /* 197 149 */
+ "\\c{R}", /* 197 150 */
+ "\\c{r}", /* 197 151 */
+ "\\v{R}", /* 197 152 */
+ "\\v{r}", /* 197 153 */
+ "\\\'S", /* 197 154 */
+ "\\\'s", /* 197 155 */
+ "\\^S", /* 197 156 */
+ "\\^s", /* 197 157 */
+ "\\c{S}", /* 197 158 */
+ "\\c{s}", /* 197 159 */
+ "\\v{S}", /* 197 160 */
+ "\\v{s}", /* 197 161 */
+ "\\c{T}", /* 197 162 */
+ "\\c{t}", /* 197 163 */
+ "\\v{T}", /* 197 164 */
+ "\\v{t}", /* 197 165 */
+ "", /* 197 166 T-quer (not v1.2l) */
+ "", /* 197 167 t-quer (not v1.2l) */
+ "\\~U", /* 197 168 */
+ "\\~u", /* 197 169 */
+ "\\=U", /* 197 170 */
+ "\\=u", /* 197 171 */
+ "\\u{U}", /* 197 172 */
+ "\\u{u}", /* 197 173 */
+ "\\r{U}", /* 197 174 */
+ "\\r{u}", /* 197 175 */
+ "\\H{U}", /* 197 176 */
+ "\\H{u}", /* 197 177 */
+ "\\k{U}", /* 197 178 */
+ "\\k{u}", /* 197 179 */
+ "\\^W", /* 197 180 */
+ "\\^w", /* 197 181 */
+ "\\^Y", /* 197 182 */
+ "\\^y", /* 197 183 */
+ "\\\"Y", /* 197 184 */
+ "\\\'Z", /* 197 185 */
+ "\\\'z", /* 197 186 */
+ "\\.Z", /* 197 187 */
+ "\\.z", /* 197 188 */
+ "\\v{Z}", /* 197 189 */
+ "\\v{z}", /* 197 190 */
+ "", /* 197 191 Lang-s (not v1.2l) */
+ NULL };
+
+#define OHNINETYSEVEN 197
+
+char *get_ohninetyseven(unsigned char c)
+{
+ if (c >= UTF_BLOCK_BEGIN && c <= UTF_BLOCK_END) /* 128 ... 191 */
+ return ohninetyseven[c-UTF_BLOCK_BEGIN];
+ else return "";
+}
+
+
+static char *ohninetynine[] = {
+ "", /* 199 128 dental click (not v1.2l) */
+ "", /* 199 129 lateral click (not v1.2l) */
+ "", /* 199 130 alveolar click (not v1.2l) */
+ "", /* 199 131 retroflex click (not v1.2l) */
+ "", /* 199 132 D\\v{Z} (not v1.2l) */
+ "", /* 199 133 D\\v{z} (not v1.2l) */
+ "", /* 199 134 d\\v{z} (not v1.2l) */
+ "", /* 199 135 LJ (not v1.2l) */
+ "", /* 199 136 Lj (not v1.2l) */
+ "", /* 199 137 lj (not v1.2l) */
+ "", /* 199 138 NJ (not v1.2l) */
+ "", /* 199 139 Nj (not v1.2l) */
+ "", /* 199 140 nj (not v1.2l) */
+ "\\v{A}", /* 199 141 */
+ "\\v{a}", /* 199 142 */
+ "\\v{I}", /* 199 143 */
+ "\\v{\\i}", /* 199 144 */
+ "\\v{O}", /* 199 145 */
+ "\\v{o}", /* 199 146 */
+ "\\v{U}", /* 199 147 */
+ "\\v{u}", /* 199 148 */
+ "", /* 199 149 \\={\\\"U} (not v1.2l) */
+ "", /* 199 150 \\={\\\"u} (not v1.2l) */
+ "", /* 199 151 \\\'{\\\"U} (not v1.2l) */
+ "", /* 199 152 \\\'{\\\"u} (not v1.2l) */
+ "", /* 199 153 \\v{\\\"U} (not v1.2l) */
+ "", /* 199 154 \\v{\\\"u} (not v1.2l) */
+ "", /* 199 155 \\`{\\\"U} (not v1.2l) */
+ "", /* 199 156 \\`{\\\"u} (not v1.2l) */
+ "", /* 199 157 turned e (not v1.2l) */
+ "", /* 199 158 \\={\\\"A} (not v1.2l) */
+ "", /* 199 159 \\={\\\"a} (not v1.2l) */
+ "", /* 199 160 \\={\\.A} (not v1.2l) */
+ "", /* 199 161 \\={\\.a} (not v1.2l) */
+ "\\={\\AE}", /* 199 162 */
+ "\\={\\ae}", /* 199 163 */
+ "", /* 199 164 G-quer (not v1.2l) */
+ "", /* 199 165 g-quer (not v1.2l) */
+ "\\v{G}", /* 199 166 */
+ "\\v{g}", /* 199 167 */
+ "\\v{K}", /* 199 168 */
+ "\\v{k}", /* 199 169 */
+ "\\k{O}", /* 199 170 */
+ "\\k{o}", /* 199 171 */
+ "", /* 199 172 \\k{\\=O} (not v1.2l) */
+ "", /* 199 173 \\k{\\=o} (not v1.2l) */
+ "", /* 199 174 EZH with \\v (not v1.2l) */
+ "", /* 199 175 ezh with \\v (not v1.2l) */
+ "\\v{\\j}", /* 199 176 */
+ "", /* 199 177 DZ (not v1.2l) */
+ "", /* 199 178 Dz (not v1.2l) */
+ "", /* 199 179 dz (not v1.2l) */
+ "\\\'G", /* 199 180 */
+ "\\\'g", /* 199 181 */
+ "", /* 199 182 HWAIR (not v1.2l) */
+ "", /* 199 183 WYNN (not v1.2l) */
+ "", /* 199 184 \\`N (not v1.2l) */
+ "", /* 199 185 \\`n (not v1.2l) */
+ "", /* 199 186 \\\'{\k{A}} (not v1.2l) */
+ "", /* 199 187 \\\'{\k{a}} (not v1.2l) */
+ "", /* 199 188 \\\'{\\AE} (not v1.2l) */
+ "", /* 199 189 \\\'{\\ae} (not v1.2l) */
+ "", /* 199 190 \\\'{\\O} (not v1.2l) */
+ "", /* 199 191 \\\'{\\o} (not v1.2l) */
+ NULL };
+
+#define OHNINETYNINE 199
+
+char *get_ohninetynine(unsigned char c)
+{
+ if (c >= UTF_BLOCK_BEGIN && c <= UTF_BLOCK_END) /* 128 ... 191 */
+ return ohninetynine[c-UTF_BLOCK_BEGIN];
+ else return "";
+}
+
+
+static char *thnullnull[] = {
+ "", /* 200 128 A with double grave (not v1.2l) */
+ "", /* 200 129 a with double grave (not v1.2l) */
+ "", /* 200 130 A with inverted breve (not v1.2l) */
+ "", /* 200 131 a with inverted breve (not v1.2l) */
+ "", /* 200 132 E with double grave (not v1.2l) */
+ "", /* 200 133 e with double grave (not v1.2l) */
+ "", /* 200 134 E with inverted breve (not v1.2l) */
+ "", /* 200 135 e with inverted breve (not v1.2l) */
+ "", /* 200 136 I with double grave (not v1.2l) */
+ "", /* 200 137 i with double grave (not v1.2l) */
+ "", /* 200 138 I with inverted breve (not v1.2l) */
+ "", /* 200 139 i with inverted breve (not v1.2l) */
+ "", /* 200 140 O with double grave (not v1.2l) */
+ "", /* 200 141 o with double grave (not v1.2l) */
+ "", /* 200 142 O with inverted breve (not v1.2l) */
+ "", /* 200 143 o with inverted breve (not v1.2l) */
+ "", /* 200 144 R with double grave (not v1.2l) */
+ "", /* 200 145 r with double grave (not v1.2l) */
+ "", /* 200 146 R with inverted breve (not v1.2l) */
+ "", /* 200 147 r with inverted breve (not v1.2l) */
+ "", /* 200 148 U with double grave (not v1.2l) */
+ "", /* 200 149 u with double grave (not v1.2l) */
+ "", /* 200 150 U with inverted breve (not v1.2l) */
+ "", /* 200 151 u with inverted breve (not v1.2l) */
+ "\\textcommabelow{S}", /* 200 152 */
+ "\\textcommabelow{s}", /* 200 153 */
+ "\\textcommabelow{T}", /* 200 154 */
+ "\\textcommabelow{t}", /* 200 155 */
+ "", /* 200 156 YOGH (not v1.2l) */
+ "", /* 200 157 yogh (not v1.2l) */
+ "", /* 200 158 \\v{H} (not v1.2l) */
+ "", /* 200 159 \\v{h} (not v1.2l) */
+ "", /* 200 160 N with long right leg (not v1.2l) */
+ "", /* 200 161 d with curl (not v1.2l) */
+ "", /* 200 162 OU (not v1.2l) */
+ "", /* 200 163 ou (not v1.2l) */
+ "", /* 200 164 Z with hook (not v1.2l) */
+ "", /* 200 165 z with hook (not v1.2l) */
+ "", /* 200 166 \\.A (not v1.2l) */
+ "", /* 200 167 \\.a (not v1.2l) */
+ "", /* 200 168 \\c{E} (not v1.2l) */
+ "", /* 200 169 \\c{e} (not v1.2l) */
+ "", /* 200 170 \\={\\\"O} (not v1.2l) */
+ "", /* 200 171 \\={\\\"o} (not v1.2l) */
+ "", /* 200 172 \\={\\~O} (not v1.2l) */
+ "", /* 200 173 \\={\\~o} (not v1.2l) */
+ "", /* 200 174 \\.O (not v1.2l) */
+ "", /* 200 175 \\.o (not v1.2l) */
+ "", /* 200 176 [\\={\\.O}] (not v1.2l) */
+ "", /* 200 177 [\\={\\.o}] (not v1.2l) */
+ "\\=Y", /* 200 178 */
+ "\\=y", /* 200 179 */
+ "", /* 200 180 l with curl (not v1.2l) */
+ "", /* 200 181 n with curl (not v1.2l) */
+ "", /* 200 182 t with curl (not v1.2l) */
+ "{\\j}", /* 200 183 */
+ "", /* 200 184 db digraph (not v1.2l) */
+ "", /* 200 185 qp digraph (not v1.2l) */
+ "", /* 200 186 A with diagonal stroke (not v1.2l) */
+ "", /* 200 187 C with diagonal stroke (not v1.2l) */
+ "", /* 200 188 {\\textcentoldstyle} (not v1.2l) */
+ "", /* 200 189 L-quer (not v1.2l) */
+ "", /* 200 190 T with diagonal stroke (not v1.2l) */
+ "", /* 200 191 s with swash tail (not v1.2l) */
+ NULL };
+
+#define THNULLNULL 200
+
+char *get_thnullnull(unsigned char c)
+{
+ if (c >= UTF_BLOCK_BEGIN && c <= UTF_BLOCK_END) /* 128 ... 191 */
+ return thnullnull[c-UTF_BLOCK_BEGIN];
+ else return "";
+}
+
+
+#define THNULLTHREE 203
+
+int ins_thnullthree(char in[], unsigned char c, int pos)
+{
+ if (c == 134) /* 203 134 \\^{} */
+ pos = insposmaxstr(in, "{\\textasciicircum}", pos, MAXLEN-1);
+ else
+ if (c == 135) /* 203 135 \\v{} */
+ pos = insposmaxstr(in, "{\\textasciicaron}", pos, MAXLEN-1);
+ else
+ if (c == 152) /* 203 152 \\u{} */
+ pos = insposmaxstr(in, "{\\textasciibreve}", pos, MAXLEN-1);
+ else
+ if (c == 153) /* 203 153 \\.{} (\text... yet undefined) */
+ pos = insposmaxstr(in, "{\\textasciidotaccent}", pos, MAXLEN-1);
+ else
+ if (c == 155) /* 203 155 \\k{} (\text... yet undefined) */
+ pos = insposmaxstr(in, "{\\textasciiogonek}", pos, MAXLEN-1);
+ else
+ if (c == 156) /* 203 156 \\~{} */
+ pos = insposmaxstr(in, "{\\textasciitilde}", pos, MAXLEN-1);
+ else
+ if (c == 157) /* 203 157 \\H{} */
+ pos = insposmaxstr(in, "{\\textacutedbl}", pos, MAXLEN-1);
+
+ return pos;
+}
+
+
+static char *thtwentyfive_oheightyfour[] = {
+ "", /* 225 184 128 A with ring below (not v1.2l) */
+ "", /* 225 184 129 a with ring below (not v1.2l) */
+ "\\.B", /* 225 184 130 */
+ "\\.b", /* 225 184 131 */
+ "", /* 225 184 132 \\d{B} (not v1.2l) */
+ "", /* 225 184 133 \\d{b} (not v1.2l) */
+ "", /* 225 184 134 \\b{B} (not v1.2l) */
+ "", /* 225 184 135 \\b{b} (not v1.2l) */
+ "", /* 225 184 136 \\c{\\\'C} (not v1.2l) */
+ "", /* 225 184 137 \\c{\\\'c} (not v1.2l) */
+ "", /* 225 184 138 \\.D (not v1.2l) */
+ "", /* 225 184 139 \\.d (not v1.2l) */
+ "", /* 225 184 140 \\d{D} (not v1.2l) */
+ "\\d{d}", /* 225 184 141 */
+ "", /* 225 184 142 \\b{D} (not v1.2l) */
+ "", /* 225 184 143 \\b{d} (not v1.2l) */
+ "", /* 225 184 144 \\textcommabelow{D} (not v1.2l) */
+ "", /* 225 184 145 \\textcommabelow{d} (not v1.2l) */
+ "", /* 225 184 146 D with circumflex below (not v1.2l) */
+ "", /* 225 184 147 d with circumflex below (not v1.2l) */
+ "", /* 225 184 148 [\\`{\\=E}] (not v1.2l) */
+ "", /* 225 184 149 [\\`{\\=e}] (not v1.2l) */
+ "", /* 225 184 150 [\\\'{\\=E}] (not v1.2l) */
+ "", /* 225 184 151 [\\\'{\\=e}] (not v1.2l) */
+ "", /* 225 184 152 E with circumflex below (not v1.2l) */
+ "", /* 225 184 153 e with circumflex below (not v1.2l) */
+ "", /* 225 184 154 E with tilde below (not v1.2l) */
+ "", /* 225 184 155 e with tilde below (not v1.2l) */
+ "", /* 225 184 156 [\\u{\\c{E}}] (not v1.2l) */
+ "", /* 225 184 157 [\\u{\\c{e}}] (not v1.2l) */
+ "", /* 225 184 158 \\.F (not v1.2l) */
+ "", /* 225 184 159 \\.f (not v1.2l) */
+ "\\=G", /* 225 184 160 */
+ "\\=g", /* 225 184 161 */
+ "", /* 225 184 162 \\.H (not v1.2l) */
+ "", /* 225 184 163 \\.h (not v1.2l) */
+ "", /* 225 184 164 \\d{H} (not v1.2l) */
+ "\\d{h}", /* 225 184 165 */
+ "", /* 225 184 166 \\\"H (not v1.2l) */
+ "", /* 225 184 167 \\\"h (not v1.2l) */
+ "", /* 225 184 168 \\c{H} [?] (not v1.2l) */
+ "", /* 225 184 169 \\c{h} [?] (not v1.2l) */
+ "", /* 225 184 170 H with breve below (not v1.2l) */
+ "", /* 225 184 171 h with breve below (not v1.2l) */
+ "", /* 225 184 172 I with tilde below (not v1.2l) */
+ "", /* 225 184 173 i with tilde below (not v1.2l) */
+ "", /* 225 184 174 \\\'{\\\"I} (not v1.2l) */
+ "", /* 225 184 175 \\\'{\\\"{\\i}} (not v1.2l) */
+ "", /* 225 184 176 \\\'K (not v1.2l) */
+ "", /* 225 184 177 \\\'k (not v1.2l) */
+ "", /* 225 184 178 \\d{K} (not v1.2l) */
+ "", /* 225 184 179 \\d{k} (not v1.2l) */
+ "", /* 225 184 180 \\b{K} (not v1.2l) */
+ "", /* 225 184 181 \\b{k} (not v1.2l) */
+ "", /* 225 184 182 \\d{L} (not v1.2l) */
+ "\\d{l}", /* 225 184 183 */
+ "", /* 225 184 184 \\d{\\=L} (not v1.2l) */
+ "", /* 225 184 185 \\d{\\=l} (not v1.2l) */
+ "", /* 225 184 186 \\b{L} (not v1.2l) */
+ "", /* 225 184 187 \\b{l} (not v1.2l) */
+ "", /* 225 184 188 L with circumflex below (not v1.2l) */
+ "", /* 225 184 189 l with circumflex below (not v1.2l) */
+ "", /* 225 184 190 \\\'M (not v1.2l) */
+ "", /* 225 184 191 \\\'m (not v1.2l) */
+ NULL };
+
+#define THTWENTYFIVE 225
+#define THTWENTYFIVE_OHEIGHTYFOUR 184
+
+char *get_thtwentyfive_oheightyfour(unsigned char c)
+{
+ if (c >= UTF_BLOCK_BEGIN && c <= UTF_BLOCK_END) /* 128 ... 191 */
+ return thtwentyfive_oheightyfour[c-UTF_BLOCK_BEGIN];
+ else return "";
+}
+
+
+static char *thtwentyfive_oheightyfive[] = {
+ "", /* 225 185 128 \\.M (not v1.2l) */
+ "", /* 225 185 129 \\.m (not v1.2l) */
+ "", /* 225 185 130 \\d{M} (not v1.2l) */
+ "\\d{m}", /* 225 185 131 */
+ "", /* 225 185 132 \\.N (not v1.2l) */
+ "\\.n", /* 225 185 133 */
+ "", /* 225 185 134 \\d{N} (not v1.2l) */
+ "\\d{n}", /* 225 185 135 */
+ "", /* 225 185 136 N with line below (not v1.2l) */
+ "", /* 225 185 137 n with line below (not v1.2l) */
+ "", /* 225 185 138 N with circumflex below (not v1.2l) */
+ "", /* 225 185 139 n with circumflex below (not v1.2l) */
+ "", /* 225 185 140 \\\'{\\~O} (not v1.2l) */
+ "", /* 225 185 141 \\\'{\\~o} (not v1.2l) */
+ "", /* 225 185 142 \\\"{\\~O} (not v1.2l) */
+ "", /* 225 185 143 \\\"{\\~o} (not v1.2l) */
+ "", /* 225 185 144 [\\`{\\=O}] (not v1.2l) */
+ "", /* 225 185 145 [\\`{\\=o}] (not v1.2l) */
+ "", /* 225 185 146 [\\\'{\\=O}] (not v1.2l) */
+ "", /* 225 185 147 [\\\'{\\=o}] (not v1.2l) */
+ "", /* 225 185 148 \\\'P (not v1.2l) */
+ "", /* 225 185 149 \\\'p (not v1.2l) */
+ "", /* 225 185 150 \\.P (not v1.2l) */
+ "", /* 225 185 151 \\.p (not v1.2l) */
+ "", /* 225 185 152 \\.R (not v1.2l) */
+ "", /* 225 185 153 \\.r (not v1.2l) */
+ "", /* 225 185 154 \\d{R} (not v1.2l) */
+ "\\d{r}", /* 225 185 155 */
+ "", /* 225 185 156 \\d{\\=R} (not v1.2l) */
+ "", /* 225 185 157 \\d{\\=r} (not v1.2l) */
+ "", /* 225 185 158 R with line below (not v1.2l) */
+ "", /* 225 185 159 r with line below (not v1.2l) */
+ "", /* 225 185 160 \\.S (not v1.2l) */
+ "", /* 225 185 161 \\.s (not v1.2l) */
+ "", /* 225 185 162 \\d{S} (not v1.2l) */
+ "\\d{s}", /* 225 185 163 */
+ "", /* 225 185 164 \\.{\\\'S} (not v1.2l) */
+ "", /* 225 185 165 \\.{\\\'s} (not v1.2l) */
+ "", /* 225 185 166 \\.{\\v{S}} (not v1.2l) */
+ "", /* 225 185 167 \\.{\\v{s}} (not v1.2l) */
+ "", /* 225 185 168 \\d{\\.S} (not v1.2l) */
+ "", /* 225 185 169 \\d{\\.s} (not v1.2l) */
+ "", /* 225 185 170 \\.T (not v1.2l) */
+ "", /* 225 185 171 \\.t (not v1.2l) */
+ "", /* 225 185 172 \\d{T} (not v1.2l) */
+ "\\d{t}", /* 225 185 173 */
+ "", /* 225 185 174 T with line below (not v1.2l) */
+ "", /* 225 185 175 t with line below (not v1.2l) */
+ "", /* 225 185 176 T with circumfelx below (not v1.2l) */
+ "", /* 225 185 177 t with circumfelx below (not v1.2l) */
+ "", /* 225 185 178 U with diaresis below (not v1.2l) */
+ "", /* 225 185 179 u with diaresis below (not v1.2l) */
+ "", /* 225 185 180 U with tilde below (not v1.2l) */
+ "", /* 225 185 181 u with tilde below (not v1.2l) */
+ "", /* 225 185 182 U with circumflex below (not v1.2l) */
+ "", /* 225 185 183 u with circumflex below (not v1.2l) */
+ "", /* 225 185 184 [\\\'{\\~U}] (not v1.2l) */
+ "", /* 225 185 185 [\\\'{\\~u}] (not v1.2l) */
+ "", /* 225 185 186 [\\\"{\\=U}] (not v1.2l) */
+ "", /* 225 185 187 [\\\"{\\=u}] (not v1.2l) */
+ "", /* 225 185 188 \\~V (not v1.2l) */
+ "", /* 225 185 189 \\~v (not v1.2l) */
+ "", /* 225 185 190 \\d{V} (not v1.2l) */
+ "", /* 225 185 191 \\d{v} (not v1.2l) */
+ NULL };
+
+#define THTWENTYFIVE_OHEIGHTYFIVE 185
+
+char *get_thtwentyfive_oheightyfive(unsigned char c)
+{
+ if (c >= UTF_BLOCK_BEGIN && c <= UTF_BLOCK_END) /* 128 ... 191 */
+ return thtwentyfive_oheightyfive[c-UTF_BLOCK_BEGIN];
+ else return "";
+}
+
+
+static char *thtwentysix_ohtwentyeight[] = {
+ "", /* 226 128 128 en quad (not v1.2l) */
+ "", /* 226 128 129 em quad (not v1.2l) */
+ "", /* 226 128 130 en space (not v1.2l) */
+ "", /* 226 128 131 em space (not v1.2l) */
+ "", /* 226 128 132 three-per-em space (not v1.2l) */
+ "", /* 226 128 133 four-per-em space (not v1.2l) */
+ "", /* 226 128 134 six-per-em space (not v1.2l) */
+ "", /* 226 128 135 figure space (not v1.2l) */
+ "", /* 226 128 136 punctuation space (not v1.2l) */
+ "", /* 226 128 137 thin space (not v1.2l) */
+ "", /* 226 128 138 hair space (not v1.2l) */
+ "", /* 226 128 139 zero width space (not v1.2l) */
+ "{\\textcompwordmark}", /* 226 128 140 (LaTeX-Example: b\u{226-128-140}g) */
+ "", /* 226 128 141 zero width joiner (not v1.2l) */
+ "", /* 226 128 142 left-to-right mark (not v1.2l) */
+ "", /* 226 128 143 right-to-left mark (not v1.2l) */
+ "-", /* 226 128 144 */
+ "\\mbox{-}", /* 226 128 145 - */
+ "{\\textendash}", /* 226 128 146 -- */
+ "{\\textendash}", /* 226 128 147 -- */
+ "{\\textemdash}", /* 226 128 148 --- */
+ "{\\textemdash}", /* 226 128 149 --- */
+ "{\\textbardbl}", /* 226 128 150 */
+ "", /* 226 128 151 double low line (not v1.2l) */
+ "{\\textquoteleft}", /* 226 128 152 ` */
+ "{\\textquoteright}", /* 226 128 153 \' */
+ "{\\quotesinglbase}", /* 226 128 154 , */
+ "", /* 226 128 155 single high-reversed-9 quotation mark (not v1.2l) */
+ "{\\textquotedblleft}", /* 226 128 156 `` */
+ "{\\textquotedblright}", /* 226 128 157 \'\' */
+ "{\\quotedblbase}", /* 226 128 158 ,, */
+ "", /* 226 128 159 double high-reversed-9 quotation mark (not v1.2l) */
+ "{\\textdagger}", /* 226 128 160 {\\dag} */
+ "{\\textdaggerdbl}", /* 226 128 161 {\\ddag} */
+ "{\\textbullet}", /* 226 128 162 */
+ "", /* 226 128 163 triangular bullet (not v1.2l) */
+ "", /* 226 128 164 one dot leader (not v1.2l) */
+ "", /* 226 128 165 two dot leader (not v1.2l) */
+ "{\\textellipsis}", /* 226 128 166 {\\dots} */
+ "", /* 226 128 167 hyphenation point (not v1.2l) */
+ "", /* 226 128 168 line separator (not v1.2l) */
+ "", /* 226 128 169 paragraph separator (not v1.2l) */
+ "", /* 226 128 170 left-to-right embedding (not v1.2l) */
+ "", /* 226 128 171 right-to-left embedding (not v1.2l) */
+ "", /* 226 128 172 pop directional formatting (not v1.2l) */
+ "", /* 226 128 173 left-to-right override (not v1.2l) */
+ "", /* 226 128 174 right-to-left override (not v1.2l) */
+ "", /* 226 128 175 narrow no-break space (not v1.2l) */
+ "{\\textperthousand}", /* 226 128 176 */
+ "{\\textpertenthousand}", /* 226 128 177 */
+ "", /* 226 128 178 prime (not v1.2l) */
+ "", /* 226 128 179 double prime (not v1.2l) */
+ "", /* 226 128 180 triple prime (not v1.2l) */
+ "", /* 226 128 181 reversed prime (not v1.2l) */
+ "", /* 226 128 182 reversed double prime (not v1.2l) */
+ "", /* 226 128 183 reversed triple prime (not v1.2l) */
+ "", /* 226 128 184 caret (not v1.2l) */
+ "{\\guilsinglleft}", /* 226 128 185 */
+ "{\\guilsinglright}", /* 226 128 186 */
+ "{\\textreferencemark}", /* 226 128 187 */
+ "", /* 226 128 188 "!!" (double exclamation mark) (not v1.2l) */
+ "{\\textinterrobang}", /* 226 128 189 */
+ "", /* 226 128 190 overline (not v1.2l) */
+ "", /* 226 128 191 undertie (not v1.2l) */
+ NULL };
+
+#define THTWENTYSIX 226
+#define THTWENTYSIX_OHTWENTYEIGHT 128
+
+char *get_thtwentysix_ohtwentyeight(unsigned char c)
+{
+ if (c >= UTF_BLOCK_BEGIN && c <= UTF_BLOCK_END) /* 128 ... 191 */
+ return thtwentysix_ohtwentyeight[c-UTF_BLOCK_BEGIN];
+ else return "";
+}
+
+
+static char *thtwentysix_ohthirty[] = {
+ "", /* 226 130 128 _0 (not v1.2l) */
+ "", /* 226 130 129 _1 (not v1.2l) */
+ "", /* 226 130 130 _2 (not v1.2l) */
+ "", /* 226 130 131 _3 (not v1.2l) */
+ "", /* 226 130 132 _4 (not v1.2l) */
+ "", /* 226 130 133 _5 (not v1.2l) */
+ "", /* 226 130 134 _6 (not v1.2l) */
+ "", /* 226 130 135 _7 (not v1.2l) */
+ "", /* 226 130 136 _8 (not v1.2l) */
+ "", /* 226 130 137 _9 (not v1.2l) */
+ "", /* 226 130 138 _+ (not v1.2l) */
+ "", /* 226 130 139 _- (not v1.2l) */
+ "", /* 226 130 140 _= (not v1.2l) */
+ "", /* 226 130 141 _( (not v1.2l) */
+ "", /* 226 130 142 _) (not v1.2l) */
+ "", /* 226 130 143 [undefined] (not v1.2l) */
+ "", /* 226 130 144 _a (not v1.2l) */
+ "", /* 226 130 145 _e (not v1.2l) */
+ "", /* 226 130 146 _o (not v1.2l) */
+ "", /* 226 130 147 _x (not v1.2l) */
+ "", /* 226 130 148 _{schwa} (not v1.2l) */
+ "", /* 226 130 149 _h (not v1.2l) */
+ "", /* 226 130 150 _k (not v1.2l) */
+ "", /* 226 130 151 _l (not v1.2l) */
+ "", /* 226 130 152 _m (not v1.2l) */
+ "", /* 226 130 153 _n (not v1.2l) */
+ "", /* 226 130 154 _p (not v1.2l) */
+ "", /* 226 130 155 _s (not v1.2l) */
+ "", /* 226 130 156 _t (not v1.2l) */
+ "", /* 226 130 157 [undefined] (not v1.2l) */
+ "", /* 226 130 158 [undefined] (not v1.2l) */
+ "", /* 226 130 159 [undefined] (not v1.2l) */
+ "", /* 226 130 160 euro-currency sign (not v1.2l) */
+ "{\\textcolonmonetary}", /* 226 130 161 */
+ "", /* 226 130 162 cruzeiro sign (not v1.2l) */
+ "", /* 226 130 163 french franc sign (not v1.2l) */
+ "{\\textlira}", /* 226 130 164 */
+ "", /* 226 130 165 mill sign (not v1.2l) */
+ "{\\textnaira}", /* 226 130 166 */
+ "", /* 226 130 167 peseta sign (not v1.2l) */
+ "", /* 226 130 168 rupee sign (not v1.2l) */
+ "{\\textwon}", /* 226 130 169 */
+ "", /* 226 130 170 new sheqel sign (not v1.2l) */
+ "{\\textdong}", /* 226 130 171 */
+ "{\\texteuro}", /* 226 130 172 */
+ "", /* 226 130 173 kip sign (not v1.2l) */
+ "", /* 226 130 174 tugrik sign (not v1.2l) */
+ "", /* 226 130 175 drachma sign (not v1.2l) */
+ "", /* 226 130 176 german penny sign (not v1.2l) */
+ "{\\textpeso}", /* 226 130 177 */
+ "", /* 226 130 178 guarani sign (not v1.2l) */
+ "", /* 226 130 179 austral sign (not v1.2l) */
+ "", /* 226 130 180 hryvnia sign (not v1.2l) */
+ "", /* 226 130 181 cedi sign (not v1.2l) */
+ "", /* 226 130 182 livre tournois sign (not v1.2l) */
+ "", /* 226 130 183 spesmilo sign (not v1.2l) */
+ "", /* 226 130 184 tenge sign (not v1.2l) */
+ "", /* 226 130 185 indian rupee sign (not v1.2l) */
+ "", /* 226 130 186 turkish lira sign (not v1.2l) */
+ "", /* 226 130 187 nordic mark sign (not v1.2l) */
+ "", /* 226 130 188 manat sign (not v1.2l) */
+ "", /* 226 130 189 ruble sign (not v1.2l) */
+ "", /* 226 130 190 lari sign (not v1.2l) */
+ "", /* 226 130 191 bitcoin sign (not v1.2l) */
+ NULL };
+
+#define THTWENTYSIX_OHTHIRTY 130
+
+char *get_thtwentysix_ohthirty(unsigned char c)
+{
+ if (c >= UTF_BLOCK_BEGIN && c <= UTF_BLOCK_END) /* 128 ... 191 */
+ return thtwentysix_ohthirty[c-UTF_BLOCK_BEGIN];
+ else return "";
+}
+
+
+int ins_rest_thtwentysix(char in[], unsigned char a, unsigned char b, int pos)
+{
+ if (a == 129 && b == 132) /* 226 129 132 not exactly "/" */
+ pos = insposmaxstr(in, "{\\textfractionsolidus}", pos, MAXLEN-1);
+ else
+ if (a == 129 && b == 142) /* 226 129 142 */
+ pos = insposmaxstr(in, "{\\textasteriskcentered}", pos, MAXLEN-1);
+ else
+ if (a == 129 && b == 146) /* 226 129 146 \\% */
+ pos = insposmaxstr(in, "{\\textdiscount}", pos, MAXLEN-1);
+ else
+ if (a == 132 && b == 131) /* 226 132 131 not exactly {\\textdegree C} */
+ pos = insposmaxstr(in, "{\\textcelsius}", pos, MAXLEN-1);
+ else
+ if (a == 132 && b == 150) /* 226 132 150 */
+ pos = insposmaxstr(in, "{\\textnumero}", pos, MAXLEN-1);
+ else
+ if (a == 132 && b == 151) /* 226 132 151 */
+ pos = insposmaxstr(in, "{\\textcircledP}", pos, MAXLEN-1);
+ else
+ if (a == 132 && b == 158) /* 226 132 158 */
+ pos = insposmaxstr(in, "{\\textrecipe}", pos, MAXLEN-1);
+ else
+ if (a == 132 && b == 160) /* 226 132 160 */
+ pos = insposmaxstr(in, "{\\textservicemark}", pos, MAXLEN-1);
+ else
+ if (a == 132 && b == 162) /* 226 132 162 */
+ pos = insposmaxstr(in, "{\\texttrademark}", pos, MAXLEN-1);
+ else
+ if (a == 132 && b == 166) /* 226 132 166 {\\Omega} */
+ pos = insposmaxstr(in, "{\\textohm}", pos, MAXLEN-1);
+ else
+ if (a == 132 && b == 167) /* 226 132 167 */
+ pos = insposmaxstr(in, "{\\textmho}", pos, MAXLEN-1);
+ else
+ if (a == 132 && b == 174) /* 226 132 174 */
+ pos = insposmaxstr(in, "{\\textestimated}", pos, MAXLEN-1);
+ else
+ if (a == 134 && b == 144) /* 226 134 144 {\\leftarrow} */
+ pos = insposmaxstr(in, "{\\textleftarrow}", pos, MAXLEN-1);
+ else
+ if (a == 134 && b == 145) /* 226 134 145 {\\uparrow} */
+ pos = insposmaxstr(in, "{\\textuparrow}", pos, MAXLEN-1);
+ else
+ if (a == 134 && b == 146) /* 226 134 146 {\\rightarrow} */
+ pos = insposmaxstr(in, "{\\textrightarrow}", pos, MAXLEN-1);
+ else
+ if (a == 134 && b == 147) /* 226 134 147 {\\downarrow} */
+ pos = insposmaxstr(in, "{\\textdownarrow}", pos, MAXLEN-1);
+ else
+ if (a == 140 && b == 169) /* 226 140 169 */
+ pos = insposmaxstr(in, "{\\textlangle}", pos, MAXLEN-1);
+ else
+ if (a == 140 && b == 170) /* 226 140 170 */
+ pos = insposmaxstr(in, "{\\textrangle}", pos, MAXLEN-1);
+ else
+ if (a == 144 && b == 162) /* 226 144 162 */
+ pos = insposmaxstr(in, "{\\textblank}", pos, MAXLEN-1);
+ else
+ if (a == 144 && b == 163) /* 226 144 163 */
+ pos = insposmaxstr(in, "{\\textvisiblespace}", pos, MAXLEN-1);
+ else
+ if (a == 151 && b == 166) /* 226 151 166 */
+ pos = insposmaxstr(in, "{\\textopenbullet}", pos, MAXLEN-1);
+ else
+ if (a == 151 && b == 175) /* 226 151 175 */
+ pos = insposmaxstr(in, "{\\textbigcircle}", pos, MAXLEN-1);
+ else
+ if (a == 153 && b == 170) /* 226 153 170 */
+ pos = insposmaxstr(in, "{\\textmusicalnote}", pos, MAXLEN-1);
+ else
+ if (a == 159 && b == 168) /* 226 159 168 */
+ pos = insposmaxstr(in, "{\\textlangle}", pos, MAXLEN-1);
+ else
+ if (a == 159 && b == 169) /* 226 159 169 */
+ pos = insposmaxstr(in, "{\\textrangle}", pos, MAXLEN-1);
+
+ return pos;
+}
+
+
+#define THTHIRTYNINE 239
+
+int ins_ththirtynine(char in[], unsigned char b, unsigned char c, int pos)
+{
+ if (b == 187 && c == 191) /* 239 187 191 */
+ pos = insposmaxstr(in, "{\\ifhmode\\nobreak\\fi}", pos, MAXLEN-1);
+ else
+ if (b == 172 && c == 128) /* 239 172 128 */
+ pos = insposmaxstr(in, "{ff}", pos, MAXLEN-1);
+ else
+ if (b == 172 && c == 129) /* 239 172 129 */
+ pos = insposmaxstr(in, "{fi}", pos, MAXLEN-1);
+ else
+ if (b == 172 && c == 130) /* 239 172 130 */
+ pos = insposmaxstr(in, "{fl}", pos, MAXLEN-1);
+ else
+ if (b == 172 && c == 131) /* 239 172 131 */
+ pos = insposmaxstr(in, "{ffi}", pos, MAXLEN-1);
+ else
+ if (b == 172 && c == 132) /* 239 172 132 */
+ pos = insposmaxstr(in, "{ffl}", pos, MAXLEN-1);
+ else
+ if (b == 172 && c == 133) /* 239 172 133 */
+ pos = insposmaxstr(in, "{st}", pos, MAXLEN-1);
+ else
+ if (b == 172 && c == 134) /* 239 172 134 */
+ pos = insposmaxstr(in, "{st}", pos, MAXLEN-1);
+
+ return pos;
+}
+
+
+int lenUTFacht(unsigned char a, unsigned char b, unsigned char c, unsigned char d)
+{
+ int r = 1; /* einstelliges Zeichen, es sei denn: */
+
+ if ( a >= DOUBLETTES_BEGIN && a <= DOUBLETTES_END /* 194 ... 223 */
+ && b >= UTF_BLOCK_BEGIN && b <= UTF_BLOCK_END /* 128 ... 191 */
+ ) r = 2;
+ else
+ if ( a == TRIPLETTES_BEGIN /* 224 */
+ && b >= 160 && b <= 191
+ && c >= 128 && c <= 191
+ ) r = 3;
+ else
+ if ( a >= 225 && a <= TRIPLETTES_END /* 239 */
+ && b >= 128 && b <= 191
+ && c >= 128 && c <= 191
+ ) r = 3;
+ else
+ if ( a == QUADRUPLES_BEGIN /* 240 */
+ && b >= 144 && b <= 191
+ && c >= 128 && c <= 191
+ && d >= 128 && d <= 191
+ ) r = 4;
+ else
+ if ( a >= 241 && a <= 243
+ && b >= 128 && b <= 191
+ && c >= 128 && c <= 191
+ && d >= 128 && d <= 191
+ ) r = 4;
+ else
+ if ( a == QUADRUPLES_END /* 244 */
+ && b >= 128 && b <= 143
+ && c >= 128 && c <= 191
+ && d >= 128 && d <= 191
+ ) r = 4;
+
+ return r;
+}
+
+
+int signeless(unsigned char a)
+{
+ return a;
+}
+
+
+int reg_utf_eight(int l, int val, char ch[UTF_EIGHT_MAXERR][UTF_EIGHT_MAXLEN+1], const char *p)
+{
+ int i, entry = 0, found = 0;
+ const char *q;
+
+ if (val < UTF_EIGHT_MAXERR)
+ {
+ while (entry < val)
+ {
+ i = 0;
+ while (i < l && ch[entry][i] == *(p+i) && *(p+i) != '\0') ++i;
+ if (ch[entry][i] == '\0' && *(p+i) == '\0') /* (i == l) for valids */
+ {
+ found = 1;
+ break;
+ }
+ ++entry;
+ }
+
+ if (l <= UTF_EIGHT_MAXLEN)
+ {
+ if (found == 0)
+ { /* gcc-troubles ch[val][i] = *(p+i++); */
+ q = p; i = 0;
+ while (i < l && *q != '\0') ch[val][i++] = *q++;
+ while (i <= UTF_EIGHT_MAXLEN) ch[val][i++] = '\0';
+ ++val;
+ }
+ }
+ else intern_err(33);
+ }
+
+ return val;
+}
+
+
+int utf_eight_err(const char *p)
+{
+ int l = 1, c = ((unsigned char)*p), plen;
+
+ if (c >= DOUBLETTES_BEGIN && c <= DOUBLETTES_END) l = 2; /* 194 ... 223 */
+ else
+ if (c >= TRIPLETTES_BEGIN && c <= TRIPLETTES_END) l = 3; /* 224 ... 239 */
+ else
+ if (c >= QUADRUPLES_BEGIN && c <= QUADRUPLES_END) l = 4; /* 240 ... 244 */
+
+ /* l == 1 falls \GenericError bliebe. */
+ if (l >= 1)
+ {
+ utf_err_c = reg_utf_eight(l, utf_err_c, err_utf_eight, p);
+ if (l <= UTF_EIGHT_MAXLEN) mystrncpy(this_err_utf_eight, p, l);
+ if ((plen=strlen(p)) < l) l = plen;
+ }
+
+ return l;
+}
+
+
+void utf_eight_emp(const char *p, int len, int pos, int oldpos)
+{
+ if (pos == oldpos)
+ {
+ utf_emp_c = reg_utf_eight(len, utf_emp_c, emp_utf_eight, p);
+ if (len <= UTF_EIGHT_MAXLEN) mystrncpy(this_emp_utf_eight, p, len);
+ }
+}
+
+
+void get_utf_eight(char in[], const char *p)
+{
+ int len, oldpos = 0, pos = 0, a;
+
+ if (*p < 0) lastupperascii = *p; /* invalid *(p+1) == '\0' */
+
+ while (*p != '\0' && *(p+1) != '\0' && pos < MAXLEN-1)
+ {
+ len = 1; /* einstelliges Zeichen, es sei denn: */
+
+ if (*p < 0)
+ {
+ lastupperascii = *p;
+
+ if (*(p+2) != '\0' && *(p+3) != '\0')
+ {
+ len = lenUTFacht(*p, *(p+1), *(p+2), *(p+3));
+ }
+ else
+ if (*(p+2) != '\0')
+ {
+ len = lenUTFacht(*p, *(p+1), *(p+2), '\0');
+ }
+ else
+ {
+ len = lenUTFacht(*p, *(p+1), '\0', '\0');
+ }
+ }
+
+ a = signeless(*p);
+
+ if (len == 2)
+ {
+ if (a == OHNINETYFOUR)
+ pos = insposmaxstr(in, get_ohninetyfour(*(p+1)), pos, MAXLEN-1);
+ else
+ if (a == OHNINETYFIVE)
+ pos = insposmaxstr(in, get_ohninetyfive(*(p+1)), pos, MAXLEN-1);
+ else
+ if (a == OHNINETYSIX)
+ pos = insposmaxstr(in, get_ohninetysix(*(p+1)), pos, MAXLEN-1);
+ else
+ if (a == OHNINETYSEVEN)
+ pos = insposmaxstr(in, get_ohninetyseven(*(p+1)), pos, MAXLEN-1);
+ else
+ if (a == 198 && signeless(*(p+1)) == 146) /* 198 146 */
+ pos = insposmaxstr(in, "{\\textflorin}", pos, MAXLEN-1);
+ else
+ if (a == OHNINETYNINE)
+ pos = insposmaxstr(in, get_ohninetynine(*(p+1)), pos, MAXLEN-1);
+ else
+ if (a == THNULLNULL)
+ pos = insposmaxstr(in, get_thnullnull(*(p+1)), pos, MAXLEN-1);
+ else
+ if (a == THNULLTHREE) pos = ins_thnullthree(in, *(p+1), pos);
+
+ utf_eight_emp(p, len, pos, oldpos);
+ }
+ else if (len == 3)
+ {
+ if (a == TRIPLETTES_BEGIN) /* 224 */
+ {
+ if (signeless(*(p+1)) == 184 && signeless(*(p+2)) == 191)
+ pos = insposmaxstr(in, "{\\textbaht}", pos, MAXLEN-1); /* 224 184 191 */
+ }
+ else
+ if (a == THTWENTYFIVE)
+ {
+ if (signeless(*(p+1)) == THTWENTYFIVE_OHEIGHTYFOUR)
+ pos = insposmaxstr(in, get_thtwentyfive_oheightyfour(*(p+2)), pos, MAXLEN-1);
+ else
+ if (signeless(*(p+1)) == THTWENTYFIVE_OHEIGHTYFIVE)
+ pos = insposmaxstr(in, get_thtwentyfive_oheightyfive(*(p+2)), pos, MAXLEN-1);
+ else
+ if (signeless(*(p+1)) == 186 && signeless(*(p+2)) == 158)
+ pos = insposmaxstr(in, "{\\SS}", pos, MAXLEN-1); /* 225 186 158 */
+ }
+ else
+ if (a == THTWENTYSIX)
+ {
+ if (signeless(*(p+1)) == THTWENTYSIX_OHTWENTYEIGHT)
+ pos = insposmaxstr(in, get_thtwentysix_ohtwentyeight(*(p+2)), pos, MAXLEN-1);
+ else
+ if (signeless(*(p+1)) == THTWENTYSIX_OHTHIRTY)
+ pos = insposmaxstr(in, get_thtwentysix_ohthirty(*(p+2)), pos, MAXLEN-1);
+ else
+ if (*(p+1) != '\0')
+ pos = ins_rest_thtwentysix(in, *(p+1), *(p+2), pos);
+ /* 226 129 ...; 226 132 ...; 226 134 ...; 226 140 ...;
+ 226 144 ...; 226 151 ...; 226 153 ...; 226 159 ... */
+ }
+ else
+ if (a == THTHIRTYNINE) /* TRIPLETTES_END */
+ {
+ if (*(p+1) != '\0')
+ pos = ins_ththirtynine(in, *(p+1), *(p+2), pos);
+ /* 239 187 ...; 239 172 ... */
+ }
+
+ utf_eight_emp(p, len, pos, oldpos);
+ }
+ else if (len == 4)
+ {
+ utf_eight_emp(p, len, pos, oldpos);
+ }
+ else if (len == 1)
+ {
+ if (*p < 0) len = utf_eight_err(p);
+ else in[pos++] = *p;
+ }
+ else if (len > UTF_EIGHT_MAXLEN) { intern_err(32); len = 1; }
+
+ oldpos = pos;
+
+ p += len;
+ }
+
+ while (*p != '\0' && pos < MAXLEN-1)
+ {
+ len = 1;
+ if (*p < 0) len = utf_eight_err(p);
+ else in[pos++] = *p;
+
+ p += len;
+ }
+
+ in[pos] = '\0';
+
+ /* printf("%% \"%s\"\n", in); */ /* !!!! */
+}
+
+
+/*--------------------------------------------------------------------------*/
+
+
void erweitert(char in[], const char *p)
{
- int pos = 0;
-
- if (encode == 1)
+ int pos = 0, len;
+
+ if (encode == IS_TONE_ENC)
{
while (*p != '\0' && pos < MAXLEN-1)
{
- if (*p < 0) pos = insposmaxstr(in, getTONEenc(upperascii = *p), pos, MAXLEN-1);
+ if (*p < 0) pos = insposmaxstr(in, getTONEenc(lastupperascii = *p), pos, MAXLEN-1);
else in[pos++] = *p;
++p;
}
@@ -3450,7 +4823,11 @@ void erweitert(char in[], const char *p)
while (*p != '\0' && pos < MAXLEN-1)
{
if (*p > 0) in[pos++] = *p;
- else upperascii = *p;
+ else
+ {
+ lastupperascii = *p;
+ thisupperascii = *p;
+ }
++p;
}
}
@@ -3459,107 +4836,110 @@ void erweitert(char in[], const char *p)
const char *transformtable[][2] = {
- { "\\\\", "[]" },
- { "\\vspace\t", "{}" },
- { "\\hspace\t", "{}" },
- { "\\nosort\t", "{}" },
- { "\\index\t", "{}" },
- { "\\glossary\t", "{}" },
- { "\\label\t", "{}" },
- { "\\pbalabel\t", "{}" },
- { "\\balabel\t", "{}" },
- { "\\pageref\t", "{}" },
- { "\\pbaref\t", "[]{}" },
- { "\\baref\t", "[]{}" },
- { "\\ref\t", "{}" },
- { "\\linebreak\t", "[]" },
- { "\\nolinebreak\t", "[]" },
- { "\\pagebreak\t", "[]" },
- { "\\nopagebreak\t", "[]" },
- { "\\footnote\t", "[]{}" },
- { "\\footnotetext\t", "[]{}" },
- { "\\footnotemark\t", "[]" },
- { "\\framebox\t", "[][]" },
- { "\\makebox\t", "[][]" },
- { "\\parbox\t", "[]{}" },
- { "\\raisebox\t", "{}[][]" },
- { "\\rule\t", "[]{}{}" },
- { "\\printonlyvqu\t", "[]{}{}*{}{}" }, /* innerVcmd */
- { "\\vqu\t", "[]{}{}*{}{}" },
- { "\\printonlyvli\t", "[]{}{}*{}{}" }, /* olny */
- { "\\vli\t", "[]{}{}*{}{}" },
- { "\\xprintonlyvqu\t", "[]{}{}*{}{}" }, /* changes */
- { "\\xvqu\t", "[]{}{}*{}{}" },
- { "\\xprintonlyvli\t", "[]{}{}*{}{}" }, /* IS_V */
- { "\\xvli\t", "[]{}{}*{}{}" },
- { "\\@shadowba\t", "{}" }, /* new. in 2.2 */
- { "\\shadowv\t", "[]{}{}{}{}" },
- { "\\addtovli\t", "[]{}{}{}{}" },
- { "\\addtovqu\t", "[]{}{}{}{}" },
- { "\\xaddtovli\t", "[]{}{}{}{}" },
- { "\\xaddtovqu\t", "[]{}{}{}{}" },
- { "\\printonlykqu\t", "[]{}*{}{}" },
- { "\\printonlykli\t", "[]{}*{}{}" },
- { "\\xprintonlykqu\t", "[]{}*{}{}" },
- { "\\xprintonlykli\t", "[]{}*{}{}" },
- { "\\shadowk\t", "[]{}{}{}" },
- { "\\addtokli\t", "[]{}{}{}" },
- { "\\addtokqu\t", "[]{}{}{}" },
- { "\\xaddtokli\t", "[]{}{}{}" },
- { "\\xaddtokqu\t", "[]{}{}{}" },
- { "\\frac\t", "{}{}" },
- { "\\vauthor\t", "{}{}" },
- { "\\midvauthor\t", "{}{}" },
- { "\\kauthor\t", "{}" },
- { "\\midkauthor\t", "{}" },
- { "\\ersch\t", "{}[]{}{}" },
- { "\\persch\t", "{}[]{}{}" },
- { "\\printonlyper\t", "{}" },
- { "\\printonlyarq\t", "[]{}{}" }, /* new in 2.2 */
- { "\\printonlydefabk\t", "{}{}" }, /* new in 2.2 */
- { "\\printonlyabkdef\t", "{}{}" }, /* new in 2.2 */
- { "\\shadowo\t", "{}" },
- { "\\addtoper\t", "{}" },
- { "\\shadowt\t", "{}{}" },
- { "\\addtoarq\t", "{}{}" },
- { "\\shadowone\t", "{}" },
- { "\\addtoabk\t", "{}" },
- { "\\addtogrr\t", "{}" },
- { "\\addtoprr\t", "{}" },
- { "\\addtosrr\t", "{}" },
- { "\\shadowtwo\t", "{}{}" },
- { "\\fillper\t", "{}{}" },
- { "\\fillarq\t", "{}{}" },
- { "\\fillgrr\t", "{}{}" },
- { "\\fillprr\t", "{}{}" },
- { "\\fillsrr\t", "{}{}" },
- { "\\addtodefabk\t", "{}{}" },
- { "\\addtoabkdef\t", "{}{}" },
- { "\\errmessage\t", "{}" },
- { "\\GenericError\t", "{}{}{}{}" },
- { "\\message\t", "{}" },
- { "\\typeout\t", "{}" },
- { "\\mathhexbox\t", "{}{}{}" },
- { "\\phantom\t", "{}" },
- { "\\vphantom\t", "{}" },
- { "\\hphantom\t", "{}" },
- { "\\showhyphens\t", "{}" },
- {"\\sethyphenation\t", "{}" },
- {"\\selectlanguage\t", "{}" },
- { "\\discretionary\t", "{}{}" },
- { "\\pstressing\t", "{}" },
- { "\\stressing\t", "{}" },
- { "\\pxbibmark\t", "{}{}" }, /* Nur \\p... */
- { "\\pxbibref\t", "{}" }, /* bearbeiten! */
- { "\\pbibmark\t", "{}" },
- { "\\bibmark\t", "{}" },
- { KURZCMD, "{}" },
- { "\\delkurz\t", "{}" },
- { "\\begin\t", "{}" },
- { "\\end\t", "{}" },
- { "\\pfordinal\t", "{}" }, /* new in 2.2 */
+ { "\\\\", "[]" },
+ { "\\vspace\t", "{}" },
+ { "\\hspace\t", "{}" },
+ { "\\nosort\t", "{}" },
+ { "\\index\t", "{}" },
+ { "\\glossary\t", "{}" },
+ { "\\label\t", "{}" },
+ { "\\pbalabel\t", "{}" },
+ { "\\balabel\t", "{}" },
+ { "\\pageref\t", "{}" },
+ { "\\pbaref\t", "[]{}" },
+ { "\\baref\t", "[]{}" },
+ { "\\ref\t", "{}" },
+ { "\\linebreak\t", "[]" },
+ { "\\nolinebreak\t", "[]" },
+ { "\\pagebreak\t", "[]" },
+ { "\\nopagebreak\t", "[]" },
+ { "\\footnote\t", "[]{}" },
+ { "\\footnotetext\t", "[]{}" },
+ { "\\footnotemark\t", "[]" },
+ { "\\framebox\t", "[][]" },
+ { "\\makebox\t", "[][]" },
+ { "\\parbox\t", "[]{}" },
+ { "\\raisebox\t", "{}[][]" },
+ { "\\rule\t", "[]{}{}" },
+ { "\\printonlyvqu\t", "[]{}{}*{}{}" }, /* innerVcmd */
+ { "\\vqu\t", "[]{}{}*{}{}" },
+ { "\\printonlyvli\t", "[]{}{}*{}{}" }, /* olny */
+ { "\\vli\t", "[]{}{}*{}{}" },
+ { "\\xprintonlyvqu\t", "[]{}{}*{}{}" }, /* changes */
+ { "\\xvqu\t", "[]{}{}*{}{}" },
+ { "\\xprintonlyvli\t", "[]{}{}*{}{}" }, /* IS_V */
+ { "\\xvli\t", "[]{}{}*{}{}" },
+ { "\\@shadowba\t", "{}" }, /* new. in 2.2 */
+ { "\\shadowv\t", "[]{}{}{}{}" },
+ { "\\addtovli\t", "[]{}{}{}{}" },
+ { "\\addtovqu\t", "[]{}{}{}{}" },
+ { "\\xaddtovli\t", "[]{}{}{}{}" },
+ { "\\xaddtovqu\t", "[]{}{}{}{}" },
+ { "\\printonlykqu\t", "[]{}*{}{}" },
+ { "\\printonlykli\t", "[]{}*{}{}" },
+ { "\\xprintonlykqu\t", "[]{}*{}{}" },
+ { "\\xprintonlykli\t", "[]{}*{}{}" },
+ { "\\shadowk\t", "[]{}{}{}" },
+ { "\\addtokli\t", "[]{}{}{}" },
+ { "\\addtokqu\t", "[]{}{}{}" },
+ { "\\xaddtokli\t", "[]{}{}{}" },
+ { "\\xaddtokqu\t", "[]{}{}{}" },
+ { "\\frac\t", "{}{}" },
+ { "\\vauthor\t", "{}{}" },
+ { "\\midvauthor\t", "{}{}" },
+ { "\\kauthor\t", "{}" },
+ { "\\midkauthor\t", "{}" },
+ { "\\ersch\t", "{}[]{}{}" },
+ { "\\persch\t", "{}[]{}{}" },
+ { "\\printonlyper\t", "{}" },
+ { "\\printonlyarq\t", "[]{}{}" }, /* new in 2.2 */
+ { "\\printonlydefabk\t", "{}{}" }, /* new in 2.2 */
+ { "\\printonlyabkdef\t", "{}{}" }, /* new in 2.2 */
+ { "\\shadowo\t", "{}" },
+ { "\\addtoper\t", "{}" },
+ { "\\shadowt\t", "{}{}" },
+ { "\\addtoarq\t", "{}{}" },
+ { "\\shadowone\t", "{}" },
+ { "\\addtoabk\t", "{}" },
+ { "\\addtogrr\t", "{}" },
+ { "\\addtoprr\t", "{}" },
+ { "\\addtosrr\t", "{}" },
+ { "\\shadowtwo\t", "{}{}" },
+ { "\\fillper\t", "{}{}" },
+ { "\\fillarq\t", "{}{}" },
+ { "\\fillgrr\t", "{}{}" },
+ { "\\fillprr\t", "{}{}" },
+ { "\\fillsrr\t", "{}{}" },
+ { "\\addtodefabk\t", "{}{}" },
+ { "\\addtoabkdef\t", "{}{}" },
+ { "\\errmessage\t", "{}" },
+ { "\\GenericError\t", "{}{}{}{}" },
+ { "\\message\t", "{}" },
+ { "\\typeout\t", "{}" },
+ { "\\mathhexbox\t", "{}{}{}" },
+ { "\\phantom\t", "{}" },
+ { "\\vphantom\t", "{}" },
+ { "\\hphantom\t", "{}" },
+ { "\\showhyphens\t", "{}" },
+ { "\\sethyphenation\t", "{}" },
+ { "\\selectlanguage\t", "{}" },
+ { "\\discretionary\t", "{}{}" },
+ { "\\pstressing\t", "{}" },
+ { "\\stressing\t", "{}" },
+ { "\\pxbibmark\t", "{}{}" }, /* Nur \\p... */
+ { "\\pxbibref\t", "{}" }, /* bearbeiten! */
+ { "\\pbibmark\t", "{}" },
+ { "\\bibmark\t", "{}" },
+ { KURZCMD, "{}" },
+ { "\\delkurz\t", "{}" },
+ { "\\begin\t", "{}" },
+ { "\\end\t", "{}" },
+ { "\\pfordinal\t", "{}" }, /* new in 2.2 */
+ {"\\@inpenc@undefined@\t", "{}" }, /* new in 2.3 */
+ {"\\G@refundefinedtrue\t", "{}" }, /* new in 2.3 */
+ { "\\GenericWarning\t", "{}{}" }, /* new in 2.3 */
{ NULL, NULL }};
-#define NUMTRANSV 99
+#define NUMTRANSV 102
/* Muessen im Bereich von issonder liegen: */
@@ -3578,20 +4958,30 @@ char *bracketsformward(char *q, char c)
}
+int len_if_has_bra(const char *p, const char opench, const char closech)
+{
+ int l, r = 0;
+
+ if (*p == opench && (l=nextbracket(p, opench, closech)) > 0) r = l;
+
+ return r;
+}
+
+
void exchange_v(char *p, const char *bra, int num)
{
int l = 0, la = 0, i = 0, lb = 0, j = 0, k;
char buf[MAXLEN], fub[MAXLEN], *lp = p, *anf = p;
while (*p == ' ') { ++p; ++la; }
- if ((l=nextbracket(p, *(bra+(3*num+1)), *(bra+(3*num+2)))) > 0)
+ if ((l=len_if_has_bra(p, *(bra+(3*num+1)), *(bra+(3*num+2)))) > 0)
{
la += l; while (i < la) buf[i++] = *lp++;
p += l;
if (*(bra+(3*(num+1))) == '')
{
while (*p == ' ') { ++p; ++lb; }
- if ((l=nextbracket(p, *(bra+(3*(num+1)+1)), *(bra+(3*(num+1)+2)))) > 0)
+ if ((l=len_if_has_bra(p, *(bra+(3*(num+1)+1)), *(bra+(3*(num+1)+2)))) > 0)
{
lb += l; while (j < lb) fub[j++] = *lp++;
k = 0; while (k < j) *anf++ = fub[k++];
@@ -3603,7 +4993,72 @@ void exchange_v(char *p, const char *bra, int num)
}
-char *handletransformarg(char *p, const char *bra)
+int len_all_arg(const char *p, const char opench, const char closech)
+{
+ int l = 0, r = 0;
+
+ if (*p == opench && (l=nextbracket(p, opench, closech)) > 0) r = l;
+ else
+ if ('{' == opench)
+ {
+ if (*p == '\\' && *(p+1) != '\0' && isLaTeXcmdletter(*(p+1)) == 0) r = 2;
+ else
+ if (*p == '\\' && *(p+1) != '\0' && isLaTeXcmdletter(*(p+1)) == 1)
+ {
+ r += 2; p += 2;
+ while (*p != '\0' && isLaTeXcmdletter(*p) == 1) { ++r; ++p; }
+ while (*p == ' ') { ++r; ++p; }
+ }
+ else
+ if (*p != '{' && *p != '\0') r = 1;
+ }
+
+ return r;
+}
+
+
+char *ins_bracket(char *s, const char opench, const char closech, int l)
+{
+ char buf[MAXLEN] = { opench, '\0' }, b[2] = { closech, '\0' };
+
+ strncat(buf, s, l);
+ strcat (buf, b);
+ strcat(buf, s+l);
+ strcpy(s, buf);
+ return s;
+}
+
+
+char *over_handled_TeX_arg(char *s, char *q, const char left_ch, const char right_ch)
+{
+ int l;
+
+ while (*q == ' ') ++q;
+
+ if ((l=len_if_has_bra(q, left_ch, right_ch)) < 2)
+ {
+ if ( (l=len_all_arg(q, left_ch, right_ch)) > 0
+ && strlen(s) < MAXLEN-2
+ )
+ { /* ins_bracket inserts 2 characters: */
+ q = ins_bracket(q, left_ch, right_ch, l);
+ q += l+1;
+ q = bracketsformward(q, right_ch);
+ ++q;
+ }
+ }
+ else
+ {
+ q += l-1;
+ q = bracketsformward(q, right_ch);
+ ++q;
+ }
+
+ return q;
+}
+
+
+char *handletransformarg(char *s, char *p, const char *bra)
{
int l = 0, num = 0;
char *q = p;
@@ -3613,7 +5068,7 @@ char *handletransformarg(char *p, const char *bra)
if ('' == *(bra+(3*num)) || '' == *(bra+(3*num)))
{
while (*q == ' ') ++q;
- if ((l=nextbracket(q, *(bra+(3*num+1)), *(bra+(3*num+2)))) < 2) l = 0;
+ if ((l=len_all_arg(q, *(bra+(3*num+1)), *(bra+(3*num+2)))) < 1) l = 0; /* changed in 2.3 */
q += l;
if ('' == *(bra+(3*num)))
{
@@ -3676,17 +5131,15 @@ char *handletransformarg(char *p, const char *bra)
p = q;
}
else
- if ('' == *(bra+(3*num)) || '' == *(bra+(3*num)) || '' == *(bra+(3*num)))
+ if ('' == *(bra+(3*num)))
+ {
+ q = over_handled_TeX_arg(s, q, *(bra+(3*num+1)), *(bra+(3*num+2))); /* changed in 2.3 */
+ }
+ else
+ if ('' == *(bra+(3*num)) || '' == *(bra+(3*num)))
{
if ('' == *(bra+(3*num))) exchange_v(q, bra, num);
- while (*q == ' ') ++q;
- if ((l=nextbracket(q, *(bra+(3*num+1)), *(bra+(3*num+2)))) < 2) l = 0;
- if (l > 0)
- {
- q += l-1;
- q = bracketsformward(q, *(bra+(3*num+2)));
- ++q;
- }
+ q = over_handled_TeX_arg(s, q, *(bra+(3*num+1)), *(bra+(3*num+2))); /* changed in 2.3 */
}
else
if ('*' == *(bra+(3*num)))
@@ -3695,14 +5148,7 @@ char *handletransformarg(char *p, const char *bra)
if (*q == '*')
{ *q = OPTSTAR;
++q;
- while (*q == ' ') ++q;
- if ((l=nextbracket(q, *(bra+(3*num+1)), *(bra+(3*num+2)))) < 2) l = 0;
- if (l > 0)
- {
- q += l-1;
- q = bracketsformward(q, *(bra+(3*num+2)));
- ++q;
- }
+ q = over_handled_TeX_arg(s, q, *(bra+(3*num+1)), *(bra+(3*num+2))); /* changed in 2.3 */
}
}
++num;
@@ -3715,6 +5161,7 @@ char *handletransformarg(char *p, const char *bra)
void transformline(char buf[], char *p)
{
int pos = 0, i, l;
+ char *s = p;
while (*p != '\0' && pos < MAXLEN-2)
{
@@ -3724,7 +5171,7 @@ void transformline(char buf[], char *p)
{
if (*(p+1) == '\\') buf[pos++] = ' ';
p += llstrlen(transformtable[i][0]);
- p = handletransformarg(p, transformtable[i][1]);
+ p = handletransformarg(s, p, transformtable[i][1]);
}
else buf[pos++] = *p++;
}
@@ -3747,6 +5194,10 @@ void transformline(char buf[], char *p)
}
buf[pos] = '\0';
+
+ /*
+ if (pos > MAXLEN-4 && *p != '\0') printf("%%%%\n%%%%> Error: Can\'t sort ...\n");
+ */
}
@@ -3805,14 +5256,15 @@ void vorbereiten(int linec, int alllines, int deepsort, int ventry)
i = 0; while (i < MAXBACOLS) subBptr[i++][linec] = mydefault;
i = 0; while (i < MAXBACOLS) subCptr[i++][linec] = mydefault;
-
i = 0;
while (i < deepsort)
{
nosondercpy ( in, overbago(subAptr[i][linec]));
- transformline(buf, in); /* veraendert zweites Arg! */
- erweitert ( in, buf);
- p = austauschen(buf, in, dqsort[linec]);
+ transformline(buf, in); /* veraendert zweites Arg! */
+ if (encode == IS_UTFE_ENC)
+ get_utf_eight ( in, buf);
+ else erweitert ( in, buf);
+ p = austauschen(buf, in, dqsort[linec]);
pos = 0; last = '\0';
@@ -4327,6 +5779,29 @@ void del_ktitintro(char *s)
}
+int findauthor(const char *s)
+{
+ int r = 0;
+
+ while(*s != '\0')
+ {
+ if (*s == '\\')
+ {
+ if (*(s+1) == '\\')
+ {
+ ++s; ++r;
+ }
+ else if (texlistnum(s, NAUTHOR, authortable) > -1) break;
+ }
+ ++s; ++r;
+ }
+
+ if (*s == '\0') r = -1;
+
+ return r;
+}
+
+
int writetheline(char *p, const int nlines, const int line, const int deepsort, int filec, int printsort, int kandkused, int oktitused)
{
int doprint = 0, pagenum = 0, fntnum = 0, uu = 0, tn = getthirdnum(line), j, ok, ie, sha, tha, uha, oerr;
@@ -4465,6 +5940,12 @@ int writetheline(char *p, const int nlines, const int line, const int deepsort,
}
+ if ( ex_n == EXCHANGENAMES
+ && leval[line] != DOUBLELINE
+ && (j=findauthor(p)) > -1
+ ) fprintf(outfile, "%%%% <- Error: Can\'t exchange {FirstName} and {FamilyName} after cmd on pos %d (bad brackets).\n", j+1);
+
+
if (doprint > 3) { fprintf(outfile, "%%%% <- TextArg-Warning");
if (uu == 0) fprintf(outfile, " (NUMBERS of entry are not necessarily rejected)");
fprintf(outfile, ":\n");
@@ -4539,12 +6020,39 @@ void outhline(void)
}
+void fprintsquence(FILE *file, const char *utf)
+{
+ while (*utf != '\0')
+ {
+ fprintf(file, "%d", ((unsigned char)*utf));
+ if (*(utf+1) != '\0') fprintf(file, "-");
+ ++utf;
+ }
+}
+
+
+void fprint_utf_msg(FILE *file, const char utf[], int mod)
+{
+ if (encode == IS_UTFE_ENC && utf[0] < 0)
+ {
+ fprintf(file, "%%%%\n%%%% -utf8 : Did not ");
+ if (mod == 0) fprintf(file, "know the meaning of \'%s\' (", utf);
+ else { fprintf(file, "sort invalid utf8 sequences (like ");
+ if (utf[1] == '\0')
+ fprintf(file, "a single char ");
+ }
+ fprintsquence(file, utf);
+ fprintf(file, ").\n%%%% Only the last error is reported here; also see screen.\n%%%%\n");
+ }
+}
+
+
void printfilelist(FILE *file, int filec, int cc, const char *vor, const char *nach)
{
int i = 0;
if (cc == 1)
- fprintf(file, "\n%%%% BibArts 2.2 (C) Timo Baumann 2019 [%s]\n", __DATE__);
+ fprintf(file, "\n%%%% BibArts 2.3 (C) Timo Baumann 2021 [%s]\n", __DATE__);
fprintf(file, "%%%%\n");
timestamp(file);
@@ -4556,8 +6064,10 @@ void printfilelist(FILE *file, int filec, int cc, const char *vor, const char *n
if (ignorespaces == 1) fprintf(file, " -l");
if (hy_as_space == 1) fprintf(file, " -h");
if (registpoints == 1) fprintf(file, " -p");
- if (encode == 1) fprintf(file, " -t1");
+ if (encode == IS_TONE_ENC) fprintf(file, " -t1");
+ if (encode == IS_UTFE_ENC) fprintf(file, " -utf8");
if (kill == DOKILLAUTHORS) fprintf(file, " -k");
+ if (ex_n == EXCHANGENAMES) fprintf(file, " -e");
if (EinlROEMseiten == 1) fprintf(file, " -s1");
if (ALPHmpfootnotes == 1) fprintf(file, " -f1");
if ( get_R_pg == BA_TRUE
@@ -4580,8 +6090,9 @@ void printfilelist(FILE *file, int filec, int cc, const char *vor, const char *n
&& ignorespaces == 0
&& hy_as_space == 0
&& registpoints == 0
- && encode == 0
+ && encode == IS_BASE_ENC
&& kill != DOKILLAUTHORS
+ && ex_n == NOTEXCHANGENAMES
&& EinlROEMseiten == 0
&& ALPHmpfootnotes == 0
&& (get_R_fn == BA_FALSE && get_A_fn == BA_FALSE && get_a_fn == BA_FALSE && get_r_fn == BA_FALSE)
@@ -4593,6 +6104,11 @@ void printfilelist(FILE *file, int filec, int cc, const char *vor, const char *n
) fprintf(file, " Default");
fprintf(file, "%s\n", nach);
+ if (encode == IS_BASE_ENC && thisupperascii < 0) fprintf(file, "%%%%\n%%%% *** Codepage error: ASCIIs > 127 like %d found, but you did not say -utf8 or -t1.\n%%%%\n", ((unsigned char)thisupperascii));
+
+ fprint_utf_msg(file, this_emp_utf_eight, 0);
+ fprint_utf_msg(file, this_err_utf_eight, 1);
+
if (igleichj == 1 && cc == 1) fprintf(file, "%%%% \n%%%% Note, that you will not see i=j in %s lines here.\n", METALINEHEAD); /* "-m" + "-i=j" */
fprintf(file, "%%%%\n%%%%> Input file list:\n");
@@ -6041,36 +7557,6 @@ void pauthorbrackwarn(int nline, const char *head)
}
-const char *authortable[][2] = {
- { "\\vauthor\t", "\\vauthor" },
- { "\\midvauthor\t", "\\midvauthor" },
- {NULL, NULL}};
-#define NAUTHOR 2
-
-
-int findauthor(const char *s)
-{
- int r = 0;
-
- while(*s != '\0')
- {
- if (*s == '\\')
- {
- if (*(s+1) == '\\')
- {
- ++s; ++r;
- }
- else if (texlistnum(s, NAUTHOR, authortable) > -1) break;
- }
- ++s; ++r;
- }
-
- if (*s == '\0') r = -1;
-
- return r;
-}
-
-
int subdoubleauthors(int found, int addtxt, char a[], int remi, int i, const char *q, const char *p, int qline, int pline, int fe, char xx[])
{
int ql = 0, pl, len, haveto, havedone = 0, ntxt = 0, nn, j;
@@ -6636,16 +8122,126 @@ int check_ktit(int nlines, int ventry)
}
+char *fill_vbuf(char *b, char *p)
+{
+ char *a = b;
+ int arglen;
+
+ while (*p == ' ') *b++ = *p++;
+
+ arglen = nextbracket(p, '{', '}');
+
+ if (arglen > 1 && *p == '{')
+ {
+ while (arglen-- > 0) *b++ = *p++;
+ }
+ else
+ {
+ b = a;
+ }
+
+ *b = '\0';
+
+ return p;
+}
+
+
+#define MAX_EX_ERR 5
+
+int lastname_first(int nlines)
+{
+ int i = 0, pos, j, k, ex_err = 0, ex_used = 0;
+ char *p, bufa[MAXLEN], bufb[MAXLEN], *bega, *begp, *begc;
+
+
+ while (i < nlines)
+ {
+ p = lineptr[i];
+ begp = p;
+
+
+ while ((pos=findauthor(p)) > -1)
+ {
+ ++ex_used;
+
+ p += pos;
+ begc = p;
+
+ while (*p != '{' && *p != '}' && *p != ' ' && *p != '\0') ++p;
+ bega = p;
+
+ p = fill_vbuf (bufa, p);
+
+ p = fill_vbuf (bufb, p);
+
+
+ if (*(begc) == '\0' || *(begc+1) == '\0' || *(begc+2) == '\0')
+ {
+ intern_err(31);
+ }
+ else
+ {
+ if (bufb[0] != '\0' && bufa[0] != '\0')
+ {
+ *(begc+2) = '@'; /* \v@uthor \m@dvauthor */
+
+ j = 0;
+ k = 0;
+
+ if (bufa[0] == ' ' && bufb[0] == '{')
+ {
+ *bega++ = bufa[k++];
+ }
+
+ while (bufb[j] != '\0') *bega++ = bufb[j++];
+
+ while (bufa[k] != '\0') *bega++ = bufa[k++];
+ }
+ else
+ {
+ if (ex_err < MAX_EX_ERR)
+ {
+ printf("%%%%\n%%%%> Warning: Can\'t identify the brackets of ");
+ if (bufa[0] == '\0') printf(" {arg1}");
+ if (bufb[0] == '\0') printf(" {arg2}");
+ printf(" after your cmd:\n");
+ printf("%%%% \"%.*s", 30, begc);
+ if (strlen(begc) > 30) printf(" ...");
+ printf("\" (entry from %s).\n", subRptr[LINECOL][i]);
+ }
+ else
+ if (ex_err == MAX_EX_ERR)
+ {
+ printf("%%%%\n%%%%> -e: Do not report further error details.\n");
+ }
+ ++ex_err;
+ }
+ }
+ }
+
+ ++i;
+ }
+
+ if (ex_used > 0)
+ return ex_err;
+ else
+ return -1;
+}
+
+
void prepareoutput(const char *entry, const char *suffix, int deep, int deepsort, int filec, char *arg_i, char *arg_o, int prep_kill, const char *formO, int ventry, int printsort)
{
int nlines = 0, i = 0, extralines = 0, commentANDignlines = 0;
- int filenum = -1, kandkused = 0, oktitused = 0;
+ int filenum = -1, kandkused = 0, oktitused = 0, ex_err;
char *outname = mydefault;
if (arg_o == NULL) outname = makename(arg_i, suffix);
else outname = makename(arg_o, suffix);
otherktiterr = 0;
+ thisupperascii = 0;
+ mystrncpy(this_emp_utf_eight, "", UTF_EIGHT_MAXLEN);
+ mystrncpy(this_err_utf_eight, "", UTF_EIGHT_MAXLEN);
while (i < filec)
{
@@ -6665,10 +8261,13 @@ void prepareoutput(const char *entry, const char *suffix, int deep, int deepsort
/* printf("\nB: "); testdrucken(0, nlines, deep, subBptr); */
/* printf("\nA: "); testdrucken(0, nlines, deep, subAptr); */
/* testdrucken(0, nlines, BAALLRCOLS, subRptr); */
-
+
+
if (nlines > 0)
- {
+ {
+ ++get_jobs;
+
if (nlines > 1) printf("%%%% Sort %d lines. Wait.\n", nlines);
QQsort(0, nlines-1, deep, deepsort);
@@ -6708,6 +8307,17 @@ void prepareoutput(const char *entry, const char *suffix, int deep, int deepsort
kandkused = check_kandk(nlines);
oktitused = check_ktit(nlines, ventry);
+ if (ex_n == EXCHANGENAMES)
+ {
+ ex_err = lastname_first(nlines);
+ if (ex_err > 0)
+ {
+ printf("%%%%\n%%%%> -e: ... the exchange of {FirstName} and {FamilyName} args\n");
+ printf("%%%% after %s or %s *failed* in %d case(s).\n%%%%\n", authortable[0][1], authortable[1][1], ex_err);
+ }
+ /* not used: ex_err < 0 */
+ }
+
if ((outfile = fopen(outname, "w")) == NULL)
{
printf("%%%%\n%%%%> Error: Can\'t write to file \"%s\".\n", outname);
@@ -6864,18 +8474,74 @@ void print_arg_list(char *argv[], int argc)
}
+void printhex(int n)
+{
+ printf(" (U+");
+ if (n < 256) printf("0");
+ if (n < 4096) printf("0");
+ printf("%X)", n);
+}
+
+
+void print_utf_msg(const char err[UTF_EIGHT_MAXERR][UTF_EIGHT_MAXLEN+1], int err_c, const char *msg_a, const char *msg_b, const char *msg_c, const char *msg_d, const char *msg_e, const char *msg_f)
+{
+ int i, j = 0, a, b, c, d, len;
+
+ if (err_c > 0)
+ {
+ printf("%%%%\n");
+ fprintf(stderr, "%%%%> -utf8 : I did %s %s utf8 sequences.\n", msg_d, msg_b);
+
+ while (j < err_c && j < UTF_EIGHT_MAXERR)
+ {
+ printf("%%%%> %s utf8 sequence ", msg_a);
+ if (err[j][1] == '\0') printf("beginning with char ");
+ i = 0; while(err[j][i] != '\0') { printf("%d", ((unsigned char)err[j][i])); if(err[j][i+1] != '\0') printf("-"); ++i; }
+
+ a = ((unsigned char)err[j][0]);
+ b = ((unsigned char)err[j][1]);
+ c = ((unsigned char)err[j][2]);
+ d = ((unsigned char)err[j][3]);
+
+ len = lenUTFacht(a, b, c, d);
+
+ /* 64 = (UTF_BLOCK_END - UTF_BLOCK_BEGIN + 1) */
+
+ if (len == 2) printhex((a - DOUBLETTES_BEGIN) * 64 + b);
+ if (len == 3) printhex((a - TRIPLETTES_BEGIN) * 4096 + (b - 128) * 64 + (c - 128));
+ if (len == 4) printhex((a - QUADRUPLES_BEGIN) * 262144 + (b - 128) * 4096 + (c - 128) * 64 + (d - 128));
+
+ printf(" %s.\n", msg_c);
+ ++j;
+ }
+
+ if (err_c >= UTF_EIGHT_MAXERR) printf("%%%% (Max. %d different %s sequences are reported.)\n", UTF_EIGHT_MAXERR, msg_e);
+ printf("%%%% %s\n", msg_f);
+ }
+}
+
+
+void no_upperascii_found_msg(const char *msg)
+{
+ if (get_jobs > 0)
+ {
+ printf("%%%%\n%%%%> %s unnecessary yet: No ASCIIs > 127 found!\n", msg);
+ }
+}
+
+
int main(int argc, char *argv[])
{
int nlines = 0;
int usedospath = 0;
int filec = 0;
- int get_g = 0;
+ int get_g = 0, get_cp = 0;
int printsort = 0;
char *inname = mydefault, *arg_i = NULL, *arg_o = NULL;
- printf("\n%%%%> This is bibsort 2.2 (for help: %s -\?)\n", getmyname(argv[0], 37));
- fprintf(stderr, "%%%% bibsort 2.2 is part of BibArts 2.2 (C) Timo Baumann 2019.\n");
+ printf("\n%%%%> This is bibsort 2.3 (for help: %s -\?)\n", getmyname(argv[0], 37));
+ fprintf(stderr, "%%%% bibsort 2.3 is part of BibArts 2.3 (C) Timo Baumann 2021.\n");
argc = single_option(argc, argv, "-B", "-b");
@@ -6966,6 +8632,12 @@ int main(int argc, char *argv[])
kill = DOKILLAUTHORS;
}
+ argc = single_option(argc, argv, "-E", "-e");
+ if (argc < 0)
+ { argc = -argc;
+ ex_n = EXCHANGENAMES;
+ }
+
argc = single_option(argc, argv, "-L", "-l");
if (argc < 0)
{ argc = -argc;
@@ -6984,12 +8656,28 @@ int main(int argc, char *argv[])
registpoints = 1;
}
+
argc = single_option(argc, argv, "-T1", "-t1");
if (argc < 0)
{ argc = -argc;
- encode = 1;
+ ++get_cp;
+ encode = IS_TONE_ENC;
+ }
+
+ argc = single_option(argc, argv, "-utf8", "-UTF8");
+ if (argc < 0)
+ { argc = -argc;
+ ++get_cp;
+ encode = IS_UTFE_ENC;
+ }
+
+ if (get_cp > 1)
+ {
+ announceexit("get opt -t1 *and* -utf8");
+ exit(1);
}
+
argc = single_option(argc, argv, "-X", "-x");
if (argc < 0)
{ argc = -argc;
@@ -7002,6 +8690,7 @@ int main(int argc, char *argv[])
printsort = 1;
}
+
argc = single_option(argc, argv, "-G1", "-g1");
if (argc < 0)
{ argc = -argc;
@@ -7022,6 +8711,7 @@ int main(int argc, char *argv[])
exit(1);
}
+
argc = single_option(argc, argv, "-\?", "-h1"); /* 2.2: -h => hyphen */
if (argc < 0)
{
@@ -7035,11 +8725,20 @@ int main(int argc, char *argv[])
if (argc < 0)
{
argc = -argc;
- moreinfo();
+ moreinfo(argv[0]);
announceexit("get your question for more help");
exit(1);
}
+ argc = single_option(argc, argv, "-\?\?\?", "-h3"); /* new in 2.3 */
+ if (argc < 0)
+ {
+ argc = -argc;
+ moremoreinfo(argv[0]);
+ announceexit("get your question for more more help");
+ exit(1);
+ }
+
argc = single_option(argc, argv, "-R", "-r");
if (argc < 0)
{
@@ -7149,21 +8848,37 @@ int main(int argc, char *argv[])
- if (upperascii < 0)
- {
- if (encode == 1)
- {
- printf("%%%%\n%%%%> -t1: Gave 8-bit character %d sorting weight \"%s\" ....\n", ((unsigned char)upperascii), getTONEenc(upperascii));
- fprintf(stderr, "%%%% Did NOT ignore upper ascii characters ({T1} and no {inputenc} assumed).\n");
- }
- else
- {
- printf("%%%%\n%%%%> Info: Gave 8-bit character %d NO sorting weight. Use -t1\?\n", ((unsigned char)upperascii));
- fprintf(stderr, "%%%% Did ignore all upper ascii characters ({OT1} and no {inputenc} assumed).\n");
- }
+ if (encode == IS_BASE_ENC && lastupperascii < 0)
+ {
+ printf("%%%%\n%%%%> Default encoding: Gave ASCIIs > 127 like %d NO sorting weight.\n", ((unsigned char)lastupperascii));
+ fprintf(stderr, "%%%% Did ignore all ASCIIs > 127. Start me using -utf8 or -t1 \?\n");
+ printf("%%%% *******\n");
}
- else if (encode == 1)
- printf("%%%%\n%%%%> -t1 is unnecessary: No upper ascii characters found.\n");
+
+
+ if (encode == IS_TONE_ENC && lastupperascii < 0)
+ {
+ printf("%%%%\n%%%%> -t1 : Sort ASCIIs > 127 (%d as %s etc.).\n", ((unsigned char)lastupperascii), getTONEenc(lastupperascii));
+ fprintf(stderr, "%%%%> -t1 : \\UseRawInputEncoding expected.\n");
+ }
+
+
+ if (encode == IS_TONE_ENC && lastupperascii == 0)
+ {
+ no_upperascii_found_msg("-t1");
+ }
+
+
+ if (encode == IS_UTFE_ENC)
+ {
+ print_utf_msg(err_utf_eight, utf_err_c, "Invalid", "invalid", "found", "ignore all", "invalid", "Are you sure, that your text editor uses utf8 \?");
+ print_utf_msg(emp_utf_eight, utf_emp_c, "Gave", "all your", "no sorting weight", "not know the meaning of", "unknown", "Better replace this sequence(s) by LaTeX-cmds in your text.");
+ if (lastupperascii == 0) no_upperascii_found_msg("-utf8");
+ }
+
+
+ if (get_jobs == 0) printf("%%%%\n%%%%> Nothing to do!\n");
+
return 0;
}