diff options
Diffstat (limited to 'macros/context/contrib/context-calendar-examples/tex/context/third/calendar-examples/A6-1week_per_2pages.mkiv')
-rw-r--r-- | macros/context/contrib/context-calendar-examples/tex/context/third/calendar-examples/A6-1week_per_2pages.mkiv | 387 |
1 files changed, 387 insertions, 0 deletions
diff --git a/macros/context/contrib/context-calendar-examples/tex/context/third/calendar-examples/A6-1week_per_2pages.mkiv b/macros/context/contrib/context-calendar-examples/tex/context/third/calendar-examples/A6-1week_per_2pages.mkiv new file mode 100644 index 0000000000..eaee939c4c --- /dev/null +++ b/macros/context/contrib/context-calendar-examples/tex/context/third/calendar-examples/A6-1week_per_2pages.mkiv @@ -0,0 +1,387 @@ +%D \module +%D [ file=t-calendar-examples.tex, +%D version=2023.04.15, +%D title=Calendar examples based on PocketDiary, +%D subtitle=A5/A6 format, 1 week per 2 facing pages, +%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 two facing pages carry +%D one week as a table. Saturday and Sunday are placed together in one row. +%D The header contains the month name to the left and the week number and the +%D year to the right. +%D The footer contains three fields. The first contains the job-name, the center +%D field shows the page number, the right field is not filled. -- However +%D this can easily be changed in the variable set "PocketDiaryFooter". +%D Each row of the week-table shows top left the day number followed by the short +%D name of the day. Next to this the ordinal day number of the year is typeset. +%D If the day in question is a Christian holiday, then its name is placed next +%D to the general information. +%D This example supports 6 languages i.e. English, German, Dutch, French, +%D Italian and Spanish. The respective interface is activated by enabling the +%D respective mode +%D The original idea was to have an A6 calendar, where 4 pages are print on the +%D A4 paper. This is activated by enabling the mode "A6". By activating the mode +%D "A5" the calendar is prepared A5 sized on a A4 landscape paper. +%D Because there are astronomical data concerning the sun rise, sun set times it +%D is necessary to fill in the correct geo-positional data in the variable set +%D "PocketDiaryGeoPosition". + +%D Load the PocketDiary module + +\usemodule[pocketdiary] + +%D Load the Collating marks module + +\usemodule[collatingmarks][Collatingmarks=yes] + +%D Define the modes for the different formats + +\definemode[A5,A6][keep] + +%D Enable the desired format of the calendar + +\enablemode[A5] + +%D Set the interface language which includes EN,DE,NL,FR,IT,ES + +\mainlanguage[en] + +%D Setup the variable sets for the PocketDiary module + +\setvariables + [PocketDiary] + [Year=2020, + Week=1, + Day=1, + Month=1, + Nextyear=yes] + +\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=EU] % Eu, US or empty for no Daylight Saving Time (DST) + +\setvariables + [PocketDiaryAddress] + [Familyname=YourFamilyName, + Forename=YourName, + Street=YourStreet and Number, + Zipcode=YourPostalCode, + City=YourPlace, + Country=YourCountry, + Phone=YourPhoneNumber, + Mobile=YourMobilePhoneNumber, + E-mail=YourEmail@YourProvider, + Web=YourWWW] + +%D Setup the desired font to be used + +\setupbodyfont[ibmplex,ss,10pt] + +\definefontfeature[f:Tabular][tnum=yes] + +\addfeature[f:Tabular] + +%D Make the document doublesided, switch off the page numbering. The latter +%D is done in the PocketDiary footer setup + +\setuppagenumbering[alternative=doublesided,location=] + +\setuplayout + [topspace=.6cm, + backspace=1cm, + header=2\bodyfontsize, + headerdistance=.5\bodyfontsize, + footer=1.2\bodyfontsize, + footerdistance=.5\bodyfontsize, + margin=0pt, + height=middle, + width=middle, + location=middle, + marking=on] + +%D Elaborate the definitions for the A6 format + +\startmode[A6] + \definepapersize[Agenda][width=100mm,height=140mm] + + \setuppapersize[Agenda][A4,portrait] + % \setuppapersize[Agenda][Agenda] + + % The vertical page-shift enables to make a 2.5mm cut at the head of the + % section + \definepageshift + [ver] + [vertical] + [2.5mm,2.5mm,2.5mm,2.5mm,2.5mm,2.5mm,2.5mm,2.5mm, + 2.5mm,2.5mm,2.5mm,2.5mm,2.5mm,2.5mm,2.5mm,2.5mm] + + \setuppageshift[paper][ver] + + \setuparranging[2*4*2] + + \setupMPvariables % for collatingmarks + [pages=8, % pages per sheet of paper doublesided + sheets=2, % sheets of paper used per section + horpageshift=-0.5mm] +\stopmode + +%D Elaborate the definition for the A5 format + +\startmode[A5] + \definepapersize[Agenda][width=148mm,height=210mm] + + \setuppapersize[Agenda][A4,landscape] + + \setuparranging[2SIDE] + %\setuparranging[2*2*4] + + \setupMPvariables % for collatingmarks + [pages=4, % pages per sheet of paper doublesided + sheets=4, % sheets of paper used per section + horpageshift=0mm] +\stopmode + +%D Let Lua the main work: + +\startluacode + + local report = logs.reporter("Calendar-1-week-per-2-pages") + + function thirddata.diary.year_of_weektables(year, + lat,lon,timeoffset,continent) + + local year = year + local lat = lat + local lon = lon + local timeoffset = timeoffset + local continent = continent + + report("Working in function: diary.year_of_weektables") + + for calendarmonth = 1,12 do + --for calendarmonth = 1,12 do + thirddata.diary.monthblock + (calendarmonth,year,lat,lon,timeoffset,continent) + end + end + + function thirddata.diary.monthblock(month,year, + lat,lon,timeoffset,continent) + + report("Working in function diary.monthblock: %s", month) + + local c = thirddata.calendar.month(month,year) --returns number of weeks in a given month + local wkf = thirddata.calendar.weeknumber(1,month,year) --weeknumber of 1st day of a given month + + report("First week in month %s of year %s is %s",month,year,wkf) + + local wkl = wkf + c - 1 -- last week of a given month based on wkf and c, is wrong for January + + report("Weeks in the selected month: %s", c) + report("First week of month: %s", wkf) + + if month == 1 and wkf > 51 then + + --report("Calculating in week number %s", wkf) + calcyear = year - 1 + thirddata.diary.setup_header_texts(wkf,month,calcyear) + + thirddata.diary.thisweek(wkf,month,year,lat,lon,timeoffset,continent) + + report("Week %s - Year %s",wkf,year) + + --year = year + 1 + wkf = 1 + wkl = wkf + c - 2 + + for i = wkf, wkl do + thirddata.diary.setup_header_texts(i,month,year) + thirddata.diary.thisweek(i,month,year,lat,lon,timeoffset,continent) + end + else + for i = wkf, wkl do + + report("Calculating in week number %s", i) + + thirddata.diary.setup_header_texts(i,month,year) + thirddata.diary.thisweek(i,month,year, + lat,lon,timeoffset,continent) + end + end + end + + + function thirddata.diary.setup_header_texts(week,month,year) + + local monthname = string.lower(os.date + ("%B",os.time{year=year,month=month,day=1})) + + context.setupheadertexts( + {function() + context("\\bf") + context.labeltext(monthname) + return true + end + }, + {function() + context.labeltext("week") + context(": ~") + context(week) + context("\\quad") + context(year) + return true + end + }, + {function() + context("\\bf") + context.labeltext(monthname) + return true + end + }, + {function() + context.labeltext("week") + context(": ~") + context(week) + context("\\quad") + context(year) + return true + end + }) + end + +\stopluacode + +%D Setup the table for the week calendar + +\startsetups[table:week] + \setupTABLE[split=yes] + \setupTABLE[each][each][frame=on] + \setupTABLE + [r] + [each] + [offset=0pt, + loffset=3pt, + roffset=3pt, + height=0.23\textheight] + \setupTABLE[c][1][width=0.5\textwidth] + \setupTABLE[c][2][width=0.5\textwidth] +\stopsetups + +%D Define the macro for invoking the calculations + +\define[5]\Yearofweektables{\ctxlua{thirddata.diary.year_of_weektables(#1,#2,#3,#4,#5)}} + +%D Create a buffer containing all variables for the calculations + +\startbuffer[Yearofweektables] + \Yearofweektables %Year,lat,lon,timeoffset,continent + {\getvariable{PocketDiary}{Year}} + {\getvariable{PocketDiaryGeoPosition}{lat}} + {\getvariable{PocketDiaryGeoPosition}{lon}} + {\getvariable{PocketDiaryGeoPosition}{timeoffset}} + {"\getvariable{PocketDiaryGeoPosition}{continent}"} +\stopbuffer + +%D Setup the \TEX\ side of the document + +\starttext + +%D Establish the content for the title pages + + \startstandardmakeup[page=yes,doublesided=no] + \strut + \godown[.3\textheight] + \startalignment [middle] + {\bfa \labeltext{calendar}} + \vfil + {\bf \getvariable{PocketDiary}{Year}} + \stopalignment + \stopstandardmakeup + + \startstandardmakeup[page=yes,doublesided=no] + \starttabulate[|l|p|] + \NC \translate[en=Title, + nl=Titel, + de=Titel, + fr=Titre, + it=Titolo] + \EQ {\bf \labeltext{calendar}} \NC\NR + \NC \translate[en=Author, + nl=Auteur, + de=Autor, + fr=Auteur, + it=autore, + es=Autor] + \EQ \getvariable{PocketDiaryAddress}{Forename} + \getvariable{PocketDiaryAddress}{Familyname} \NC\NR + \NC \translate[en=Typography, + nl=Typografie, + de=Typographie, + fr=Typographie, + it=Tipografia, + es=Tipografía] + \EQ \CONTEXT\ with \LUAMETATEX \NC\NR + \NC \translate[en=Compilation date, + nl=Compilatie datum, + de=Kompilationsdatum, + fr=Date de compilation, + it=Dato di compilazione, + es=Fecha de compilación] + \EQ \currentdate \NC\NR + \stoptabulate + \stopstandardmakeup + +%D Insert a page with lost-return-to information (PocketDiary +%D template) + + \getbuffer[Lost-Returnto] + +%D Add a year table with all months + + \getbuffer[Yearcurrentplan] + + \setupheadertexts[\bfa \getvariable{PocketDiary}{Yearnext}+1] + +%D Add a year table of the next year with all months + + \getbuffer[Yearnextplan] + + \setupheadertexts[] + +%D Insert all weektables by loading the buffer + + \getbuffer[Yearofweektables] + +%D Add pages for notes +\dorecurse + {4} + {\getbuffer[Lines]} + +\stoptext
\ No newline at end of file |