summaryrefslogtreecommitdiff
path: root/Build/source/texk/makeindexk/tests
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2011-09-24 16:02:10 +0000
committerKarl Berry <karl@freefriends.org>2011-09-24 16:02:10 +0000
commitc56636b114c0aa62facb8d8cff9a23af24c957ce (patch)
treedff5b73ee745f91b122446a87cd6588f7800eeef /Build/source/texk/makeindexk/tests
parent54aaaeae8a91ae3f70ada46c5b4baf3430ded227 (diff)
do not output spurious \( when open range is re-opened
git-svn-id: svn://tug.org/texlive/trunk@24079 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/makeindexk/tests')
-rw-r--r--Build/source/texk/makeindexk/tests/nested-range-bb.idx6
-rw-r--r--Build/source/texk/makeindexk/tests/nested-range-bb.tex72
-rwxr-xr-xBuild/source/texk/makeindexk/tests/nested-range-test.pl29
-rw-r--r--Build/source/texk/makeindexk/tests/nested-range.idx3
-rw-r--r--Build/source/texk/makeindexk/tests/nested-range.tex33
5 files changed, 143 insertions, 0 deletions
diff --git a/Build/source/texk/makeindexk/tests/nested-range-bb.idx b/Build/source/texk/makeindexk/tests/nested-range-bb.idx
new file mode 100644
index 00000000000..6575c81ab54
--- /dev/null
+++ b/Build/source/texk/makeindexk/tests/nested-range-bb.idx
@@ -0,0 +1,6 @@
+\indexentry{random text|(}{1}
+\indexentry{periodic Hilbert transform|(}{1}
+\indexentry{periodic Hilbert transform|(}{2}
+\indexentry{random text|(}{2}
+\indexentry{periodic Hilbert transform|)}{2}
+\indexentry{random text|)}{2}
diff --git a/Build/source/texk/makeindexk/tests/nested-range-bb.tex b/Build/source/texk/makeindexk/tests/nested-range-bb.tex
new file mode 100644
index 00000000000..d2366dd6ccf
--- /dev/null
+++ b/Build/source/texk/makeindexk/tests/nested-range-bb.tex
@@ -0,0 +1,72 @@
+% Copyright 2011 Barbara Beeton <tex-live@tug.org>
+% You may freely use, modify and/or distribute this file.
+% This is the original annotated test report, with various extra info.
+% See below \end{document}.
+\documentclass{amsbook}
+\usepackage{verbatim}
+
+\makeindex
+
+\begin{document}
+
+\chapter{Demonstration of a Makeindex bug}
+
+\index{random text|(}%
+Here we open an index span for ``random text''.
+
+\index{periodic Hilbert transform|(}%
+How could we define the \emph{periodic Hilbert transform}?
+Here is an open index span for ``periodic Hilbert transform''.
+
+(lots more text omitted)
+\newpage
+
+We defined in Section~3 the
+\index{periodic Hilbert transform|(}%
+\emph{periodic Hilbert transform} or \emph{conjugate function}.
+A second open index span for ``periodic Hilbert transform''.
+
+\index{random text|(}%
+(more omitted text and a second open index span for ``random text'')
+
+Closing index spans for the two opened entries.
+\index{periodic Hilbert transform|)}%
+\index{random text|)}%
+
+\vspace{1\baselineskip}
+\verbatiminput{\jobname.tex}
+\newpage
+\noindent This is the .idx file from the previous run:
+\verbatiminput{\jobname.idx-prev}
+\vspace{2\baselineskip}
+This is the resulting .ilg file:
+\verbatiminput{\jobname.ilg}
+\vspace{2\baselineskip}
+And the resulting .ind file; note spurious \verb+\(+ inclusions.
+\verbatiminput{\jobname.ind}
+\end{document}
+
+
+Date: Thu, 22 Sep 2011 12:23:48 -0400
+From: Barbara Beeton
+Subject: a makeindex bug
+
+[...]
+
+to get the desired output, run latex, then makeindex.
+copy or rename <jobname>.idx to <jobname>.idx-prev,
+rerun latex, and take a look at the output. (the
+reason for the rename is that i've included in the
+output listings of the .idx(-prev), .ilg, and .ind
+files, all small, but very interesting.)
+
+the problem is that if a span is begun for a string
+and then a second span is begun for the same string
+without the first one being closed, the |( in the
+input is put into the output as \( -- with the
+result that an attempt to print the index will get
+an unmatched $ error. the unmatched span is noted
+in the .ilg file with a warning, but since most
+people ignore warnings the first time around (i
+certainly do), the unrecoverable (la)tex error in
+the index can really throw them into a tizzy.
diff --git a/Build/source/texk/makeindexk/tests/nested-range-test.pl b/Build/source/texk/makeindexk/tests/nested-range-test.pl
new file mode 100755
index 00000000000..b4882ce9d0e
--- /dev/null
+++ b/Build/source/texk/makeindexk/tests/nested-range-test.pl
@@ -0,0 +1,29 @@
+#!/usr/bin/env perl
+# $Id: bibtex-openout-test.pl 17384 2010-03-08 18:49:47Z karl $
+# Public domain. Originally written 2011, Karl Berry.
+# Check that makeindex doesn't create spurious output from nested ranges.
+# See nested-range.tex and -bb.tex.
+
+# srcdir = tetex (in the source tree)
+BEGIN { chomp ($srcdir = $ENV{"srcdir"} || `cd \`dirname $0\`/.. && pwd`); }
+require "$srcdir/../tests/common-test.pl";
+
+exit (&main ());
+
+sub main {
+ my $ret = &test_run ("makeindex", "$srcdir/tests/nested-range.idx",
+ "-o", "nested-range.ind",
+ "-t", "nested-range.ilg");
+
+ # The test fails if the output contains \(.
+ my $bad = 0;
+ local *IND;
+ $IND = "nested-range.ind";
+ open (IND) || die "open($IND) failed: $!";
+ while (<IND>) {
+ $bad = 1 if /\\\(/;
+ }
+ close (IND) || die "close($IND) failed: $!";
+
+ return $bad;
+}
diff --git a/Build/source/texk/makeindexk/tests/nested-range.idx b/Build/source/texk/makeindexk/tests/nested-range.idx
new file mode 100644
index 00000000000..a1154a3d5dc
--- /dev/null
+++ b/Build/source/texk/makeindexk/tests/nested-range.idx
@@ -0,0 +1,3 @@
+\indexentry{bad range|(}{1}
+\indexentry{bad range|(}{2}
+\indexentry{bad range|)}{2}
diff --git a/Build/source/texk/makeindexk/tests/nested-range.tex b/Build/source/texk/makeindexk/tests/nested-range.tex
new file mode 100644
index 00000000000..15be5e519a8
--- /dev/null
+++ b/Build/source/texk/makeindexk/tests/nested-range.tex
@@ -0,0 +1,33 @@
+% Copyright 2011 Barbara Beeton <tex-live@tug.org>
+% You may freely use, modify and/or distribute this file.
+%
+% This is the minimal version that reproduces the bug.
+% Some commented-out lines are some variations.
+% For all the details, see nested-range-bb.tex.
+%
+\documentclass{article}
+
+\makeindex
+
+\begin{document}
+\index{bad range|(}%
+%\index{ok range|(}%
+start.
+
+\newpage
+\index{bad range|(}%
+second page.
+
+\index{bad range|)}%
+%\index{ok range|)}%
+close.
+
+\end{document}
+
+\index{bad range|)}%
+second close.
+
+\index{bad range|)}%
+third close.
+
+\end{document}