Anzeige:
Ergebnis 1 bis 4 von 4

Thema: Illegal unit of measure in picture-Umgebung

  1. #1
    Registrierter Benutzer
    Registriert seit
    08.08.2012
    Beiträge
    4

    Illegal unit of measure in picture-Umgebung

    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:

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

    \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).

    \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.

  2. #2
    Registrierter Benutzer
    Registriert seit
    19.05.2009
    Beiträge
    4.045
    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?

  3. #3
    Registrierter Benutzer
    Registriert seit
    06.03.2010
    Ort
    St. Petersburg, Russland
    Beiträge
    2.468
    Du meinst wohl eher so:
    Code:
    \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...
    Geändert von rstuby (08-08-2012 um 15:13 Uhr)

  4. #4
    Registrierter Benutzer
    Registriert seit
    08.08.2012
    Beiträge
    4
    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:

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

Lesezeichen

Berechtigungen

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