yochju / latex-makefile

Automatically exported from code.google.com/p/latex-makefile
Other
0 stars 0 forks source link

!! Input index error (file = myfile.idx, line = xxx) -- Extra `!' at position 46 of first argument. #60

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
Hi,

I am using makeindex in a correct way. There is a place in my .tex where I
write an index entry as
\index{Fonction!de répartition|see{Fonction!de distribution}}
where
\index{Fonction!de distribution}
is evidently written somewhere else in the doc.

It is then, at compilation, written in myfile.idx, thus resulting in, at
line xxx of myfile.idx:
\indexentry{Fonction!de r\IeC {\'e}partition|see{Fonction!de
distribution}}{304}
where 304 is evidently the page number. The aim of this file is to allow
LaTeX2e to write this entry in a correct way in the index list that is
printed thanks to
\printindex

As my document is called `synth', I encounter this, after
$ makelt synth
:
==
NOTE: You may ignore warnings about the following files:

     synth.d

/usr/lib/makelt:1809: synth.d: No such file or directory
= synth.tex --> synth.d synth.dvi (1) =
= synth.idx --> synth.ind =
!! Input index error (file = synth.idx, line = 373):
   -- Extra `!' at position 46 of first argument.
make: *** [synth.ind] Error 1
==

That seems to be a bug, as, for example, Kile, handles this correctly.

Thanks for any improvement.

Luca Merciadri

Original issue reported on code.google.com by merciadr...@gmail.com on 6 Dec 2009 at 12:04

GoogleCodeExporter commented 9 years ago
I don't know much about exclamation marks in index files - can you show me the 
difference between the synth.idx and synth.ind files generated by my makefile 
vs. what 
Kile produces?  Seeing a diff could really help me.  If you like, just 
attaching those files 
(from each build process) to this issue will be sufficient and I can try to 
extract 
information from there.

Original comment by shiblon on 10 Dec 2009 at 2:45

GoogleCodeExporter commented 9 years ago
I did a lot of modifications (but not about index-related stuff), and it now 
works. I
do not understand. If I encounter such an error once again, I will copy the 
files.
Sorry, this now works.

I still do not understand!

Original comment by merciadr...@gmail.com on 10 Dec 2009 at 2:40

GoogleCodeExporter commented 9 years ago
Would you attach the modified makefile here so I can look at it?  I'll see if I 
can figure 
out what happened.

I have made some big changes to the way that indexes are built recently, so 
that may 
have impacted you if you downloaded a recent version.  Still, I'd like you to 
attach your 
Makefile here so that I can see your modifications.

Original comment by shiblon on 10 Dec 2009 at 3:56

GoogleCodeExporter commented 9 years ago
I could be using an older makefile. Here is
*my makefile,
*my two *.idx,
*my two *.ind.

You may note that
==
$ diff make-synth.idx synth-kile.idx
998a999
> \indexentry{Loopy belief propagation|hyperpage}{884}
$ diff make-synth.ind synth-kile.ind
==

It seems not to be the problem. Any idea?

HTH.

Original comment by merciadr...@gmail.com on 10 Dec 2009 at 11:12

Attachments:

GoogleCodeExporter commented 9 years ago
Ah, yes.  You are using the version right before I made substantial indexing 
changes.  
Can you try r8808a6b24640 and let me know how it works for you?

Original comment by shib...@google.com on 12 Dec 2009 at 4:32

GoogleCodeExporter commented 9 years ago
Okay. It now works! Great work! Everything works like a charm now, but I 
encounter
sometimes some
`Missing character: There is no �Underfull \hbox (badness 10000) in paragraph 
at
lines 206--211'
messages. However, kile does not complain for the `Missing character' (I am 
actually
unable to understand what `There is no �' means, as the `�' seems to be a
non-recognized character (coming from another encoding? mmh I do not know why I 
could
have such an encoding problem, I always work with utf-8 under Linux).

Any idea?

Original comment by merciadr...@gmail.com on 12 Dec 2009 at 6:24

GoogleCodeExporter commented 9 years ago
When it complains like this, does the build otherwise go through properly?  
E.g., is it 
a message that, if ignored, has no substantial impact on the document output?

It looks to me like some weirdness with the terminal, where I'm trying to 
highlight the 
"Underfull hbox" message using a particular color code escape sequence, which 
would mean that the message is harmless, if annoying.

If it affects build output, I would be extremely interested in that.  I'm also 
interested 
in the following information:

The value of $TERM
The terminal program you are running (e.g., xterm, some special cygwin thing, 
iterm, 
etc.)
The output of "tput setaf 5 > magenta_code" (send me the magenta_code file it 
produces)

Thanks!

Original comment by shiblon on 13 Dec 2009 at 2:01

GoogleCodeExporter commented 9 years ago
The build goes through properly, and the output is not, even substantially, 
affected.
It is just an annoying message, and I simply wanted to understand its cause.

I am using standard xterm, i.e.
$ echo $TERM
xterm

with no cygwin, etc.
Here is the attached file you requested. 

Another question: why informing the user about overfull hboxes, in *red*? I 
think it
should be reserved to fatal errors, or, at least, to errors (i.e. missing 
brackets,
etc.), not to such a common thing, shoudln't it?

Thanks.

Original comment by merciadr...@gmail.com on 13 Dec 2009 at 2:50

Attachments:

GoogleCodeExporter commented 9 years ago
Hmm - for some reason magenta looks fine.  I can't imagine what's going on with 
that.

Your point about red being a bit dramatic is well-taken.  I have found that I 
*never* 
want overfull hboxes, since they always make the output look funny, so I made 
them 
red by default.

This is something you can customize to your own needs, though.  You can create 
a 
Makefile.ini file and put the following in it:

LATEX_COLOR_OVERFULL := magenta

Then it will be the same as the underful warning.  There are several such 
colors 
defined:

black
red
green
yellow
blue
magenta
cyan
white
bold
uline
reset

If you have a more capable terminal, you can set the variable to be whatever 
the 
appropriate escape sequence is (that's all the above really are, variables that 
hold the 
proper escape sequence for the color).

So, you could do, for example:

LATEX_COLOR_OVERFULL ;= ^[[35m

Where ^[ is actually a single character (escape), obtained by typing CTRL-V and 
hitting ESC.

Anyway, it's all configurable.  Let me know how it goes :)

Since this doesn't affect output, I am tempted to mark it "Fixed", but it does 
look like 
you have an output issue that we might get to the bottom of, so I'd be curious 
to see 
if we can trigger this reliably.  Once we can do that, I'll be able to tackle 
this issue 
more directly.

Thanks for the report.  Hopefully we can get this annoyance nailed.

Original comment by shiblon on 13 Dec 2009 at 7:33

GoogleCodeExporter commented 9 years ago
By the way, I just did a search for "missing character" "there is no" and found 
the 
following link:

http://www.tug.org/pipermail/xetex/2009-May/013025.html

I wonder if the "underfull hbox" part is a red herring.  Perhaps the log is 
getting 
munged by sed, and what's really going on is that your font doesn't support one 
of 
the characters in your document?

That would be weird, since you mentioned that Kile handles things properly.  
Still 
thinking and researching...

Original comment by shiblon on 13 Dec 2009 at 7:36

GoogleCodeExporter commented 9 years ago
Sorry for the multiple updates, but this might be a font problem after all.  If 
you could 
attach a .log file when you next see this, that might help me track it down.

Also, does Kile use pdflatex under the covers?  That could explain a font 
difference, 
since the makefile uses latex -> dvips -> ps2pdf.

Original comment by shiblon on 13 Dec 2009 at 7:39

GoogleCodeExporter commented 9 years ago
I understand your point of view about overfull hboxes. I am writing docs with 
more
than a thousand pages, and that explains why I am more more inclined to receive 
such
messages. (It becomes even more frustrating with such a long doc, when you are
stressing because of red messages. At this moment, you think to yourself ``Mmh, 
where
did I missed a `&' or a `\\' or even a ``}'', in all these lines of code?)

Thanks for the trick about colors. The fact is that I am using some shortcut 
with my
.bashrc so that my Makefile is actually in a /usr/lib/, i.e. there is
==
alias makelt='make -f /usr/lib/makelt'
==
in my .bashrc, the `makelt' being your `Makefile.' I could use another 
solution, for
sure, but how can I deal with a .ini file? I do not want to put such a file 
into each
of my .tex folders. Is it possible to put it into the /usr/lib/ so that makelt 
will
recognize it?

My Kile is configured to use the following scheme:
latex -> (dvi) dvips -> (ps) ps2pdf -> (pdf).

Here are three kinds of files:
* the log file,
* a new .idx,
* a new .ind.
These six files (i.e. one for each: Kile and Makefile) are justified because I 
am
encountering
==
NOTE: You may ignore warnings about the following files:

     synth.d

/usr/lib/makelt:1838: synth.d: No such file or directory
= synth.tex --> synth.d synth.dvi (1) =
= synth.idx --> synth.ind =
!! Input index error (file = synth.idx, line = 376):
   -- Extra `!' at position 46 of first argument.
make: *** [synth.ind] Error 1
==
the problem being evidently
==
!! Input index error (file = synth.idx, line = 376):
   -- Extra `!' at position 46 of first argument.
==
I evidently did a
==
makelt clean
==
before, but the problem remains. However, Kile does not complain. You will 
notice
that a diff on *.ind shows nothing.

Original comment by merciadr...@gmail.com on 13 Dec 2009 at 8:18

Attachments:

GoogleCodeExporter commented 9 years ago
Evidently, for the font problem (if any, but I also think that it is), I will 
send
the two .log, but after the solving of this problem, as the Makefile will not
continue doing its job until the issue with the .idx is not solved.

Thanks for your help. Great makefile, though. ;-)

Original comment by merciadr...@gmail.com on 13 Dec 2009 at 8:21

GoogleCodeExporter commented 9 years ago
Evidently, I have kept two old versions of your makefile, and I diff'ed the 
newest
one (that I am using), and the diff between this one and the older ones is 
non-void,
i.e. I am using the most recent version, as I downloaded it last time, and that 
it
solved the idx problem. I am still surprised that it worked for the other
pseudo-error with .idx, but not for this one. Sorry for you, I would have been
happier if it worked correctly (I was actually not expecting such an error, and 
did
the makelt synth, as my file is called `synth.tex', only to send you the .log 
for the
font purpose).

Original comment by merciadr...@gmail.com on 13 Dec 2009 at 8:26

GoogleCodeExporter commented 9 years ago
I can confirm this error, as, to be sure, I re-downloaded the last version, and
/usr/lib# diff makelt /home/merciadriluca/Desktop/Makefile 
gives nothing (i.e. files are the same), where `Makefile' is the only file 
which is
extracted from 
http://latex-makefile.googlecode.com/files/latex-makefile-2.1.40.tar.gz.

Original comment by merciadr...@gmail.com on 13 Dec 2009 at 8:30

GoogleCodeExporter commented 9 years ago
I am very confused as to the current state of things.  Do they work, do they 
not?  Is 
there only a problem with the missing character, or are indexes still broken?

It's just hard to follow what's going on.  Would you mind posting here a 
summary of 
what is *currently happening* so that we can get on the same page?

My understanding is that the index problem is solved, but that you are having 
two 
issuess:

1) Makefile.ini has to be in the same directory as the .tex files, etc.
2) Missing character warnings.

These two things should really be new issues.  If the idx problem is solved for 
you, 
I'd like to mark this issue Fixed and start on two new issues for the other 
problems.

Original comment by shiblon on 16 Dec 2009 at 3:58

GoogleCodeExporter commented 9 years ago
The problem is less complicated than you actually think it is. Three things are,
AFAIK, not working. Here they are, classed by priority:
1. Idx problem:
Input index error (file = synth.idx, line = 376):
   -- Extra `!' at position 46 of first argument.
I thought that this error was solved last time, and it was, but it now 
reappears. It
is thus *problematic*.
2. A few missing character warnings.

According to Comment #15 you have just written, you should have understood now 
that
the index problem is reappearing.

I do not consider the Makefile.ini stuff being a problem. It is just a matter of
convenience, and cannot be the source of some criticism.

Sorry, you can thus not mark this issue as `Fixed.'

Original comment by merciadr...@gmail.com on 16 Dec 2009 at 4:15

GoogleCodeExporter commented 9 years ago
OK - I need you to figure out exactly what changed between the time that this 
issue 
(extra !) was resolved, and when it reappeared.  I cannot reproduce it here, so 
I'm 
putting the onus back on you to figure out what's up, especially since your 
setup is 
rather unique.

Original comment by shiblon on 16 Dec 2009 at 4:19

GoogleCodeExporter commented 9 years ago
It must be clear to you that it is in no point due to my special bashrc and 
aliases.
It is clear that I am compiling long and large documents. Your makefile is 
great, and
I do not understand these index errors. I hope my files (Comment 12) will help 
you.

Original comment by merciadr...@gmail.com on 16 Dec 2009 at 4:30

GoogleCodeExporter commented 9 years ago
It isn't clear to me at all - that's the problem.  Nothing is clear.

What I need, instead of the attached files (thanks, but they unfortunately 
didn't tell me 
anything that I could use, which was surprising), is a very small file that 
reproduces the 
problem.

Is it possible to create a minimal document that has this issue and send it to 
me? Then I 
can do all of the sleuthing that I need to do to figure it out.

Original comment by shib...@google.com on 17 Dec 2009 at 9:28

GoogleCodeExporter commented 9 years ago
It seems to be coming from
\indexentry{Fonction!de r\IeC {\'e}partition|see{Fonction!de distribution}}{310}

in my synth.idx.

A file such as the attached one should do the trick (/i.e./ reproduce the bug), 
but
the makefile seems not to deal with this file:
$ makelt test
mv: cannot stat `test.dvi.1st.make': No such file or directory
LaTeX Warning: Unused global option(s):
    [makeidx].

= test.dvi --> test.ps =
This is dvips(k) 5.96.1 Copyright 2007 Radical Eye Software (www.radicaleye.com)
dvips: ! DVI file can't be opened.
make: *** [test.ps] Error 1
rm test.paper.make

I hope you will understand this better than me!

Original comment by merciadr...@gmail.com on 17 Dec 2009 at 10:20

Attachments:

GoogleCodeExporter commented 9 years ago
Thanks, I removed [makeindex] from the documentclass and changed utf8x to utf8, 
and 
now I can reproduce this.  This was tremendously helpful.  Thanks!  I'll report 
back as I 
have more information.

Original comment by shiblon on 18 Dec 2009 at 1:09

GoogleCodeExporter commented 9 years ago
Aha!  I think that Kile is just passing this error silently.  If there is a 
test.ilg file 
produced by Kile, it may have the same error in it.  Can you check?

The output of makeindex does *not* show this error, it just states that one 
entry was 
"rejected".  You have to go to the log to see the error itself, and that is 
what myt 
makefile does.

I'm guessing that this is really and truly an error, and that you'll need to 
fix it in your 
document.  I could be wrong, of course, but that's my current theory.

I've attached your test.tex file, fixed to show this error.

Original comment by shiblon on 18 Dec 2009 at 1:19

Attachments:

GoogleCodeExporter commented 9 years ago
Thanks. I now use your modified file. With the Makefile, it evidently gives
= test2.idx --> test2.ind =
!! Input index error (file = test2.idx, line = 2):
   -- Extra `!' at position 46 of first argument.
make: *** [test2.ind] Error 1

In the corresponding .ilg file, I encounter
!! Input index error (file = test2.idx, line = 2):
   -- Extra `!' at position 46 of first argument.
done (1 entries accepted, 1 rejected).
and that is coherent with the Makefile's given error.

I now ran a second time the Makefile on the same .tex file (/i.e./ the test file
test.tex you just sent me). Here is the output:
= test2.tex --> test2.d test2.dvi (1) =
Missing argument. Try `kpsewhich --help' for more information.
Success!  Wrote 2 pages, 436 bytes

= test2.dvi --> test2.ps =
= test2.ps --> test2.pdf =
rm test2.paper.make test2.embed.make

Can you explain this? It looks like running the makefile on it more than one 
time
results in no more error output, but the .ilg has still
!! Input index error (file = test2.idx, line = 2):
   -- Extra `!' at position 46 of first argument.
done (1 entries accepted, 1 rejected).

There is a problem about this.

When you say that it would be an error, what do you want me to change in this 
basic
MWE? My two index entries are correctly typed, and packages are correctly 
loaded. Why
would it produce such an error?

You are right when you say that Kile does not show me this error. When running
compilation with Kile (only), I still encounter
!! Input index error (file = test2.idx, line = 2):
   -- Extra `!' at position 46 of first argument.

in the .ilg.

To summarize these results, I think that there is something I am 
misunderstanding
with the (apparently erroneous) index entry. It is not linked with your 
makefile.

Now, a problem has appeared: using your makefile two times on this (apparently
erroneous) .tex file, results in no more errors in the output. Why? Is it 
motivated
by some reason?

Original comment by merciadr...@gmail.com on 18 Dec 2009 at 10:46

GoogleCodeExporter commented 9 years ago
Okay, so we agree that there has always been an error here, but that Kile was 
ignoring it.

It sounds like the new problem is that the makefile gives an error the first 
time, but 
not the second.

The reason for this is that it only triggers when the index file is built.  I 
can delete the 
output of makeindex if it gives an error, which would fix this.  Does that 
sound like 
the right behavior to you?

Original comment by shiblon on 6 Jan 2010 at 8:20

GoogleCodeExporter commented 9 years ago
Yes.

Original comment by merciadr...@gmail.com on 7 Jan 2010 at 12:45

GoogleCodeExporter commented 9 years ago
Give r842629988fa4 a try, let me know how it works.

Original comment by shiblon on 7 Jan 2010 at 6:18

GoogleCodeExporter commented 9 years ago
Just tried. It repeats the error, now. Your new makefile is thus okay according 
to
this bug. The old one is still not solved (yet).

Original comment by merciadr...@gmail.com on 7 Jan 2010 at 6:27

GoogleCodeExporter commented 9 years ago
Which old bug were you referring to?

Original comment by shiblon on 7 Jan 2010 at 6:43

GoogleCodeExporter commented 9 years ago
Sorry, I had not re-read my message. The problem is solved, as the log's index 
error
is not shown in Kile, but in your Makefile (which is more verbose).

Okay, everything is solved for this Makefile, for this issue.
We worked hard (29 comments), didn't we? You may close this issue.

Original comment by merciadr...@gmail.com on 7 Jan 2010 at 6:46

GoogleCodeExporter commented 9 years ago
Good stuff.  Thanks.

Good luck getting your indices building with your desired output.

Original comment by shiblon on 7 Jan 2010 at 7:04

GoogleCodeExporter commented 9 years ago
Thanks.

Original comment by merciadr...@gmail.com on 7 Jan 2010 at 8:03