Seite 1 von 2

.

Verfasst: Sa 1. Dez 2012, 21:51
von ChristophW
.

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

Verfasst: So 2. Dez 2012, 23:13
von cgnieder
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}

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

Verfasst: Mo 3. Dez 2012, 08:43
von Johannes_B
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.

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

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

Verfasst: Mo 3. Dez 2012, 10:06
von u_fischer
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}

Verfasst: Mo 3. Dez 2012, 11:50
von cgnieder
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...

nur der Vollständigkeit halber

Verfasst: Mo 3. Dez 2012, 22:49
von rais
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