PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : \verbatim und \texorpdfstring gemeinsam?



simon
30-09-2013, 17:39
Guten Tag.

Kennt jemand eine Möglichkeit, Formeln in PDF-Lesezeichen auf einfache Weise in LaTeX Code darzustellen? Mir schwebt so etwas vor wie



\section{Wir berechnen \texorpdfstring
{\int_{0}^\infty x^2\,dx}
{\verb+\int_{0}^\infty x^2\,dx+}}


Die Idee ist also, den original LaTeX-Code, den ich zum Erzeugen der Überschrift verwende, gleichzeitig in das PDF-Lesezeichen zu schreiben.

Vielen Dank für Eure Hilfe,
Simon

cgnieder
30-09-2013, 17:57
Verbatim funktioniert nicht in Argumenten von Befehlen. Du müsstest den Fehler

! LaTeX Error: \verb illegal in command argument.
erhalten.

Ich würde das Problem umgehen:


\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{hyperref}

% define how commands act in pdf strings:
\pdfstringdefDisableCommands{%
\def\code#1{#1}%
\def\^{\textasciicircum}%
}

% define \cs{name} to print `\name':
\newcommand*\code[1]{\texttt{#1}}
\newcommand*\cs[1]{\code{\textbackslash#1}}

\begin{document}

\section{Wir berechnen \texorpdfstring
{$\int_{0}^\infty x^2\,dx$}
{\code{\cs{int}\_\{0\}\^\cs{infty} x\^2 dx}}}

\end{document}

http://www.mrunix.de/forums/attachment.php?attachmentid=5864&stc=1&d=1380556620

Grüße

simon
30-09-2013, 18:54
Lieber Clemens.
Vielen Dank für den tollen Tipp. In leichter Variation schreibe ich nun:


\pdfstringdefDisableCommands{%
\def\\{\textbackslash}
\def\{{\textbraceleft}
\def\}{\textbraceright}
\def\_{\textunderscore}
\def\^{\textasciicircum}
}
\newcommand\bookmark[2]{\texorpdfstring{#1}{\$#2\$}}

\section{Wir berechnen \bookmark{$\int_{0}^\infty x^2\,dx$}
{\\int\_\{0\}^\\infty x\^2\\,dx}

Vielen Dank und Gruß,
Simon

cgnieder
30-09-2013, 19:52
Kleine Anmerkung: Du solltest die Zeilenenden zur Sicherheit mit % verstecken. Außerdem scheinen Deine Definitionen von \{, \} und \_ überflüssig.
Im LaTeX Kernel findest Du


\DeclareRobustCommand{\{}{\ifmmode\lbrace\else\tex tbraceleft\fi}
\DeclareRobustCommand{\}}{\ifmmode\rbrace\else\tex tbraceright\fi}
...
\DeclareRobustCommand{\_}{%
\ifmmode\nfss@text{\textunderscore}\else\textunder score\fi}

Folgendes sollte reichen:


\pdfstringdefDisableCommands{%
\def\\{\textbackslash}%
\def\^{\textasciicircum}%
}

Du solltest übrigens im Kopf behalten, dass die Neudefinitionen in allen pdfstrings Anwendung finden. Nicht, dass Du durch sowas überrascht wirst:


\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{hyperref}
\pdfstringdefDisableCommands{%
\def\\{\textbackslash}%
\def\^{\textasciicircum}%
}
\begin{document}

\section{A\\B}

\end{document}

Grüße