Discussion:
Benutzung von \texorpdfstring
(zu alt für eine Antwort)
t***@gmail.com
2012-08-15 14:20:33 UTC
Permalink
Hallo,

ich steh gerade vor einem kleinen Verständnissproblem...
Ich möchte in einer Überschrift 'Screening and modelling of CO2' stehen haben, wobei CO2 halt als Formel gesetzt werden soll. Wenn ich \texorpdfstring verwende habe ich kein Problem mit der Überschrift im Dokument, sehr wohl aber mit dem Lesezeichen im PDF.

Folgendes habe ich im Dokument geschrieben:

\subsubsection{Screening and modelling of \texorpdfstring{CO\textsubscript{2}}{Screening and modelling of CO\textsubscript{2}}}

Hier bekomme ich weiterhin die Warnung 'Token not allowed in a PDF string (PDFDocEncoding), obwohl PD1 ja eigentlich unterstützt werden sollte und auch automatisch von hyperref geladen wird. Daher habe ich mir die Sache im hyperref angeschaut und letztlich in der Prämpel mein fontenc um die Option PD1 erweitert -> \usepackage[PD1,T1]{fontenc}

Leider führt das noch nicht zum gewünschten Ergebnis. Das Ergebnis von listfiles ist hier zu finden: http://pastebin.com/J2ZBUXiU

Minimalbeispiel:

\documentclass[]{scrartcl}
\setkomafont{sectioning}{\rmfamily}
\usepackage[latin1]{inputenc}
\usepackage[PD1,T1]{fontenc}
\usepackage{lmodern}
\usepackage{textcomp}
\usepackage[]{hyperref}
\listfiles
\begin{document}
\section{Screening and modelling of \texorpdfstring{CO\textsubscript{2}}{Screening and modelling of CO\textsubscript{2}}}
\end{document}

Würde mich freuen wenn Ihr mir weiterhelfen könntet.

Gruß Thomas
Christian Zietz
2012-08-15 15:08:41 UTC
Permalink
Post by t***@gmail.com
\subsubsection{Screening and modelling of \texorpdfstring{CO\textsubscript{2}}{Screening and modelling of CO\textsubscript{2}}}
Ohne jetzt in der Doku nachzusehen: Benötigt \texorpdfstring nicht
gerade zwei Argumente: eins, das in LaTeX gesetzt wird und eins, das im
PDF-Bookmark verwendet wird? Also eher:

\subsubsection{Screening and modelling of
\texorpdfstring{CO\textsubscript{2}}{CO2}}

Christian
--
Christian Zietz - CHZ-Soft - czietz (at) gmx.net
WWW: http://www.chzsoft.de/
PGP/GnuPG-Key-ID: 0x6DA025CA
Ulrich D i e z
2012-08-15 15:39:56 UTC
Permalink
Post by t***@gmail.com
Ich möchte in einer Überschrift 'Screening and modelling
of CO2' stehen haben, wobei CO2 halt als Formel gesetzt
werden soll. Wenn ich \texorpdfstring verwende habe ich
kein Problem mit der Überschrift im Dokument, sehr wohl
aber mit dem Lesezeichen im PDF.
\subsubsection{Screening and modelling of \texorpdfstring{CO\textsubscript{2}}{Screening and modelling of CO\textsubscript{2}}}
\texorpdfstring{<TeX-String>}{<pdf-String>}

ist dazu gedacht, Dir die Möglichkeit zu geben, festzulegen, welche
Token verwendet werden sollen, wenn etwas "normales" gemacht
wird (<TeX-String>) und welche Tolen verwendet werden sollen,
wenn etwas "pdf-spezifisches" gemacht wird (<pdf-String>), bspw
ein Lesezeichen/Bookmark fürs pdf-file.

Du legst dabei selbst fest, was Du wo für Token angibst und es ist
dabei an Dir, für den <pdf-String> nur solche Token anzugeben, die
bei pdf-spezifischen Dingen bzw für "legal PDFDocEncoded Strings"
bzw für Dinge wie Lesezeichen/Bookmarks zugelassen sind und
bei deren Erzeugung nicht zu Problemen führen.

Also zum Beispiel:

\documentclass[]{scrartcl}
\setkomafont{sectioning}{\rmfamily}
\usepackage[latin1]{inputenc}
\usepackage[PD1,T1]{fontenc}
\usepackage{lmodern}
\usepackage{textcomp}
\usepackage[]{hyperref}
\begin{document}
\tableofcontents
\subsubsection{%
Screening and modelling of
\texorpdfstring{CO\textsubscript{2}}{CO\string_(2)}%
}%
\end{document}



Dann gibt es mit \pdfstringdefDisableCommands noch die Möglichkeit,
festzulegen, wie ein Token, welches bei Pdf-Spezifischem/bei der
Erzeugung eines "legal PDFDocEncoded Strings" Probleme
machen würde, immer dann kurzfristig umdefiniert wird, wenn TeX
sich anschickt, gleich etwas Pdf-Spezifisches, zB ein Bookmark/
Lesezeichen zu basteln. Um das Konzept nicht ad absurdum zu
führen, gibt man für diese Umdefinition Token vor, welche in
pdf-Strings, bspw Lesezeichen/Bookmarks, keine Probleme machen:


\documentclass[]{scrartcl}
\setkomafont{sectioning}{\rmfamily}
\usepackage[latin1]{inputenc}
\usepackage[PD1,T1]{fontenc}
\usepackage{lmodern}
\usepackage{textcomp}
\usepackage[]{hyperref}
\pdfstringdefDisableCommands{%
\def\textsubscript#1{\string_(#1)}%
}%
\begin{document}
\tableofcontents
\subsubsection{Screening and modelling of CO\textsubscript{2}}%
\end{document}



Ulrich
Heiko Oberdiek
2012-08-15 18:24:15 UTC
Permalink
Post by t***@gmail.com
\subsubsection{Screening and modelling of \texorpdfstring{CO\textsubscript{2}}{Screening and modelling of CO\textsubscript{2}}}
Siehe unten.
Post by t***@gmail.com
Hier bekomme ich weiterhin die Warnung 'Token not allowed in a PDF string (PDFDocEncoding), obwohl PD1 ja eigentlich unterstützt werden sollte und auch automatisch von hyperref geladen wird. Daher habe ich mir die Sache im hyperref angeschaut und letztlich in der Prämpel mein fontenc um die Option PD1 erweitert -> \usepackage[PD1,T1]{fontenc}
Nein, PD1 oder PU werden nicht bei fontenc angegeben, dies wird
automatisch von hyperref erledigt.
Post by t***@gmail.com
\documentclass[]{scrartcl}
\setkomafont{sectioning}{\rmfamily}
\usepackage[latin1]{inputenc}
\usepackage[PD1,T1]{fontenc}
\usepackage[T1]{fontenc}
Post by t***@gmail.com
\usepackage{lmodern}
\usepackage{textcomp}
\usepackage[]{hyperref}
\listfiles
\begin{document}
\section{Screening and modelling of \texorpdfstring{CO\textsubscript{2}}{Screening and modelling of CO\textsubscript{2}}}
Eine tiefgestellte Zwei gibt es nicht im PDFDocEncoding (PD1), wohl
aber in Unicode.

\usepackage[pdfencoding=auto]{hyperref}%
% oder \usepackage[unicode]{hyperref}

\section{Screening and modelling of
CO\texorpdfstring{\textsubscript{2}}{\texttwoinferior}}

Oder man definiert sich \texttwoinferior im T1-Encoding nach, so dass
man \textorpdfstring gar nicht erst braucht.

\documentclass{scrartcl}
\setkomafont{sectioning}{\rmfamily}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{lmodern}
\usepackage[pdfencoding=auto]{hyperref}
\usepackage{bookmark}% verbesserte Lesezeichenverwaltung

\DeclareTextCommand{\texttwoinferior}{T1}{\textsubscript{2}}

\begin{document}
\section{Screening and modelling of CO\texttwoinferior}
\end{document}
--
Heiko Oberdiek
t***@gmail.com
2012-08-16 08:15:01 UTC
Permalink
Post by Heiko Oberdiek
Oder man definiert sich \texttwoinferior im T1-Encoding nach, so dass
man \textorpdfstring gar nicht erst braucht.
\documentclass{scrartcl}
\setkomafont{sectioning}{\rmfamily}
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{lmodern}
\usepackage[pdfencoding=auto]{hyperref}
\usepackage{bookmark}% verbesserte Lesezeichenverwaltung
\DeclareTextCommand{\texttwoinferior}{T1}{\textsubscript{2}}
\begin{document}
\section{Screening and modelling of CO\texttwoinferior}
\end{document}
--
Heiko Oberdiek
Hallo Heiko,

vielen Dank für die ausführlichen Erklärungen. Dann habe ich den Teil im Hyperref Manual einfach falsch verstanden und der Befehl \texttwoinferior war mir nicht bekannt.

Mittlerweile funktioniert alles, nur wenn ich das von dir eingebrachte Paket 'bookmark' verwende bekomme ich einen Fehler: Option clash for package hyperref. Im weiteren Verlauf des Dokumentes, an der Stelle der Überschrift mit der Summenformel, dann eine Warnung: Glyph not defined in PD1 encoding.

Laß ich das Paket weg funktioniert es einwandfrei.
Der Fehler wird auf der Konsole direkt nach dem Aufruf von ..\tex\latex\oberdiek\bkm-pdftex.def aufgeführt.

Gruß Thomas
Heiko Oberdiek
2012-08-16 14:54:06 UTC
Permalink
Post by t***@gmail.com
Post by Heiko Oberdiek
\usepackage[pdfencoding=auto]{hyperref}
\usepackage{bookmark}% verbesserte Lesezeichenverwaltung
Mittlerweile funktioniert alles, nur wenn ich das von dir eingebrachte Paket 'bookmark' verwende bekomme ich einen Fehler: Option clash for package hyperref. Im weiteren Verlauf des Dokumentes, an der Stelle der Überschrift mit der Summenformel, dann eine Warnung: Glyph not defined in PD1 encoding.
Das Paket `bookmark' laedt das Paket `hyperref' ohne Optionen. Daher
lade es besser *nach* `hyperref', wie im Beispiel angegeben.
Die Glyph-Warnung ist nur ein Folgefehler, weil die Option
`pdfencoding=auto' nicht ausgefuehrt wurde.
--
Heiko Oberdiek
Heiko Oberdiek
2012-08-16 15:00:51 UTC
Permalink
Post by t***@gmail.com
der Befehl \texttwoinferior war mir nicht bekannt.
Mittlerweile unterstuetzen die Optionen `unicode` oder
`pdfencoding=auto` Hunderte von Zeichennamen. Aufgrund von NFSS2 haben
diese meist ein Prefix `text': \texttwosuperior. Mit Option `psdextra'
werden weitere Hunderte Aliasnamen hinzugefuegt, insbesondere Namen
ohne `text': \twosuperior.

Am einfachsten ist es vermutlich, das Zeichen in der Unicode-Tabelle
nachzusehen und dann in puenc.def nachzusehen, ob es dazu
einen Befehl gibt. Wenn man die Option `psdextra' laedt, dann
kann man auch dort nach Alias-Namen nachschauen. Dann kann man sich
vielleicht das \texorpdfstring sparen.
--
Heiko Oberdiek
Lesen Sie weiter auf narkive:
Loading...