private boolean readHyphenatedWord()
    {
        ArrayList<Character> saved = new ArrayList<Character>();
        // check for page numbers
        char token;
        if ( readArabicPage()||readRomanPage() )
        {
            // remove page number
            char last = undo.get(undo.size()-1);
            //debug
//            for ( int i=0;i<undo.size()-1;i++ )
//            {
//                char tok = undo.get(i);
//                System.out.print(tok);
//            }
            // end debug
            undo.clear();
            saved.add('-');
            token = last;
        }
        else
            token = nextChar();
        while ( token=='\n'||token=='\r' )
        {
            saved.add(token);
            token = nextChar();
        }
        saved.add(token);
        while ( undo.size()>0 )
            saved.add(undo.remove(0));
        while (saved.size()>0 )
            push( saved.remove(0) );
        // token is definitely not a newline
        return Character.isLetter(token);
    }