Anzeige:
Ergebnis 1 bis 4 von 4

Thema: \verbatim und \texorpdfstring gemeinsam?

  1. #1
    Registrierter Benutzer
    Registriert seit
    31.03.2011
    Beiträge
    12

    \verbatim und \texorpdfstring gemeinsam?

    Guten Tag.

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

    Code:
    \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

  2. #2
    Registrierter Benutzer Avatar von cgnieder
    Registriert seit
    06.04.2011
    Ort
    Herrenberg
    Beiträge
    254
    Verbatim funktioniert nicht in Argumenten von Befehlen. Du müsstest den Fehler
    Code:
    ! LaTeX Error: \verb illegal in command argument.
    erhalten.

    Ich würde das Problem umgehen:

    Code:
    \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}


    Grüße
    Clemens

  3. #3
    Registrierter Benutzer
    Registriert seit
    31.03.2011
    Beiträge
    12
    Lieber Clemens.
    Vielen Dank für den tollen Tipp. In leichter Variation schreibe ich nun:
    Code:
    \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

  4. #4
    Registrierter Benutzer Avatar von cgnieder
    Registriert seit
    06.04.2011
    Ort
    Herrenberg
    Beiträge
    254
    Kleine Anmerkung: Du solltest die Zeilenenden zur Sicherheit mit % verstecken. Außerdem scheinen Deine Definitionen von \{, \} und \_ überflüssig.
    Im LaTeX Kernel findest Du

    Code:
    \DeclareRobustCommand{\{}{\ifmmode\lbrace\else\textbraceleft\fi}
    \DeclareRobustCommand{\}}{\ifmmode\rbrace\else\textbraceright\fi}
    ...
    \DeclareRobustCommand{\_}{%
       \ifmmode\nfss@text{\textunderscore}\else\textunderscore\fi}
    Folgendes sollte reichen:

    Code:
    \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:

    Code:
    \documentclass{article}
    \usepackage[T1]{fontenc}
    \usepackage{hyperref}
    \pdfstringdefDisableCommands{%
      \def\\{\textbackslash}%
      \def\^{\textasciicircum}%
    }
    \begin{document}
    
    \section{A\\B}
    
    \end{document}
    Grüße
    Clemens

Stichworte

Lesezeichen

Berechtigungen

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