.

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

Re: nur der Vollständigkeit halber

von cgnieder » Mo 3. Dez 2012, 23:09

ChristophW hat geschrieben:leadingzero prüft, ob 05 < 10 ist. Das stimmt ja auch. Aber hier wäre wohl eine Prüfung auf die Länge der Zeichenkette sinnvoller, oder? Wie macht man das?
Dann auch mein Senf dazu: \two@digits macht es anders und entfernt eine eventuelle führende Null (und fügt sie, falls benötigt; wieder an)
\def\two@digits#1{\ifnum#1<10 0\fi\number#1}
Das geschieht durch \number:
\documentclass{article}
\begin{document}
\number05
\end{doument}
das hier lediglich die führende Null entfernt und sonst nichts tut.

Grüße[/quote]

nur der Vollständigkeit halber

von rais » Mo 3. Dez 2012, 22:49

ChristophW hat geschrieben: leadingzero prüft, ob 05 < 10 ist. Das stimmt ja auch. Aber hier wäre wohl eine Prüfung auf die Länge der Zeichenkette sinnvoller, oder? Wie macht man das?
das ginge mit \settowidth, etwa
\documentclass{article}
\newlength\lena
\newlength\lenb
\newcommand*\leadingzero[1]{%
  \settowidth\lena{#1}%
  \settowidth\lenb{12}%
  \ifdim \lena<\lenb 0\fi#1%
}% führende Null
\begin{document}
\leadingzero{5}, \leadingzero{05}
\end{document}
MfG
Rainer

von cgnieder » Mo 3. Dez 2012, 11:50

ChristophW hat geschrieben:Ich hab jetzt aber eine andere Lösung gefunden:
\two@digits
Daran merkt man, dass es spät war gestern Abend: \two@digits hätte mir auch einfallen müssen...

von u_fischer » Mo 3. Dez 2012, 10:06

Dies sollte man doch mit dem Kommando "date" realisieren können, oder?
\date dient dazu, das gewünschte Datum zu speichern, nicht um es zu drucken. Da du isodate benutzt, solltest du die Dokumentation lesen. Auf Seite 4 steht, wie man ein beliebiges Datum druckt.
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[ngerman, num]{isodate}
\begin{document}

\daymonthsepgerman{\thinspace}{}
\monthyearsepgerman{\thinspace}{}
\printdate{1.12.2012}
\end{document}

von Johannes_B » Mo 3. Dez 2012, 10:01

von ChristophW » Mo 3. Dez 2012, 09:43

.

von Johannes_B » Mo 3. Dez 2012, 08:43

Jap,
\newcommand*\leadingzero[1]{\ifnum#1<10\relax0#1\else#1\fi}
schreibt dir eine null vor dein Argument, somit wird aus 05 -> 005

Wie man die Länge abfragt, kann ich dir grad nicht sagen, aber du könntest
auch abfragen, ob das Argument mit einer null anfängt?

Wenn du daran interessiert bist mehr zu erfahren, dann tipp doch in dein Terminal mal
texdoc programming
ein, das sollte dich zum Dokument Notes On Programming in TEX von Christian Feuersänger führen.

von ChristophW » Mo 3. Dez 2012, 00:07

.

von cgnieder » So 2. Dez 2012, 23:13

Das geht, allerdings nicht mit LaTeX-Hausmitteln, sondern man muss auf das TeX-Primitive \def zurückgreifen.

Syntax:
\def\macro#1{was cooles mit #1}
% Verwendung:
\macro{arg}

\def\macro#1#2{was colloes mit #1 und #2}
% Verwendung
\macro{arg1}{arg2}
Nun kann man aber auch die Argumente durch beliebige Zeichenketten trennen:
\def\macro ABC#1D#2EF#3{was cooles mit #1, #2 und #3}

% Verwendung:
\macro ABCarg1Darg2EF{arg3}
Hier mein konkreter Vorschlag:
\documentclass{article}
\usepackage[ngerman, num]{isodate}
\daymonthsepgerman{\thinspace}{}
\monthyearsepgerman{\thinspace}{}

\usepackage{etoolbox}
\makeatletter
\newcommand*\leadingzero[1]{\ifnum#1<10\relax0#1\else#1\fi} % führende Null
\def\date@format#1.#2.#3\q@stop{\leadingzero{#1}.\thinspace\leadingzero{#2}.\thinspace#3}
\renewcommand*\date[1]{%
  \ifblank{#1}
    {\date@format\the\day.\the\month.\the\year\q@stop}
    {\date@format#1\q@stop}}
\makeatother
\begin{document}

\date{}% heute

oder \date{1.3.1979}% irgendwann

\end{document}

von ChristophW » So 2. Dez 2012, 21:48

.

Nach oben