Zahlen und Einheiten

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Zahlen und Einheiten

von rais » Mo 11. Okt 2010, 01:14

Hallo,
NTNU hat geschrieben: weil der SIrange Befehl immer zwei Werte verlangt.
naja, drei Parameter: zwei Werte und die Einheit, wovon Du in Deinem \xxx die Einheit unterschlägst ...
NTNU hat geschrieben:
\NewDocumentCommand\xxx{om}{%
  \IfNoValueTF{#1}{%
    \SI{#2}{\day}%
  }{%
    \SIrange{#1}{#2}{\day}%
  }%
}
ganz abgesehen davon, daß \day eine TeX-Primitive ist, mit der Du Afair den Tag der Dateierstellung abfragen kannst (\the\day), warum übergibst Du Deinem Makro nicht auch die Einheit (und änderst Deine \xxx-Aufrufe entsprechend)? z.B.
\NewDocumentCommand\xxx{omm}{%
  \IfNoValueTF{#1}{%
    \SI{#2}{#3}%
  }{%
    \SIrange{#1}{#2}{#3}%
  }%
}
(ungetestet)

BTW: ich verstehe Deinen Einwand nicht: Du weißt doch bereits beim Schreiben, ob Du einen Bereich oder einen Wert (mit Einheit) angeben willst, wo ist das Problem, \SI und \SIrange entsprechend zu verwenden?

MfG
Rainer

von NTNU » Fr 8. Okt 2010, 18:06

Hallo Benedikt,

weil der SIrange Befehl immer zwei Werte verlangt. Wenn ich nur eine Zahl habe, kann ich ihn nicht verwenden. Was ich wollte ist, dass ich einen Befehl für Zahlen und Einheiten verwenden kann, der jedoch optional erkennt wenn ich einen Bereich habe.

Im Prinzip so wie ich es im Minimalbeispiel gezeigt habe.

LG

EDIT:

Was mir noch einfällt ist, dass ich mir das
 \newcommand 
sparen kann, indem ich das ganze etwa so aufbaue:
\NewDocumentCommand\xxx{om}{%
  \IfNoValueTF{#1}{%
    \SI{#2}{\day}%
  }{%
    \SIrange{#1}{#2}{\day}%
  }%
}

von cliffhanger » Fr 8. Okt 2010, 12:37

Hi NTNU,

warum nimmst du nicht einfach den von siunitx bereitgestellten Befehl
\SIrange{Wert1}{Wert2}{Einheit}
Damit kannst du automatisch über die Optionen von siunitx einstellen, wie das "bis" dargestellt werden soll und ob die Einheit nach jedem der beiden Werte oder nur einmal am Ende ausgegeben werden soll.

Grüße
Benedikt

Zahlen und Einheiten

von NTNU » Fr 8. Okt 2010, 09:46

Hallo zusammen,

ich muss relativ viele Messergebnisse inklusive Einheiten runter schreiben. Für letzteres verwende ich das Paket siunitx. Nun kommt es vor, dass ich relativ oft Zahlenbereiche angeben muss, sprich 5-10 g oder so.

Im Minimalbeispiel steht wie ich das früher gemacht habe. Jetzt habe ich mir über das Paket xparse neue Kommandos mit optionalen Argumenten gebastelt (siehe Minimalbeispiel).

Gibt es da vielleicht noch eine elegantere Lösung? Ich müsste das nun theoretisch für jede Einheit machen, die ich benötige. Wie macht ihr das?

Zusätzlich würde mich noch interessieren, ob ihr jede Zahl über den Befehl \num{} bereitstellt. Hat man mehr als 4 Ziffern, kommt ja die über siunitx eingestellte Formatierung zum tragen, bzw. auch bei wissenschaftlicher Schreibweise. Aber für alles andere konnte ich zumindest optisch keinen Unterschied feststellen.

Würde mich über antworten freuen.
\documentclass{scrartcl}

\usepackage[load-configurations=abbreviations]{siunitx}
\usepackage{xparse}


\NewDocumentCommand\neueeinheit{om}{%			% neues Kommando mit zwei optionalen Einheiten.
  \IfNoValueTF{#1}{%
    \test{#2}%
  }{%
    \num{#1}--\test{#2}%
  }%
}

\DeclareSIUnit\TEST{xyz}									% eigene Einheit für siunitx bereitstellen
	\newcommand{\test}[1]{\SI{#1}{\TEST}}
	
	
\begin{document}

\section*{Meine neuen Einheiten}

\begin{enumerate}

	
	\item	Ich habe \num{4}--\neueeinheit{6} erhalten.  [\textbf{alt}]
	\item	Ich habe \neueeinheit[4]{6}.								 [\textbf{neu}]
	\item Ich habe \neueeinheit{5} erhalten.					 [\textbf{ohne optionales Argument}]

\end{enumerate}

\end{document}

Nach oben