Übergabe mehrer Argumente in einer Klammer

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


leonidas
Forum-Anfänger
Forum-Anfänger
Beiträge: 24
Registriert: Di 1. Dez 2009, 12:14
Wohnort: münchen

Übergabe mehrer Argumente in einer Klammer

Beitrag 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:
\meinDatum{3.5.2011}
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

Benutzeravatar
domwass
TeX-Entwickler
TeX-Entwickler
Beiträge: 617
Registriert: Di 26. Aug 2008, 12:44
Kontaktdaten:

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

leonidas
Forum-Anfänger
Forum-Anfänger
Beiträge: 24
Registriert: Di 1. Dez 2009, 12:14
Wohnort: münchen

versteh das packet isodate nicht ganz

Beitrag 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 :-D

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

rais
Forum-Guru
Forum-Guru
Beiträge: 411
Registriert: Di 21. Sep 2010, 00:37

Re: versteh das packet isodate nicht ganz

Beitrag 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
\isospacebeforemonth{.~}
MfG
Rainer
One of the joys of travel is visiting new towns and meeting new people---G.Khan (Robert Asprin, Another Fine Myth)

leonidas
Forum-Anfänger
Forum-Anfänger
Beiträge: 24
Registriert: Di 1. Dez 2009, 12:14
Wohnort: münchen

punkt

Beitrag 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

rais
Forum-Guru
Forum-Guru
Beiträge: 411
Registriert: Di 21. Sep 2010, 00:37

Re: punkt

Beitrag 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
One of the joys of travel is visiting new towns and meeting new people---G.Khan (Robert Asprin, Another Fine Myth)

leonidas
Forum-Anfänger
Forum-Anfänger
Beiträge: 24
Registriert: Di 1. Dez 2009, 12:14
Wohnort: münchen

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

mfg
leo

rais
Forum-Guru
Forum-Guru
Beiträge: 411
Registriert: Di 21. Sep 2010, 00:37

Beitrag 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 :o
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
One of the joys of travel is visiting new towns and meeting new people---G.Khan (Robert Asprin, Another Fine Myth)

leonidas
Forum-Anfänger
Forum-Anfänger
Beiträge: 24
Registriert: Di 1. Dez 2009, 12:14
Wohnort: münchen

Beitrag von leonidas »

Hallo!

ja, stimmt so funzts!
Danke, hab wieder einiges dazu gelernt!

mfg
leo

Boiza

Zurück zum eigentlichen Problem

Beitrag 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?

Antworten