PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : (Fortschrittsbalken) Einheiten aus Usereingabe entfernen



Spindoctor
03-09-2010, 14:41
Hallo!

Für mein Fortschrittsbalken-Projekt möchte ich, dass die User diverse Optionen benutzen können. Darunter sollen auch diverse Dimensions-Angaben gemacht werden können, etwa die Länge des Balken.

Angenehm wäre es, wenn die User dabei eine Einheit ihrer Wahl nehmen können. Mögliche Eingaben wären etwa:


barWidth=3cm,
barWidth=50 em,
barWidth=2,
Da ich mit diesen Eingaben aber weiter rechnen muss (eh nur multiplizieren und dividieren mit Skalaren), und weil fp (was ich zum rechnen verwende) mit den Einheiten Probleme hat, muss ich irgendwie die Einheiten von den Zahlen (und eventuellen Leerzeichen) trennen. Gibts dafür einen eleganten Weg?

Danke!


wäre das printlen-Paket (http://www.ctan.org/tex-archive/help/Catalogue/entries/printlen.html) vielleicht hilfreich?

mechanicus
03-09-2010, 16:40
Hi,

schaue mal in das Paket mdframed. Dort findest du eine Möglichkeit, wie du diese Eingaben realisieren kannst.

Gruß
Marco

Spindoctor
04-09-2010, 03:26
cool, das ist ein Paket von Dir oder?

Da werd ich mir einiges abschauen! Aber kannst du ungefähr sagen in welchen Zeilen das mit den unterschiedlichen Längenangaben ist? Find das nicht so leicht...

Danke!

voss
04-09-2010, 07:24
Find das nicht so leicht...



\documentclass{minimal}
\newlength\test
\begin{document}

\test=12cm\relax
\the\test

\makeatletter
\strip@pt\test

\def\IntStrip#1{\expandafter\IntStrip@i#1..\@nil}
\def\IntStrip@i#1.#2#3\@nil{#1}
\IntStrip{\the\test}

\end{document}

Herbert

mechanicus
04-09-2010, 08:09
Da ich mit diesen Eingaben aber weiter rechnen muss (eh nur multiplizieren und dividieren mit Skalaren), und weil fp (was ich zum rechnen verwende) mit den Einheiten Probleme hat, muss ich irgendwie die Einheiten von den Zahlen (und eventuellen Leerzeichen) trennen. Gibts dafür einen eleganten Weg?
Ich würde das Paket calc nutzen. Hier kannst du einfach multiplizieren:

\documentclass{minimal}
\usepackage{calc}
\newlength\test
\setlength{\test}{2cm*3}

\begin{document}
\the\test

\setlength{\test}{6cm}
\the\test
\end{document}

Gruß
Marco

voss
04-09-2010, 08:37
Ich würde das Paket calc nutzen. Hier kannst du einfach multiplizieren:

\documentclass{minimal}
\usepackage{calc}
\newlength\test
\setlength{\test}{2cm*3}

\begin{document}
\the\test

\setlength{\test}{6cm}
\the\test
\end{document}


für solche einfachen Sachen ist calc ein wenig "Overkill" ...


\documentclass{minimal}
\newlength\test
\newlength\testA\testA=2cm
\setlength\test{3\testA}

\begin{document}
\the\test

\setlength\test{6cm}
\the\test
\end{document}

Herbert

mechanicus
04-09-2010, 08:42
für solche einfachen Sachen ist calc ein wenig "Overkill" ...
wohl wahr :D


Gruß
Marco

Spindoctor
04-09-2010, 14:25
\documentclass{minimal}
\newlength\test
\begin{document}

\test=12cm\relax % relax: mach nichts mit \test. (Könnte man in dem Fall auch weglassen)
\the\test % the; Gib \test aus (ohne the würde eine Fehlermeldung kommen)

\makeatletter % Sollte da nicht noch ein \makeatother kommen?
\strip@pt\test % \strip@pt nimm pt aus length raus

\def\IntStrip#1{\expandafter\IntStrip@i#1..\@nil}
\def\IntStrip@i#1.#2#3\@nil{#1}
\IntStrip{\the\test}

\end{document}Herbert

Wow, cool, das funktioniert ja einwandfrei!

hab mal in Kommentaren dazugeschrieben, was meiner Meinung nach die (mir bisher unbekannten) Befehle machen. Stimmt das?

voss
04-09-2010, 15:16
Wow, cool, das funktioniert ja einwandfrei!

hab mal in Kommentaren dazugeschrieben, was meiner Meinung nach die (mir bisher unbekannten) Befehle machen. Stimmt das?


\documentclass{minimal}
\newlength\test
\begin{document}

\test=12cm\relax % relax: mach nichts mit \test. (Könnte man in dem Fall auch weglassen)

dann machmal: \test=12cm\the\test

\makeatletter % Sollte da nicht noch ein \makeatother kommen?
hier egal, da ich eh nichts anderes mache ...


Herbert

Spindoctor
05-09-2010, 18:38
dann machmal: \test=12cm\the\test


ah!

Aber \setlength{\test}{12cm} würd gehn!

Danke!

mechanicus
05-09-2010, 18:43
Aber \setlength{\test}{12cm} würd gehn!

Ist auch die besser LaTeX2e form. Herbert mag eben doch tex zu sehr:D

Gruß
Marco

voss
06-09-2010, 06:55
Aber \setlength{\test}{12cm} würd gehn!


oder eben \test=12cm\relax

Herbert

Spindoctor
06-09-2010, 21:57
alles klar :)