Beim Erstellen von Tabellen- und Abbildungsverzeichnis wird die Warnung

Token not allowed in a PDF string

ausgegeben.

Leider kann ich damit nicht so richtig etwas anfangen. Was bedeutet diese Warnung?

gefragt 02 Jul '13, 02:53

relaXxX's gravatar image

relaXxX
75236
Akzeptiert: 0%

bearbeitet 06 Aug '13, 17:01

Qrrbrbirlbel's gravatar image

Qrrbrbirlbel
2.9k1415


Ein Beispiel, mit dem sich die Warnung erzeugen lässt, wäre folgendes

\documentclass{article}
\usepackage{hyperref}
\begin{document}
\section{$a+b=c$}
\end{document}

Im log steht zweimal:

Package hyperref Warning: Token not allowed in a PDF string (PDFDocEncoding):
(hyperref)                removing `math shift' on input line 4.

Die Warnung bedeutet, dass das in dem PDF-Lesezeichen, das hyperref für die \section anlegt, das Math-Shift-Token $ nicht erlaubt ist und daher entfernt wird. Erklärt ist das in hyperrefs Dokumentation (Abschnitt 4.1.2 Replacement macros)

hyperref takes the text for bookmarks from the arguments of commands like section, which can contain things like math, colors, or font changes, none of which will display in bookmarks as is.

Was das bedeutet, wird an einem anderen Beispiel (Dank an Herbert!) noch deutlicher:

\documentclass{article}
\usepackage{hyperref}
\begin{document}
\section{$\int_a^b x^2 dx$}
\end{document}

Das Lesezeichen liest sich jetzt „ab x2 dx“, ist also nicht mehr wirklich sinnvoll zu interpretieren.

Umgehen kann man die Warnung (und das u.U. „kaputte“ Lesezeichen), indem man mit \texorpdfstring{<tex>}{<PDF>} eine extra Eingabe für TeX und für das PDF-Lesezeichen angibt:

\documentclass{article}
\usepackage{hyperref}
\begin{document}
\section{\texorpdfstring{$a+b=c$}{a+b=c}}
\section{\texorpdfstring{$\int_a^b x^2 dx$}{int\_a\textasciicircum b x\textasciicircum2 dx}}
\end{document}

Für Makros gibt es auch eine etwas automatischere Möglichkeit. Z.B. führt \textsuperscript zu den folgenden vielleicht etwas unerwarteten Warnungen:

Package hyperref Warning: Token not allowed in a PDF string (PDFDocEncoding):
(hyperref)                removing `\mathsurround' on input line 4.

Package hyperref Warning: Token not allowed in a PDF string (PDFDocEncoding):
(hyperref)                removing `\z@' on input line 4.

Package hyperref Warning: Token not allowed in a PDF string (PDFDocEncoding):
(hyperref)                removing `superscript' on input line 4.

Man kann aber hyperref sagen, dass es für die PDF-Lesezeichen eine andere Definition für \textsuperscript nehmen soll:

\documentclass{article}
\usepackage{hyperref}
\pdfstringdefDisableCommands{%
  \def\textsuperscript#1{\textasciicircum(#1)}%
}
\begin{document}
\section{x\textsuperscript{2}}
\end{document}
Permanenter link

beantwortet 02 Jul '13, 03:23

Clemens's gravatar image

Clemens
19.0k112960

bearbeitet 02 Jul '13, 14:42

Manche Sonderzeichen, aber auch Hoch- und Tiefstellungen können nicht als pdf-Bookmarks gesetzt werden. Abhilfe schafft hier \texorpdfstring{<TeX-String>}{<pdf-String>}.

Der TeX-String wird im Dokument gesetzt, der pdf-String kommt zum Beispiel in die pdf-bookmarks. Als Beispiel sei hier \textorpdfstring{CO\textsubscript{2}}{CO\string(2)} gegeben (die Arbeit mit einem Chemiepaket wie chemmacros ist aber zu empfehlen)

\documentclass[]{scrartcl}
\usepackage{hyperref}
\begin{document}
\tableofcontents
\section{\texorpdfstring{CO\textsubscript{2}}{CO\string_(2)}}
\end{document}

Weitere Informationen sind auch unter d.c.t.t. zu finden

Permanenter link

beantwortet 02 Jul '13, 03:20

Johannes's gravatar image

Johannes
7.2k132759

bearbeitet 02 Jul '13, 03:32

Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×41
×31
×15
×1

Frage gestellt: 02 Jul '13, 02:53

Frage wurde angeschaut: 16,029 Mal

Zuletzt aktualisiert: 06 Aug '13, 17:01