PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Illegal unit of measure in picture-Umgebung



kosmo
08-08-2012, 15:52
Hi alle zusammen.

Ich habe das folgende Problem: Um mein Poster-Template (atm noch sehr unschön an einigen Stellen) zu vervollständigen, versuche ich gerade die Fehler, die mir TeXnicCenter ausgibt, zu beseitigen. Das verbleibende Problem liegt in dem Verhalten der picture-Umgebung begründet (glaube ich). Ich will einen Kasten um eine Überschrift machen, dabei soll sich die Kastenbreite automatisch an die Breite der Überschrift anpassen.
Mein Code dazu sieht so aus:



\newlength{\breite}
\newlength{\hoehe}
\newcommand{\titels}[1]{\newcommand{\titelr}{#1}}

\begin{document}

\titels{\protect{\textbf{\Huge Ergebnisse II}}}
\settowidth{\breite}{\titelr}
\settoheight{\hoehe}{\titelr}
\addtolength{\breite}{2cm}
\addtolength{\hoehe}{1.6475cm}
\setlength{\unitlength}{1cm}

\begin{picture}(4,1)(1,2)
\setlength{\unitlength}{1cm}
\linethickness{8.4pt}
\put(0,0){\line(1,0){\breite}}
\put(1,0.75){\raggedright{\titelr}}
\put(\breite,-0.1475){\line(0,1){\hoehe}}
\end{picture}\\[1.75em]

Ich bekomme die folgende Fehlermeldung:


! Missing number, treated as zero.
<to be read again>
\begingroup
l.616 \put(0,0){\line(1,0){\breite}}

A number should have been here; I inserted `0'.
(If you can't figure out why I needed to see a number,
look up `weird error' in the index to The TeXbook.)

! Illegal unit of measure (pt inserted).
<to be read again>
\begingroup
l.616 \put(0,0){\line(1,0){\breite}}

Dimensions can be in units of em, ex, in, pt, pc,
cm, mm, dd, cc, nd, nc, bp, or sp; but yours is a new one!
I'll assume that you meant to say pt, for printer's points.
To recover gracefully from this error, it's best to
delete the erroneous units; e.g., type `2' to delete
two letters. (See Chapter 27 of The TeXbook.)

Und das ganze für jede Zeile in der \breite oder \hoehe vorkommt. Ich vermute mal, das Problem ist, dass die Einheiten von \breite bzw. \hoehe nicht passen, hab jetzt ein paar tagelang versucht mir das irgendwie zurechtzubiegen, bin aber kläglich gescheitert.

Wäre sehr dankbar, wenn mir irgendjemand einen Tipp geben könnte, ich bin mit meinem Latein am Ende, hab gegoogelt und natürlich auch im Forum gesucht, aber nichts gefunden.

u_fischer
08-08-2012, 16:08
Du kannst keine Längen (cm oder pt u.ä) in den Argumenten benutzen. Du brauchst simple Zahlen. Umrechnen kannst du z.B. mit \LenToUnit aus dem eso-pic-Paket:


\documentclass{article}
\newlength{\breite}
\newlength{\hoehe}
\newcommand{\titels}[1]{\newcommand{\titelr}{#1}}
\usepackage{eso-pic}
\begin{document}

\titels{\protect{\textbf{\Huge Ergebnisse II}}}
\settowidth{\breite}{\titelr}
\settoheight{\hoehe}{\titelr}
\addtolength{\breite}{2cm}
\addtolength{\hoehe}{1.6475cm}
\setlength{\unitlength}{1cm}

\begin{picture}(4,1)(1,2)
\setlength{\unitlength}{1cm}
\linethickness{8.4pt}
\put(0,0){\line(1,0){\LenToUnit{\breite}}}
\put(1,0.75){\raggedright{\titelr}}
\put(\LenToUnit{\breite},-0.1475){\line(0,1){\LenToUnit{\hoehe}}}
\end{picture}\\[1.75em]

\end{document}

Abgesehen davon: Außer für sehr simple Bilder ist picture nicht wirklich empfehlenswert. Hast du dir schon mal tikz/pgf angeschaut?

rstuby
08-08-2012, 16:11
Du meinst wohl eher so:

\newcommand{\titelr}{}
\newcommand{\titels}[1]{\renewcommand{\titelr}{#1}}

Dein eigentliches Problem kommt aber daher, dass \breite und \hoehe als Längeneinheiten definiert sind, aber \line eine reine Zahl verlangt.

UPD: Oh, Ulrike war schneller und wusste gleich noch eine Lösung...

kosmo
08-08-2012, 18:31
Vielen dank!
Jap, ich weiß das picture nur für sehr simple Bilder gedacht ist - für komplexe(re) Bilder nehm ich normalerwesie Inkscape mit der pdf+LaTeX-Ausgabe und für Diagramme gnuplottex.
Schlußendlich hab ich jetzt noch eine Lösung gefunden, die nichtmal ein neues Paket erfordert:


\makeatletter
\newcommand*{\getlength}[1]{\strip@pt\dimexpr0.035146\dimexpr#1\relax\relax}
\makeatother

Dann kann man einfach \getlength{\breite} verwenden und es funktioniert auch.

Aber nochmal vielen Dank, ohne eure Beiträge wäre ich da noch Äonen rumgeirrt. :)