Seite 1 von 1

Problem bei langer Variable mit Zeilenumbruch

Verfasst: So 10. Mai 2009, 00:17
von magoo
Hi Leute,

mit folgendem Code bekomme ich wie erwartet 3 Zeilen untereinander:
\documentclass[12pt,a4paper,german]{article}

\usepackage[ngerman]{babel}
\usepackage[latin1]{inputenc}

\makeatletter

\def\@myvar{Zeile1\\Zeile2\\Zeile3}

\begin{document}
\@myvar
\end{document}
Leider tut das nicht mehr so wenn die Variable länger wird. Sieht der String z.B. so aus "Dieser String wird ein bisschen\\länger, denn wieso sollte eine\\Variable nicht auch mal mehr beinhalten" bekomme ich folgende Fehlermeldung:
! Undefined control sequence.
\\  ->\let \reserved@e
                       \relax \let \reserved@f \relax \@ifstar {\let \reserv...
l.130

?
Leider bin ich in LaTeX noch nicht fit genug um die Ursache tracen zu können, und die Meldung einfach in Google zu kloppen bringt keine brauchbaren Resultate.

Kann hier jemand helfen?

Verfasst: Mo 11. Mai 2009, 09:54
von phi
Hallo,

bitte poste ein entsprechendes Minimalbeispiel. Wenn ich deinen zweiten Satz einfüge, funktioniert es bei mir ebenfalls problemlos.

Verfasst: Mo 11. Mai 2009, 11:54
von magoo
Nachdem ich meine ursprüngliche Datei in Richtung MB runtergekürzt habe bin ich auf die Fehlerquelle gestoßen:

Die hyperref Option "pdftitle={\@title}" will den mehrzeiligen String nicht fressen.

Gibt es für so einen Fall sowas wie ein string-replace in LaTeX?

TeX und PDF

Verfasst: Mo 11. Mai 2009, 15:17
von Stefan Kottwitz
Hallo Magoo,
magoo hat geschrieben: Die hyperref Option "pdftitle={\@title}" will den mehrzeiligen String nicht fressen.
Gibt es für so einen Fall sowas wie ein string-replace in LaTeX?
Für so etwas gibt es:
\texorpdfstring{TeXstring}{PDFstring}
Du könntest statt \@title jedoch auch einen Titel direkt eintragen.

Stefan

Verfasst: Mo 11. Mai 2009, 15:32
von magoo
Hi Stefan,

perfekt. Vielen Dank für die Hilfe.
Die Variable benutz ich weil der Titel momentan 4mal im Dokument vorkommt.

Verfasst: Mo 11. Mai 2009, 19:17
von magoo
Da ich jetzt Zeit hatte mir Deine Antwort genauer anzuschauen stelle ich fest dass das nicht die Lösung meines Problem ist. Ich dachte das Command würde meinen String in eine passende Form wandeln.

Also ist die Frage immer noch aktuell: Gibt es in LaTeX ein Command zum Ersetzen von Linebreaks in einem String?

Stringmanipulationen

Verfasst: Mo 11. Mai 2009, 19:23
von Stefan Kottwitz
Hi magoo,

für Stringmanipulationen eignet sich das xstring-Paket, siehe Doku.

Stefan

Verfasst: Mo 11. Mai 2009, 19:59
von magoo
Danke für den Tipp. \StrSubstitute sah vielversprechend aus, will aber in diesen Fall (in der hyperref-option pdftitle) nicht klappen.

Falls noch jemand einen weiteren Vorschlag hat nur her damit :-)

Verfasst: Mi 13. Mai 2009, 09:41
von phi
Probier mal \texorpdfstring in Kombination mit \pdfstringDisableCommands (siehe hyperref-Handbuch).