summaryrefslogtreecommitdiff
path: root/macros/context/contrib/context-calendar-examples/tex/context/third/calendar-examples/A5-day_per_page.mkiv
diff options
context:
space:
mode:
Diffstat (limited to 'macros/context/contrib/context-calendar-examples/tex/context/third/calendar-examples/A5-day_per_page.mkiv')
-rw-r--r--macros/context/contrib/context-calendar-examples/tex/context/third/calendar-examples/A5-day_per_page.mkiv426
1 files changed, 426 insertions, 0 deletions
diff --git a/macros/context/contrib/context-calendar-examples/tex/context/third/calendar-examples/A5-day_per_page.mkiv b/macros/context/contrib/context-calendar-examples/tex/context/third/calendar-examples/A5-day_per_page.mkiv
new file mode 100644
index 0000000000..44d48f6cf8
--- /dev/null
+++ b/macros/context/contrib/context-calendar-examples/tex/context/third/calendar-examples/A5-day_per_page.mkiv
@@ -0,0 +1,426 @@
+%D \module
+%D [ file=t-calendar-examples.tex
+%D version=2023.04.15,
+%D title=Calendar examples based on PocketDiary,
+%D subtitle=A5 format 1 day per page calendar,
+%D author=W. Egger,
+%D date=\currentdate,
+%D copyright=W. Egger,
+%D license=Public Domain]
+
+%D This is an example of how to use the PocketDiary-module outside the built-in
+%D structure of a PocketDiary.
+%D In order to use this example you need to have the PocketDiary-module
+%D installed from:
+%D https://modules.contextgarden.net/cgi-bin/module.cgi/action=view/id=132
+%D If you want collating marks placed on the outermost sheet of a section,
+%D then you need to install also the Collatingmarks-module from:
+%D https://modules.contextgarden.net/cgi-bin/module.cgi/action=view/id=129
+%D The used imposition scheme is contained in the \CONTEXT\ distro.
+
+%D This is an example how to prepare a calendar, where each page contains one
+%D day. On the left side there is a time-schedule starting at 06:00 ending
+%D at 22:00. The header contains left the month and right the year. Below the
+%D header there is a table showing left the day and the short dayname followed
+%D by
+%D the weeknumber and the daynumber of the year. If the day in question is a
+%D Chrstian holiday, then the name of it is stated in the center.
+%D To the right astronomical data
+%D are shown: Lunar days/moonphase, sun rise, sun set and light hours.
+%D In order to have complete sections a number of pages with lines are added.
+
+\usemodule[pocketdiary]
+\usemodule[collatingmarks][Collatingmarks=yes]
+
+%D Setup the language to be used: EN,DE,NL,FR,IT,ES
+
+\mainlanguage[en]
+
+%D The variable sets for the PocketDiary module:
+
+\setvariables
+ [PocketDiary]
+ [Year=2023,
+ Week=1,
+ Day=1,
+ Month=1,
+ Nextyear=yes,
+ Yearnext=2024]
+
+\setvariables
+ [PocketDiaryFooter]
+ [Lefttext={\jobname .pdf},
+ Centertext=\pagenumber,
+ Righttext=]
+
+\setvariables
+ [PocketDiaryColors]
+ [Separatorline=blue,
+ Gridline={s=.75}]
+
+\setvariables %Koziegłowy 52.467860 16.981240
+ [PocketDiaryGeoPosition]
+ [lat=52.467860,
+ lon=16.981240,
+ timezoneoffset=1,
+ continent=US] % EU, US or empty for no Daylight Saving Time (DST)
+
+\setvariables
+ [PocketDiaryAddress]
+ [Familyname={\bf YourFamilyName},
+ Forename=YourName,
+ Street=YourStreet and Number,
+ Zipcode=YourPostalCode,
+ City=YourPlace,
+ Country=YourCountry,
+ Phone=YourPhoneNumber,
+ Mobile=YourMobilePhoneNumber,
+ E-mail=YourEmail@YourProvider,
+ Web=YourWWW]
+
+\setupbodyfont[ibmplex,ss,10pt]
+
+\definefontfeature[f:Tabular][tnum=yes]
+
+\addfeature[f:Tabular]
+
+%D The document is double sided printed, the page number will be set in the
+%D \setupfootertexts:
+
+\setuppagenumbering[alternative=doublesided,location=]
+
+\setuppapersize[A5][A4,landscape]
+% \setuppapersize[A5][A5]
+
+%D Adapt the page layout to the size of the page:
+
+\setuplayout
+ [topspace=.6cm,
+ backspace=1.5cm,
+ header=2\bodyfontsize,
+ headerdistance=.5\bodyfontsize,
+ footer=1.2\bodyfontsize,
+ footerdistance=.5\bodyfontsize,
+ margin=0pt,
+ height=middle,
+ width=middle,
+ location=middle]
+
+%D Enable the imposition: 2 pages recto and verso using 4 sheets of A4 for forming one section
+
+\setuparranging[2*2*4]
+
+
+%D Setup of the Collating marks module:
+
+\setupMPvariables % for collatingmarks
+ [pages=8, % pages per sheet of paper doublesided
+ sheets=2, % sheets of paper used per section
+ horpageshift=-0.5mm]
+
+
+% \showframe
+
+%D Let Lua do the work:
+
+\startluacode
+
+ local report = logs.reporter("Calendar-1-day-per-page")
+
+ function thirddata.diary.year_of_monthtables(
+ year,lat,lon,timeoffset,continent)
+
+ report("Working in function: diary.year_of_monthtables")
+
+ for i = 1,12 do
+ local monthname = string.lower(os.date
+ ("%B",os.time{year=year,month=i,day=1}))
+
+ thirddata.diary.header_text(monthname,year)
+
+ thirddata.diary.monthblock(i,year,lat,lon,timeoffset,continent)
+ end
+ end
+
+ function thirddata.diary.monthblock(month,year,lat,lon,timeoffset,continent)
+
+ report("Working in function diary.monthblock")
+
+ local nofdays = 1
+
+ local monthname = thirddata.calendar.select_nameofmonth(month,year)
+ local yeardays = thirddata.calendar.isleapyear(year)
+
+ if month == 2 and yeardays == 366 then
+ nofdays = thirddata.calendar.nofdays_month(month,year) + 1
+ else
+ nofdays = thirddata.calendar.nofdays_month(month,year)
+ end
+
+ --report("Number of days in month: %s", nofdays)
+
+ for i = 1,nofdays do
+ local ordinalday = thirddata.calendar.ordinalday(i,month,year)
+ local weeknumber = thirddata.calendar.weeknumber(i,month,year)
+ local dayname = string.lower(os.date ("%a",os.time{day=i,month=month,year=year}))
+ local holiday = thirddata.calendar.checkchristianfeast(i,month,year)
+ local moondata = thirddata.moonphase.lunardays(year,month,i)
+ local dst_start,dst_stop = thirddata.diary.DST(year,continent)
+ local sunrise,sunset,lighthours =
+ thirddata.srss.sundata(
+ i,month,year,lat,lon,timeoffset,dst_start,dst_stop)
+
+ if holiday ~= "" then
+ report("Holiday: %s", holiday)
+ report("Day number: %s", i)
+ end
+
+ context.bTABLE({setups="table:dayblock"})
+ context.bTR()
+ context.bTD()
+ context.starttabulate{"|lw(0.1\\textwidth)|p(0.06\\textwidth)|p|"}
+ context.NC()
+ context("\\bf")
+ --report("Daynumber: %s Month %s", i,month)
+ if dayname == "sun" or holiday ~= "" and holiday ~= "ashw"
+ then local dnu = i
+ local dna = dayname
+ context.color({"red"},
+ function() context(dnu) end) --day number
+ context("~")
+ context.color({"red"},
+ function() context.labeltext(dna) end)--dayname
+ else
+ context(i) --day
+ context("~")
+ context.labeltext(dayname) --dayname
+ end
+ context.NC()
+ context.switchtobodyfont{"6pt"}
+ context.labeltext("week")
+ context(":")
+ context.par()
+ context(weeknumber)
+ context.NC()
+ context.switchtobodyfont{"6pt"}
+ context.labeltext("day")
+ context(":")
+ context.par()
+ context(ordinalday)
+ context("/")
+ context(yeardays)
+ context.NC()
+ context.NR()
+ context.stoptabulate()
+ context.eTD()
+ context.bTD()
+ context.starttabulate{"|lw(0.2\\textwidth)|p|p|p|p|"}
+ context.NC()
+ if holiday == "" then
+ context.strut()
+ else
+ context.labeltext(holiday)
+ end
+ context.NC()
+ if tonumber(moondata) then
+ context.labeltext("moondays")
+ else
+ context.labeltext("moon")
+ end
+ context(":~")
+ context.par()
+ context(moondata)
+ context.NC()
+ context("\\SunA[background=Sunrise]{}")
+ context.par()
+ context(sunrise)
+ context.NC()
+ context("\\SunA[background=Sunset]{}")
+ context.par()
+ context(sunset)
+ context.NC()
+ context("\\SunB[background=Light]{}")
+ context.par()
+ context(lighthours)
+ context.NC()
+ context.NR()
+ context.stoptabulate()
+ context.eTD()
+ context.eTR()
+ context.eTABLE()
+ context.page()
+ end
+ end
+
+ function thirddata.diary.header_text(monthname,year)
+ context.setupheadertexts(
+ {function()
+ context("\\bf")
+ context.labeltext(monthname)
+ return true
+ end
+ },
+ {function()
+ context(year)
+ return true
+ end
+ },
+ {function()
+ context("\\bf")
+ context.labeltext(monthname)
+ return true
+ end
+ },
+ {function()
+ context(year)
+ return true
+ end
+ })
+ end
+
+\stopluacode
+
+%D Setup the tab;e for the day page
+
+\startsetups[table:dayblock]
+ \setupTABLE[each][each][frame=off]
+ \setupTABLE[r][each][offset=0pt,loffset=3pt,roffset=3pt,align=lohi]
+ \setupTABLE[c][1][width=0.35\textwidth,align=lohi]
+ \setupTABLE[c][2][style={\switchtobodyfont[6pt]},width=0.65\textwidth] \stopsetups
+
+%D Define the macro for invoking the lua calculations
+
+\define[5]\Yearofmonthtables{%
+ \ctxlua{thirddata.diary.year_of_monthtables(#1,#2,#3,#4,#5)}}
+
+%D Create a buffer containing the contents of the variables to be used
+
+\startbuffer[Yearofmonthtables]
+ \Yearofmonthtables %Year,lat,lon,timeoffset,continent
+ {\getvariable{PocketDiary}{Year}}
+ {\getvariable{PocketDiaryGeoPosition}{lat}}
+ {\getvariable{PocketDiaryGeoPosition}{lon}}
+ {\getvariable{PocketDiaryGeoPosition}{timeoffset}}
+ {"\getvariable{PocketDiaryGeoPosition}{continent}"}
+\stopbuffer
+
+%D Create a time-table in \METAFUN\ as a background to the page
+
+\startreusableMPgraphic{Time-Lines}
+ numeric w; w:= OverlaytWidth;
+ numeric h; h:= (OverlayHeight-2cm)/18;
+ numeric t;
+ path p,q;
+ p := unitsquare xscaled OverlayWidth yscaled (OverlayHeight-2cm);
+
+ q:= llcorner p -- lrcorner p;
+ draw q withpen pencircle scaled .5pt
+ withcolor \MPcolor{Grid};
+ for i = 1 upto 17:
+ draw q shifted (0,i*h) withpen pencircle scaled .5pt
+ withcolor \MPcolor{Grid};
+ t := 24 - 1 - i ;
+ label.top(textext(""& decimal t & ":00"),point 0 of q) shifted (15pt,((i-1)*h)+1pt);
+ endfor;
+\stopreusableMPgraphic
+
+%D Make the timetable available as a background on the page
+
+\defineoverlay[Textbackground][\reuseMPgraphic{Time-Lines}]
+
+%D Implement international interface:
+\setuplabeltext[en][title=Title]
+\setuplabeltext[nl][title=Titel]
+\setuplabeltext[de][title=Titel]
+\setuplabeltext[fr][title=Titre]
+\setuplabeltext[it][title=Titolo]
+\setuplabeltext[es][title=Título]
+
+\setuplabeltext[en][author=Author]
+\setuplabeltext[nl][author=Auteur]
+\setuplabeltext[de][author=Autor]
+\setuplabeltext[fr][author=Auteur]
+\setuplabeltext[it][author=autore]
+\setuplabeltext[es][author=Autor]
+
+\setuplabeltext[en][typography=Typography]
+\setuplabeltext[nl][typography=Typografie]
+\setuplabeltext[de][typography=Typographie]
+\setuplabeltext[fr][typography=Typographie]
+\setuplabeltext[it][typography=Tipografia]
+\setuplabeltext[es][typography=Tipografía]
+
+\setuplabeltext[en][compilation=Compilation date]
+\setuplabeltext[nl][compilation=Compilatie datum]
+\setuplabeltext[de][compilation=Kompilationsdatum]
+\setuplabeltext[fr][compilation=Date de compilation]
+\setuplabeltext[it][compilation=Dato di compilazione]
+\setuplabeltext[es][compilation=Fecha de compilación]
+
+%D Setup the TeX side of the document:
+
+\starttext
+
+%D Create the title pages
+
+ \startstandardmakeup[page=yes,doublesided=no]
+ \strut
+ \startalignment [middle]
+ \godown[.3\textheight]
+ {\bfa \labeltext{calendar}}
+ \vfil
+ {\bf \getvariable{PocketDiary}{Year}}
+ \stopalignment
+ \stopstandardmakeup
+
+ \startstandardmakeup[page=yes,doublesided=no]
+ \starttabulate[|l|p|]
+ \NC \labeltext{title}
+ \EQ {\bf \labeltext{calendar}} \NC\NR
+ \NC \labeltext{author}
+ \EQ \getvariable{PocketDiaryAddress}{Forename}
+ \getvariable{PocketDiaryAddress}{Familyname} \NC\NR
+ \NC \labeltext{typography}
+ \EQ \CONTEXT\ with \LUAMETATEX \NC\NR
+ \NC \labeltext{compilation}
+ \EQ \currentdate \NC\NR
+ \stoptabulate
+ \stopstandardmakeup
+
+%D Load the Lost-Returnto template
+
+ \getbuffer[Lost-Returnto]
+
+ \setupbackgrounds[text][background=]
+
+ \setupbackgrounds[text][background=Textbackground]
+
+%D Insert all day pages
+
+ \getbuffer[Yearofmonthtables]
+
+ \setupbackgrounds[text][background=]
+
+%D Add a year table with all months
+
+ \getbuffer[Yearcurrentplan]
+
+ \setupheadertexts[\bfa \getvariable{PocketDiary}{Yearnext}]
+
+%D Insert a year table with all months of the following year
+
+ \getbuffer[Yearnextplan]
+
+%D Add some todo-lists
+
+ \dorecurse
+ {3}
+ {\getbuffer[Todo]}
+
+%D Add notes pages
+
+ \dorecurse
+ {10}
+ {\getbuffer[Lines]}
+
+\stoptext