Anzeige:
Ergebnis 1 bis 14 von 14

Thema: Problem mit hyperref und griechischen Buchstaben

  1. #1
    Registrierter Benutzer
    Registriert seit
    02.06.2009
    Beiträge
    49

    Question Problem mit hyperref und griechischen Buchstaben

    Hallo zusammen!

    Ich habe ein Problem mit dem hyperref paket in Kombination mit der jura Dokumentklasse. Meine Textstruktur sieht ungefähr so aus:



    Wenn ich nun hyperref benutze erhalte ich ein paar Fehlermeldungen. Wie es scheint, hat hyperref mit den griechischen Buchstaben, welche von alphanum erzeugt werden Probleme.

    Zur Veranschaulichung hier ein kleines Beispiel:

    Code:
    \documentclass[widefront]{jura}
    
    \usepackage[ngerman]{babel}
    \usepackage[T1]{fontenc}
    \usepackage[latin1]{inputenc}
    
    \usepackage{jurabib}
    \usepackage[unicode]{hyperref}
    
    \begin{document}
    
    \frontmatter
    \tableofcontents
    
    \mainmatter
    \toc{Ebene 1}
      \sub{Ebene 2}
        \sub{Ebene 3}
          \sub{Ebene 4}
            \sub{Ebene 5}
              \sub{Ebene 6}
                \sub{Ebene 7}
                  \sub{Ebene 8}
                    \sub{Ebene 9}
                      \sub{Ebene 10}
    \end{document}
    Error log (Ausschnitt)

    Code:
    (minimalbeispiel.out
    ! Missing \endcsname inserted.
    
                       \alpha
    l.7 ...0e\000n\000e\000\040\0007}{lvlf.$\alpha $)}
                                                     
    The control sequence marked  should
    not appear between \csname and \endcsname.
    
    ! Missing \endcsname inserted.
    
                       \alpha
    l.7 ...0e\000n\000e\000\040\0007}{lvlf.$\alpha $)}
                                                     
    The control sequence marked  should
    not appear between \csname and \endcsname.
    
    ! Missing number, treated as zero.
    
                       \B_lvlf.$
    l.7 ...0e\000n\000e\000\040\0007}{lvlf.$\alpha $)}
                                                     
    A number should have been here; I inserted `0'.
    (If you can't figure out why I needed to see a number,
    look up `weird error' in the index to The TeXbook.)
    
    ! Missing $ inserted.
    
                    $
    l.7 ...0e\000n\000e\000\040\0007}{lvlf.$\alpha $)}
                                                     
    I've inserted a begin-math/end-math symbol since I think
    you left one out. Proceed, with fingers crossed.
    
    LaTeX Font Info:    Try loading font information for \\OT1+cmr on input line 7.
    
    LaTeX Font Info:    No file \\OT1cmr.fd. on input line 7.
    
    LaTeX Font Warning: Font shape `\\\OT1/cmr/m/n' @undefined
    (Font)              using `\\OT1/cmr/m/n' instead on input line 7.
    
    LaTeX Font Info:    Try loading font information for \\\OT1+cmr on input line 7
    .
    minimalbeispiel.out

    Code:
    \BOOKMARK [0][-]{lvla.A.}{\376\377\000E\000b\000e\000n\000e\000\040\0001}{}
    \BOOKMARK [1][-]{lvlb.I.}{\376\377\000E\000b\000e\000n\000e\000\040\0002}{lvla.A.}
    \BOOKMARK [2][-]{lvlc.1.}{\376\377\000E\000b\000e\000n\000e\000\040\0003}{lvlb.I.}
    \BOOKMARK [3][-]{lvld.a)}{\376\377\000E\000b\000e\000n\000e\000\040\0004}{lvlc.1.}
    \BOOKMARK [4][-]{lvle.aa)}{\376\377\000E\000b\000e\000n\000e\000\040\0005}{lvld.a)}
    \BOOKMARK [5][-]{lvlf.$\alpha $)}{\376\377\000E\000b\000e\000n\000e\000\040\0006}{lvle.aa)}
    \BOOKMARK [6][-]{lvlg.$\alpha $$\alpha $)}{\376\377\000E\000b\000e\000n\000e\000\040\0007}{lvlf.$\alpha $)}
    \BOOKMARK [7][-]{lvlh.(1)}{\376\377\000E\000b\000e\000n\000e\000\040\0008}{lvlg.$\alpha $$\alpha $)}
    \BOOKMARK [8][-]{lvli.(a)}{\376\377\000E\000b\000e\000n\000e\000\040\0009}{lvlh.(1)}
    \BOOKMARK [9][-]{lvlj.(aa)}{\376\377\000E\000b\000e\000n\000e\000\040\0001\0000}{lvli.(a)}
    Ich bin für jede Hilfe dankbar!

  2. #2
    Registrierter Benutzer
    Registriert seit
    19.05.2009
    Beiträge
    4.045
    Du kannst mit
    \usepackage[unicode,bookmarksdepth=4]{hyperref} die Tiefe der bookmarks zu begrenzen.

    Für eine "richtige" Lösung muss man wahrscheinlich ziemlich tief in alphanum herumwühlen.

    Ulrike Fischer

  3. #3
    Registrierter Benutzer
    Registriert seit
    02.06.2009
    Beiträge
    49
    Hallo Ulrike Fischer,
    vielen Dank für deine Antwort.

    Das heisst also quasi, dass es keine Lösung gibt wenn ich alle Ebenen benötige.

    Dann bleibt mir wohl nur noch die Möglichkeit eine Alternative für hyperref zu finden?

  4. #4
    Registrierter Benutzer
    Registriert seit
    19.05.2009
    Beiträge
    4.045
    Wozu brauchst du alle Ebenen in den bookmarks? Das Dokument selbst ist ja nicht betroffen.

    Ulrike Fischer

  5. #5
    Registrierter Benutzer
    Registriert seit
    02.06.2009
    Beiträge
    49
    Hallo Ulrike Fischer,

    bei langen und stark unterteilten Texten benötige ich alle Ebenen und da stosse ich auch mit deiner Lösung auf Probleme. Allerdings erhalte ich diesmal keine Fehlermeldungen, sondern Buchstaben im Inhaltsverzeichnis "verschwinden".


  6. #6
    Registrierter Benutzer
    Registriert seit
    19.05.2009
    Beiträge
    4.045
    Die bookmarks sind doch bloß das aufklappbare Inhaltsverzeichnis im pdf-Reader. Die brauchst du doch wirklich nicht alle. Was die verschwinden Nummer ab Ebene 8 angeht: Das ist irgendein interessanter Bug in alphanum.

    Wenn du wie im folgenden Code mal \J@Number umdefinierst, kannst du im toc sehen, dass sich alphanum dort um eine Tiefe verheddert. Wenn du in J@LongToc in der markierten Zeile statt -1em 1em benutzt, verschwindet das Problem.

    Code:
    \makeatletter
    \renewcommand*{\J@Number}{Tiefe:\the\value{tiefe}\J@NumberRoot{\value{tiefe}}
       \J@NumberEnd{\value{tiefe}}}
    
    \renewcommand*{\J@LongToc}[2][]{%
    \@startsection{lvl\alph{tiefe}}{\value{tiefe}}{0pt}
    {\ifnum\value{tiefe}=1 -4ex plus-1,5ex minus-0,ex\else
    -2,7ex plus-0,8ex minus-0,2ex\fi}
    {\ifnum\value{tiefe}>7 -1em plus-0,5em\relax\else %<--da
    0,6ex plus0,3ex minus0,1ex\fi}
    {\sectfont\csname lvl\alph{tiefe}style\endcsname}[#1]{#2}}

    Ulrike Fischer

  7. #7
    Registrierter Benutzer
    Registriert seit
    02.06.2009
    Beiträge
    49
    Hallo Ulrike Fischer,

    ich kann deinen Codeausschnitt leider nirgends finden. Kannst du mir bitte sagen, wo du ihn gefunden hast?

  8. #8
    Registrierter Benutzer
    Registriert seit
    19.05.2009
    Beiträge
    4.045
    Die Befehle sind in alphanum.sty definiert. Dort kannst du die \newcommand... rauskopieren, in die Präambel deines Dokuments (nach einem \makeatletter) einfügen, \newcommand in \renewcommand ändern und damit rumspielen.

    Ulrike Fischer

  9. #9
    Registrierter Benutzer
    Registriert seit
    02.06.2009
    Beiträge
    49
    Hallo Ulrike Fischer,

    Zitat Zitat von u_fischer Beitrag anzeigen
    Wenn du wie im folgenden Code mal \J@Number umdefinierst, kannst du im toc sehen, dass sich alphanum dort um eine Tiefe verheddert. Wenn du in J@LongToc in der markierten Zeile statt -1em 1em benutzt, verschwindet das Problem.
    ja, das mit dem Problem der Tiefe sehe ich. Allerdings bringt mir das Anpassen von -1em zu 1em nichts. Das Problem der verschwindenden Zeichen besteht weiterhin.

    Code:
    \documentclass[widefront]{jura}
    
    \usepackage[ngerman]{babel}
    \usepackage[T1]{fontenc}
    \usepackage[latin1]{inputenc}
    
    \usepackage{jurabib} 
    
    
    \makeatletter
    \renewcommand*{\J@LongToc}[2][]{%
    \@startsection{lvl\alph{tiefe}}{\value{tiefe}}{0pt}
    {\ifnum\value{tiefe}=1 -4ex plus-1,5ex minus-0,ex\else
    -2,7ex plus-0,8ex minus-0,2ex\fi}
    {\ifnum\value{tiefe}>7 1em plus-0,5em\relax\else
    0,6ex plus0,3ex minus0,1ex\fi}
    {\sectfont\csname lvl\alph{tiefe}style\endcsname}[#1]{#2}}
    
    \usepackage[unicode,bookmarksdepth=4]{hyperref}
    \begin{document}
    
    \frontmatter
    \tableofcontents
    
    \mainmatter
    \toc{Ebene 1}
      \sub{Ebene 2}
        \sub{Ebene 3}
          \sub{Ebene 4}
            \sub{Ebene 5}
              \sub{Ebene 6}
                \sub{Ebene 7}
                  \sub{Ebene 8}
                    \sub{Ebene 9}
                      \sub{Ebene 10}
    \end{document}

  10. #10
    Registrierter Benutzer
    Registriert seit
    19.05.2009
    Beiträge
    4.045
    Ich habe alphanum schon nie leiden können. Nun ja: Jurabib ist schuld, es macht die Neudefinition wieder rückgängig. Versuch:

    Code:
    \usepackage{jurabib}
    \AtBeginDocument{\renewcommand ....}
    Anmerkung: Die Änderung ändert natürlich den Stil (die Einrückung) der entsprechenden Überschrift. Aber ich sehe derzeit keine Möglichkeit das zu vermeiden. Dazu müsste man erstmal rausfinden, welche \if-Befehl sich da verläuft.


    Ulrike Fischer

  11. #11
    Registrierter Benutzer Avatar von rais
    Registriert seit
    18.07.2005
    Beiträge
    5.859
    Moin Ulrike,
    Zitat Zitat von u_fischer Beitrag anzeigen
    Wenn du wie im folgenden Code mal \J@Number umdefinierst, kannst du im toc sehen, dass sich alphanum dort um eine Tiefe verheddert.
    da wär' ich mir nicht so sicher:
    Code:
    \documentclass[widefront]{jura}
    
    \usepackage[ngerman]{babel}
    \usepackage[T1]{fontenc}
    \usepackage[utf8]{inputenc}
    
    \makeatletter
    \let\org@startsection\@startsection
    \renewcommand*\@startsection[6]{%<--nur zur Demo
      \typeout{++#1}%
      \org@startsection{#1}{#2}{#3}{#4}{#5}{#6}%
    }
    \makeatother
    \begin{document}
    
    \frontmatter
    \tableofcontents
    
    \mainmatter
    \toc{Ebene 1}
      \sub{Ebene 2}
        \sub{Ebene 3}
          \sub{Ebene 4}
            \sub{Ebene 5}
              \sub{Ebene 6}
                \sub{Ebene 7}
                  \sub{Ebene 8}
                    \sub{Ebene 9}
                      \sub{Ebene 10}
    \end{document}
    zeigt
    Code:
    ++lvla
    ++lvlb
    ++lvlc
    ++lvld
    ++lvle
    ++lvlf
    ++lvlg
    ++lvlh
    ++lvli
    ++lvlj
    in der .log bzw. Konsolenausgabe -- und dieser `lvl' wird just von diesem `tiefe'-Zähler beeinflusst ...

    MfG
    Rainer
    There's nothing a good whack with a hammer won't fix!

  12. #12
    Registrierter Benutzer
    Registriert seit
    19.05.2009
    Beiträge
    4.045
    Nun, alphanum verheddert sich ja auch nicht überall. Wenn du

    Code:
    \renewcommand*{\J@Number}{Tiefe:\the\value{tiefe}\J@NumberRoot{\value{tiefe}}\J@NumberEnd{\value{tiefe}}}
    zu deinem Beispiel hinzufügst, kannst du im Inhaltsverzeichnis
    die Folge Tiefe 7, Tiefe 9, Tiefe 10, Tiefe 10 sehen. Während auf der nächsten Seite richtig Tiefe 7, Tiefe 8, Tiefe 9, Tiefe 10 steht.

    Ulrike Fischer

  13. #13
    Registrierter Benutzer Avatar von rais
    Registriert seit
    18.07.2005
    Beiträge
    5.859
    Hallo Ulrike,
    Zitat Zitat von u_fischer Beitrag anzeigen
    Nun, alphanum verheddert sich ja auch nicht überall. Wenn du

    Code:
    \renewcommand*{\J@Number}{Tiefe:\the\value{tiefe}\J@NumberRoot{\value{tiefe}}\J@NumberEnd{\value{tiefe}}}
    zu deinem Beispiel hinzufügst, kannst du im Inhaltsverzeichnis
    die Folge Tiefe 7, Tiefe 9, Tiefe 10, Tiefe 10 sehen. Während auf der nächsten Seite richtig Tiefe 7, Tiefe 8, Tiefe 9, Tiefe 10 steht.
    so ganz seh ich noch nicht, wie sich alphanum hier überhaupt verheddern kann, zumal Dein Ansatz mit der positiven Länge in der \J@LongToc-Definition funktioniert: eben dieser Wert wird hier nur an \@startsection weitergereicht, deutet das nicht eher auf ein Verheddern (südlich von) \@startsection hin?
    Da hab ich dann mal weiter geschaut:
    Code:
    \documentclass{article}
    
    \usepackage{alphanum}
    
    \makeatletter
    \renewcommand*{\J@Number}{Tiefe:\the\value{tiefe}\J@NumberRoot{\value{tiefe}}\J@NumberEnd{\value{tiefe}}}
    
    \let\org@startsection\@startsection
    \renewcommand*\@startsection[6]{%<--nur zur Demo
      \typeout{++@startsection: #1}%
      \org@startsection{#1}{#2}{#3}{#4}{#5}{#6}%
    }
    
    \def\@sect#1#2#3#4#5#6[#7]#8{%
      \typeout{++@sect: #1}%<--
      \ifnum #2>\c@secnumdepth
        \let\@svsec\@empty
      \else
        \refstepcounter{#1}%
        \protected@edef\@svsec{\@seccntformat{#1}\relax}%
      \fi
      \@tempskipa #5\relax
      \ifdim \@tempskipa>\z@
        \begingroup
          #6{%
            \@hangfrom{\hskip #3\relax\@svsec}%
              \interlinepenalty \@M #8\@@par}%
        \endgroup
        \csname #1mark\endcsname{#7}%
        \addcontentsline{toc}{#1}{%
          \ifnum #2>\c@secnumdepth \else
            \protect\numberline{\csname the#1\endcsname}%
          \fi
          #7}%
      \else
        \typeout{++def @svsechd: #1}%<--
        \def\@svsechd{%
          \typeout{++call @svsechd: #1}%<--
          #6{\hskip #3\relax
          \@svsec #8}%
          \csname #1mark\endcsname{#7}%
          \addcontentsline{toc}{#1}{%
            \ifnum #2>\c@secnumdepth \else
              \protect\numberline{\csname the#1\endcsname}%
            \fi
            #7}}%
      \fi
      \@xsect{#5}}
    
    \makeatother
    \begin{document}
    \tableofcontents
    \toc{Ebene 1}
      \sub{Ebene 2}
        \sub{Ebene 3}
          \sub{Ebene 4}
            \sub{Ebene 5}
              \sub{Ebene 6}
                \sub{Ebene 7}
                  \sub{Ebene 8}
                    \sub{Ebene 9}
                      \sub{Ebene 10}
    \end{document}
    mit dem interessanten Teil
    Code:
    ++@startsection: lvlh
    ++@sect: lvlh
    ++def @svsechd: lvlh
    ++@startsection: lvli
    ++call @svsechd: lvli
    auf der Konsole, d. h. bis zur Definition von \@svsechd (bei tiefe>7) scheint noch alles zu stimmen, nur aufgerufen wird \@svsechd zu spät oder wird andernorts verändert, aber ``svsechd'' findet sich nicht in alphanum.sty -- zumindest nicht in der mir vorliegenden Kopie.;-)

    MfG
    Rainer
    There's nothing a good whack with a hammer won't fix!

  14. #14
    Registrierter Benutzer
    Registriert seit
    19.05.2009
    Beiträge
    4.045
    Ja, \@startsection ist irgendwie beteiligt. Da kommen irgendwelche \ifnum-Schachtelungen durcheinander. Die Frage ist nur, ob es ein \@startsection-Bug ist, oder ob alphanum den Befehl falsch verwendet. Ich habe aber keine große Lust dem nachzugehen. if-Fehlern nachzuspüren ist mühsam.

    Ulrike Fischer

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •