Seite 1 von 2
Übergabe mehrer Argumente in einer Klammer
Verfasst: Mo 17. Okt 2011, 10:18
von leonidas
Hallo zusammen!
möchte gern ein eigenes Format für Datumsangaben erstellen. Online konnte ich viele Beispiele für das AKTUELLE Datum finden, nicht aber für ein beliebiges.
Habe folgendes bisher fabriziert:
\documentclass[american,a4paper,12pt,bibliography=totoc]{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage[english]{babel}
\newcommand{\datum}[3]{#1. {\ifcase#2\or Jan\or Feb\or M\"ar\or Apr\or
Mai\or Jun\or Jul\or Aug\or
Sep\or Okt\or Nov\or Dez\fi} #3}
\begin{document}
\datum{3}{5}{2011}
\end{document}
Das klappt auch soweit. Allerdings ist mir die Eingabe mit den drei geschweiften Klammer zu uständlich und ich frage mich, ob es nicht auch die Möglichkeit gibt, das Datum so einzugeben:
Gibt es eine Möglichkeit, bei so einer Eingabe den Monat als Argument herauszufischen und anschließend der oben schon angewendeten if-Prüfung zu unterziehen?
schöne Grüße

leo
Verfasst: Mo 17. Okt 2011, 10:34
von domwass
Bevor du das Rad neu erfindest, schau dir mal
isodate an. Damit kannst du
beliebige Datumsangaben in verschiedenen Sprachen und vielen
unterschiedlichen Stilen machen.
Gruß,
Dominik.-
versteh das packet isodate nicht ganz
Verfasst: Mo 17. Okt 2011, 15:02
von leonidas
Hallo Dominik, danke für die schnelle Antwort!
Hab mich heute einige Zeit mit dem Packet isodate beschäftigt, aber irgendwie macht das bei mir nicht das, was ich aus dessen Dokumentation herauslese und schon gar nicht das was ich will - bis jetzt
Vllt kennt sich jemand aus mit diesem Packet?!
Hätte gerne in Englischer Sprache das Format: 21. October 2011
ich krieg aber bisher nur October 21, 2011 hin...
Folgendes macht schon fast, was ich will:
\documentclass[british,a4paper,12pt,bibliography=totoc]{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{babel}
\usepackage[british]{isodate}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\cleanlookdateon
\printdate{21.10.2011}
\end{document}
Wenn ich da noch einen Punkt hinter "21" hinkriege wärs perfekt. Allerdings sind meine globalen Sprachoptionen eigentlich american, nur dann drehts monat und tag wieder um und es gibt ein Komma.
wie kann ich american und british kombinieren ohne Fehler und Warnungen?
mfg
leo
Re: versteh das packet isodate nicht ganz
Verfasst: Mo 17. Okt 2011, 20:41
von rais
Hallo,
leonidas hat geschrieben:
Hätte gerne in Englischer Sprache das Format: 21. October 2011
ich krieg aber bisher nur October 21, 2011 hin...
versuch es zusätzlich mit
MfG
Rainer
punkt
Verfasst: Di 18. Okt 2011, 10:16
von leonidas
Danke an Rainer! der Punkt ist auf alle Fälle da (bei globaler Option british).
Meine Probleme zum Anpassen der Sprachoptionen werfen noch eine Frage auf: Braucht denn das Packet "isodate" eine global vorgegebene Sprache? Aus der Dokumentation entnehme ich, daß es ja eine eigene Option für die Sprache bei der Aufrufe des Packetes gibt. Wende ich nun dieses aber folgendermaßen an, bekomme ich eine Warnung und außerdem nicht das britische Datumsformat:
\documentclass[a4paper,12pt,bibliography=totoc]{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage[american]{babel}
\usepackage[british]{isodate}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\cleanlookdateon
\isospacebeforemonth{.~}
\printdate{21.10.2011}
\end{document}
Nach ein wenig probieren erwies sich folgende Lösung als brauchbar (Sprachoptionen bei babel geändert und Verwendung von \selectlanguage):
\documentclass[a4paper,12pt,bibliography=totoc]{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage[UKenglish,american]{babel}
\usepackage[british]{isodate}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\begin{document}
\cleanlookdateon
\selectlanguage{UKenglish}
\isospacebeforemonth{.~}
\printdate{21.10.2011}
\selectlanguage{american}
\end{document}
Hoffe das funzt auch im Ganzen am Ende. Die Fragen oben würden mich aber trotzdem noch interessieren....
Vielen Dank an alle, mfg
leo
Re: punkt
Verfasst: So 23. Okt 2011, 06:49
von rais
Hallo,
leonidas hat geschrieben:
Meine Probleme zum Anpassen der Sprachoptionen werfen noch eine Frage auf: Braucht denn das Packet "isodate" eine global vorgegebene Sprache?
Nein.
leonidas hat geschrieben:
Aus der Dokumentation entnehme ich, daß es ja eine eigene Option für die Sprache bei der Aufrufe des Packetes gibt. Wende ich nun dieses aber folgendermaßen an, bekomme ich eine Warnung und außerdem nicht das britische Datumsformat:
Für jede Sprache musst Du isodate das auch mitteilen, deshalb gibt es hier die Warnung bezüglich `american'. Da Du aber eigentlich gar nicht die Ausgabe beim \printdate auf amerikanische Art haben willst, tut es evtl auch
\documentclass[12pt]{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage[american]{babel}
\usepackage[british,cleanlook]{isodate}
\isospacebeforemonth{.~}
\makeatletter
\def\iso@printdate@american{\iso@printdate@english}
\makeatother
\begin{document}
\printdate{21.10.2011}
\end{document}
MfG
Rainer
Verfasst: So 23. Okt 2011, 09:09
von leonidas
Danke Rainer!
das heißt also, wenn isodate als Argument eine andere Sprache als die im Dokument mittels babel eingestellte Sprache vorfindet, wird gewarnt?
Außer man stellt die Sprache mittels selectlanguage oder mittels des von Dir verwendeten def-Befehls kurzfristig um...
Finde das etwas unpraktisch, daß man das Datumsformat durch die Sprache also wieder manuell umstellen muß, obwohl man die gewünschte Sprachoption bei isodate übergibt.
Übrigens, wenn ich Dein letztes Beispiel ausführe, wird wieder die american-Version ohne Punkt produziert (October 21, 2011), obwohl Du ja isodate die Option british übergeben hast. Die ganzen isodate-Befehle werden dann ja scheinbar durch die babel-Einstellung wieder überdeckt... Mit den def-Befehlen kenne ich mich leider noch nicht so aus, ob das daran liegen kann. Verwende ich nun bei babel die Option british, dann gibt es wieder das gewünschte Format...
Würds gern verstehen...
mfg
leo
Verfasst: So 23. Okt 2011, 09:53
von rais
Hallo nochmal,
leonidas hat geschrieben:
das heißt also, wenn isodate als Argument eine andere Sprache als die im Dokument mittels babel eingestellte Sprache vorfindet, wird gewarnt?
Anders herum wird ein Schuh draus: Wenn im Text eine andere Sprache gewählt wird, als Du isodate bekannt gegeben hast, wird gewarnt.
leonidas hat geschrieben:
Außer man stellt die Sprache mittels selectlanguage oder mittels des von Dir verwendeten def-Befehls kurzfristig um...
Finde das etwas unpraktisch, daß man das Datumsformat durch die Sprache also wieder manuell umstellen muß, obwohl man die gewünschte Sprachoption bei isodate übergibt.
Übrigens, wenn ich Dein letztes Beispiel ausführe, wird wieder die american-Version ohne Punkt produziert (October 21, 2011), obwohl Du ja isodate die Option british übergeben hast.
Ups, war wohl doch zu früh
leonidas hat geschrieben:
Die ganzen isodate-Befehle werden dann ja scheinbar durch die babel-Einstellung wieder überdeckt... Mit den def-Befehlen kenne ich mich leider noch nicht so aus, ob das daran liegen kann. Verwende ich nun bei babel die Option british, dann gibt es wieder das gewünschte Format...
Mach es anders herum: gib isodate auch american mit:
\documentclass[12pt]{scrreprt}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage[american]{babel}
\usepackage[american,british,cleanlook]{isodate}
\isospacebeforemonth{.~}
\makeatletter
\def\iso@printdate@american{\iso@printdate@english}
\makeatother
\begin{document}
\printdate{21.10.2011}
\end{document}
oder übergib `american' halt der Klasse.
BTW: Die Zeile mit dem \def soll hier die isodate-Definition der amerikanischen Datumsausgabe mit der der Britischen überschreiben, gerade damit Du Dir diese manuelle Umstellerei sparen kannst.
MfG
Rainer
Verfasst: So 23. Okt 2011, 10:12
von leonidas
Hallo!
ja, stimmt so funzts!
Danke, hab wieder einiges dazu gelernt!
mfg
leo
Zurück zum eigentlichen Problem
Verfasst: So 8. Apr 2012, 13:45
von Boiza
wenn ich da einhacken darf: mich würde die Antwort auf die grundlegende Frage interessieren. So ein übergebener Parameter in der Klammer an z.B. dem Punkt in 3 Teile zu trennen. Kriegt man das in der Schnelle hin?