Hallo!
Ich bin gerade dabei, mir eine lco-Datei für scrlttr2 zu basteln. Im Fuß möchte ich mehrere Blöcke (Adresse, Bankverbindung, Telefonnummer/E-Mail/URL) haben, die jeweils aus drei Zeilen bestehen. Die einzelnen Blöcke wollte ich in eine parbox oder auch eine einspaltige Tabelle packen; um deren Breite zu bestimmen, benötige ich die Länge der längsten Zeile im jeweiligen Block.
Dazu habe ich ein einfaches Makro erstellt, das die einzelnen Zeilen ausmisst und den größten Wert zurückgibt. Im Prinzip funktioniert das auch -- wenn ich das Makro im Textteil aufrufe, wird die Länge der längsten Zeile ausgegeben. Versuche ich allerdings, einer Länge den vom Makro zurückgegebenen Wert zuzuweisen, bricht LaTeX mit folgender Fehlermeldung ab:
Anscheinend wird des Makros Rückgabewert also als Text interpretiert, nicht als Längenangabe. Was mache ich falsch?! Missing number, treated as zero.
\let
l.52 ...ength{\test}{\maxwidth{asdf}{ASDF}{asdfg}}
?
Hier noch das Minimalbeispiel:
Beste Grüße!Code:\documentclass[version=last,visualize]{scrlttr2} \usepackage{filecontents} \begin{filecontents}{minimal.lco} \ProvidesFile{minimal.lco} \LetterOptionNeedsPapersize{paper=a4}{a4} \RequirePackage[utf8]{inputenc} \RequirePackage[T1]{fontenc} \RequirePackage{calc} \RequirePackage{printlen} \RequirePackage{xifthen} \@newplength{maxwidth} \@newplength{testwidth1} \@newplength{testwidth2} \newcommand{\maxwidth}[3]{% \@setplength{maxwidth}{\widthof{#1}} \@setplength{testwidth1}{\widthof{#2}} \@setplength{testwidth2}{\widthof{#3}} \ifthenelse{% \lengthtest{\useplength{testwidth1} > \useplength{maxwidth}} } {\@setplength{maxwidth}{\useplength{testwidth1}}} {} \ifthenelse{% \lengthtest{\useplength{testwidth2} > \useplength{maxwidth}} } {\@setplength{maxwidth}{\useplength{testwidth2}}} {}% \printlength{\useplength{maxwidth}} } \end{filecontents} \LoadLetterOption{minimal} \setlength{\parindent}{0cm} \begin{document} \begin{letter}{~} \opening{} Länge der längsten Zeile: \maxwidth{asdf}{ASDF}{asdfg}\\[1cm] \newlength{\test} \setlength{\test}{\maxwidth{asdf}{ASDF}{asdfg}} \fbox{\parbox{\test}{asdf\\ASDF\\asdfg}} \closing{} \end{letter} \end{document}
Andreas
Lesezeichen