#! /usr/bin/perl -w # Dr. Ingo Rohlfs, 1999-2000 # ingo.rohlfs(at)gmx.de # die "programm um einen schwangerschaftkalender auszugeben usage: schwanger datum gewicht [ausgabename] " if $#ARGV != 1 and $#ARGV !=2; # $txt="" if not defined $txt; #($tag,$monat,$wotag,$rest)= split / /, $F[$NR], 4; # ' ' == awk-stil, / / == zeilenanfangs whitespace wird als trenner genommen! $outN="schwanger"; $outN=$ARGV[2] if $#ARGV == 2; open oF, ">$outN.tex"; print oF '\documentclass[a4paper,twocolumn]{article} \usepackage[latin1]{inputenc} \usepackage{array,german,t1enc,color,vmargin} \pagestyle{empty} \setpapersize{A4} \setmarginsrb{9mm}{15mm}{9mm}{15mm}{0mm}{0mm}{0mm}{0mm} \setlength{\columnsep}{4.5mm} \setlength{\tabcolsep}{0.8ex} \newcommand*{\stuetz}{\rule[-0.9ex]{0pt}{3ex}} \newcommand*{\nl}{\stuetz\\\\\hline} \definecolor{grau}{gray}{0.90} \setlength{\fboxsep}{0pt}% \newcommand{\sam}{\makebox[0mm][l]{% \hspace*{-\tabcolsep}\colorbox{grau}{% \phantom{29 Mai Sa \,}% \stuetz}}} \newcommand{\son}{\makebox[0mm][l]{% \hspace*{-\tabcolsep}\colorbox{grau}{% \hspace*{\columnwidth}% \stuetz}}} \newcommand{\schluss}{} \newcommand{\neumonat}[3]{\schluss \noindent \hspace*{\tabcolsep}\textbf{\large#1\hfil#2\quad#3}\\\\[0.4mm]% \renewcommand{\schluss}{\end{tabular*}\\\\[0.5mm]% \noindent \hspace*{\tabcolsep}\textbf{\large#1\hfil#2\quad#3}\\\\[0.4mm]\newpage}% \begin{tabular*}{\columnwidth}% {|>{\tt}l>{\tiny}p{40mm}@{\extracolsep{\fill}}lr|}% \hline} \AtEndDocument{\schluss}\begin{document}\hbadness=10000 '; ($Atag,$Amonat,$Ajahr) = ($ARGV[0] =~ /(.*)\.(.*)\.(.*)/ ); $gew=$ARGV[1]; $gcal=sprintf "%%%d%0.2d%0.2d", $Ajahr, $Amonat, $Atag; #gcal '%1999' -CeY \ #include today= d -modifier # e- alle feiertage, E nur gesetzliche #A alternative darstellung, feiertag eine zeile später! # x ohne titelzeile # o ohne datum bei feiertag $cmd='gcal -Cxodel365+ -Hno -qde --date-format="%d %b %w %Y%1%2"'; $Ajahr++; $akt=`LANG=de; export LANG; $cmd $gcal; $cmd %${Ajahr}0101`; #gegeh fehlermeldungen #$cmd="$gew $gcal1 $gcal2"; #$akt=`cat gcal.input`; $akt =~ s/\(DE\)//g; $akt =~ s/\(Std\)//g; $akt =~ s/^\n//mg ; #leerzeile löschen $akt =~ s/Tag der Deutschen Einheit/Einheitstag/; $akt =~ s/\/Heilige Drei Könige//; $akt =~ s/\/Fastnacht//; $akt =~ s/St. Valentinstag// ; #$akt =~ s/Weiberfastnacht// ; $akt =~ s/Fasching// ; $akt =~ s/Allerseelen//; $akt =~ s/ *\n +/, /g ; #feiertage verbinden @F= split "\n",$akt, 310; $Nmon=$g= $Nwoche=0; # gegen fehlermeldungen -w for ($NR=0; $NR<308; $NR++) { ($tag,$monat,$wotag,$jahr, $txt)= ($F[$NR] =~ m/^(\d+)\s+(\S+)\s+(\S+)\s+(\d+):(.*)/); print oF "\\neumonat{",++$Nmon,"}{$jahr}{}\n" if($NR%28==0 && $NR>5)||$NR==0; if ($txt =~ /Neuj|Epiph|Karf|Oster|Arbeit|Christi|Pfings|Fron|Weih|Einheit|Allerh/ or ($wotag eq "So") ) { print oF '\son '; } elsif ($wotag eq "Sa") { print oF '\sam '; } print oF "$tag $monat $wotag \& $txt "; if ($tag>24 && $wotag eq "So" ){ print oF '\\textbf{\\scriptsize MESZ-anfang}' if $monat eq "Mär" ; print oF '\\textbf{\\scriptsize MESZ-ende}' if $monat eq "Okt" ; } ## schwangerschaftspezifisches print oF "\\textbf{\\small Geburt}" if $NR==280 ; print oF "{\\small Eisprung}" if $NR==12 ; if ($Nwoche > 40) { $g = 0;} elsif ($Nwoche> 38) { $g= 0.300;} elsif ($Nwoche> 35) { $g= 0.400;} elsif ($Nwoche> 26) { $g= 0.500;} elsif ($Nwoche> 24) { $g= 0.450;} elsif ($Nwoche> 22) { $g= 0.400;} elsif ($Nwoche> 15) { $g= 0.350;} elsif ($Nwoche> 12) { $g= 0.250;} printf oF " & %.1f & ", $gew+=$g/7.0; print oF "\t\\textbf{\\small ",++$Nwoche,"} " if ($NR)%7==0 ; printf oF "%03d", $NR+1; print oF " \\nl\n"; } print oF "\\end{document}\n"; close oF; print "geschrieben: $outN.tex\n";