From 4703727d234147fdadfd31af75329850476dde45 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sat, 23 Sep 2017 23:06:59 +0000 Subject: mensa-tex (23sep17) git-svn-id: svn://tug.org/texlive/trunk@45390 c570f23f-e606-0410-a88d-b1316a301751 --- .../texmf-dist/tex/latex/mensa-tex/mensa-tex.cls | 518 +++++++++++++++++++++ 1 file changed, 518 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/mensa-tex/mensa-tex.cls (limited to 'Master/texmf-dist/tex/latex') diff --git a/Master/texmf-dist/tex/latex/mensa-tex/mensa-tex.cls b/Master/texmf-dist/tex/latex/mensa-tex/mensa-tex.cls new file mode 100644 index 00000000000..21bb6dd8561 --- /dev/null +++ b/Master/texmf-dist/tex/latex/mensa-tex/mensa-tex.cls @@ -0,0 +1,518 @@ +%% This is file 'mensa-tex.cls', Version 2017-09-23 +%% Copyright 2017 Sebastian Friedl +%% +%% This work may be distributed and/or modified under the conditions of the LaTeX Project +%% Public License, either version 1.3c of this license or (at your option) any later version. +%% The latest version of this license is available at +%% http://www.latex-project.org/lppl.txt +%% and version 1.3c or later is part of all distributions of LaTeX version 2008-05-04 or later. +%% +%% This work has the LPPL maintenance status 'maintained'. +%% Author: Sebastian Friedl +%% Current maintainer of this work is Sebastian Friedl +%% +%% This work consists of the files mensa-tex.cls and mensa-tex-doc.tex +%% +%% --------------------------------------------------------------------------------------------------------------------------------------------- +%% +%% A LaTeX class for typesetting school cafeteria menus consisting of two lunches (with dessert) and dinner +%% +%% --------------------------------------------------------------------------------------------------------------------------------------------- +%% +%% Please report bugs and other problems as well as suggestions for improvements to the following email address: sfr682k@t-online.de +%% +%% --------------------------------------------------------------------------------------------------------------------------------------------- + + + +\ProvidesClass{mensa-tex}[2017/09/23 mensa-tex - a class for typesetting simple school cafeteria menus] + + +% Requires LaTeX2e +\NeedsTeXFormat{LaTeX2e} + +% Basic class: article instead of KOMA-Skript classes (-> less dependencies :D) +\LoadClass[12pt]{article} + + + +% OPTION DECLARATIONS ------------------------------------------------------------------------------------------------------- + +% Print or App version +\newif\if@print +\@printtrue +\DeclareOption{app}{\@printfalse} + +% Use English localization +\newif\if@english +\newif\if@engb +\newif\if@enus +\@englishtrue +\@engbtrue +\@enusfalse +\DeclareOption{en-GB}{% + \@germanfalse + \@englishtrue + \@engbtrue + \@enusfalse} +\DeclareOption{en-US}{% + \@germanfalse + \@englishtrue + \@engbfalse + \@enustrue} + +% Use German localization +\newif\if@german +\@germanfalse +\DeclareOption{german}{% + \@englishfalse + \@germantrue} + +\ProcessOptions + + + +% REQUIRED PACKAGES --------------------------------------------------------------------------------------------------------- + +% Required packages: more features for tables, scaleboxes, more color features and extra symbols +\RequirePackage{array} +\RequirePackage{graphicx} +\RequirePackage[table]{xcolor} +\RequirePackage{textcomp} + +% Date-specific stuff +\RequirePackage{datetime2} +\RequirePackage{datetime2-calc} + +% lmodern is better than cm, but has quite the same look +\RequirePackage{lmodern} + +% Page size and layout: depending on the usage +\if@print \RequirePackage[a4paper,left=1.5cm,right=1.5cm,top=1.5cm,bottom=1.5cm,ignorehead,ignorefoot]{geometry} +\else \RequirePackage[a6paper,left=1cm,right=1cm,top=1cm,bottom=1cm,ignorehead,ignorefoot]{geometry} +\fi + +% No head- and footline +\pagestyle{empty} + +% No indent of the first paragraph +\parindent0pt + +% Uses sans-serif fonts (i. e. Latin Modern Sans) +\renewcommand{\familydefault}{\sfdefault} + + + +% COMMON DEFINITIONS -------------------------------------------------------------------------------------------------------- + +% Storage for the mensa's name +\def\mensaname{} +\def\insertmensaname{Mensa} +\renewcommand{\mensaname}[1]{% + \def\insertmensaname{#1}} + +% Storage for the institute's name +\def\institute{} +\def\insertinstitute{} +\renewcommand{\institute}[1]{% + \def\insertinstitute{#1}} + +% Short syntax for printing the weekday in the table +\def\printday{} +\renewcommand{\printday}[1]{% + \begin{minipage}[b][2.5cm][c]{.75cm}\centering + \swdayname{#1} + \end{minipage}} + +% Shorthand for superscripts +\def\sup{} +\renewcommand{\sup}[1]{\textsuperscript{#1}} + +% Defines a column with horizontal and vertical centered cells +\newcolumntype{M}[1]{>{\centering\arraybackslash}m{#1}} + +% Defines symbols for vegetarian and vegan food +\def\vgt{{\rmfamily\color{green!50!black}\textleaf}} +\def\vgn{{\rmfamily\color{green!50!black}\textleaf\textleaf}} + + + +% VARIABLES ----------------------------------------------------------------------------------------------------------------- + +% Commands for the dates +\def\startdate{} +\renewcommand{\startdate}[1]{% + \DTMsavedate{monday}{#1} + \DTMsavedate{tuesday}{#1+1} + \DTMsavedate{wednesday}{#1+2} + \DTMsavedate{thursday}{#1+3} + \DTMsavedate{friday}{#1+4} +} + +% Avoids errors when the user forgets to set the start date +\startdate{2001-01-01} + +% Commands and variables for Monday +\def\monday{} +\def\mondayI{} +\def\mondayII{} +\def\mondayA{} +\def\mondayD{} + +% Commands and variables for Tuesday +\def\tuesday{} +\def\tuesdayI{} +\def\tuesdayII{} +\def\tuesdayA{} +\def\tuesdayD{} + +% Commands and variables for Wednesday +\def\wednesday{} +\def\wednesdayI{} +\def\wednesdayII{} +\def\wednesdayA{} +\def\wednesdayD{} + +% Commands and variables for Thursday +\def\thursday{} +\def\thursdayI{} +\def\thursdayII{} +\def\thursdayA{} +\def\thursdayD{} + +% Commands and variables for Friday +\def\friday{} +\def\fridayI{} +\def\fridayII{} +\def\fridayA{} +\def\fridayD{} + +% Variables for the remarks +\def\insertlongremarks{} +\def\insertshortremarks{} + +% Color variables and commands to change them +\def\bgcolor{} +\def\colorfg{} +\def\ctextcolor{} +\def\setbgcolor{} +\def\setcolorfg{} +\def\setctextcolor{} +\renewcommand{\setbgcolor}[1]{\def\bgcolor{#1}} +\renewcommand{\setcolorfg}[1]{\def\colorfg{#1}} +\renewcommand{\setctextcolor}[1]{\def\ctextcolor{#1}} + +% Default colors +\def\bgcolor{white} +\def\colorfg{black} +\def\ctextcolor{black} + +% The image +\def\image{~} +\def\setimage{} +\renewcommand{\setimage}[1]{\def\image{#1}} + + + +% COMMANDS FOR VARIABLE MANAGEMENT ------------------------------------------------------------------------------------------ + +\renewcommand{\monday}[4]{% + \def\mondayI{#1} + \def\mondayII{#2} + \def\mondayD{#3} + \def\mondayA{#4} +} + +\renewcommand{\tuesday}[4]{% + \def\tuesdayI{#1} + \def\tuesdayII{#2} + \def\tuesdayD{#3} + \def\tuesdayA{#4} +} + +\renewcommand{\wednesday}[4]{% + \def\wednesdayI{#1} + \def\wednesdayII{#2} + \def\wednesdayD{#3} + \def\wednesdayA{#4} +} + +\renewcommand{\thursday}[4]{% + \def\thursdayI{#1} + \def\thursdayII{#2} + \def\thursdayD{#3} + \def\thursdayA{#4} +} + +\renewcommand{\friday}[4]{% + \def\fridayI{#1} + \def\fridayII{#2} + \def\fridayD{#3} + \def\fridayA{#4} +} + +\def\longremarks{} +\renewcommand{\longremarks}[1]{\def\insertlongremarks{#1}} + +\def\shortremarks{} +\renewcommand{\shortremarks}[1]{\def\insertshortremarks{#1}} + + + +% REQUIRED IN CONJUNCTION WITH datetime2 - ENGLISH (regionless) LOCALIZATION ------------------------------------------------ + +\if@english + % English weekday names + \def\wdayname{} + \renewcommand{\wdayname}[1]{% + \ifcase\DTMfetchdow{#1} + Monday% + \or + Tuesday% + \or + Wednesday% + \or + Thursday% + \or + Friday% + \or + Saturday% + \or + Sunday% + \fi + } + + % German short weekday names + \def\swdayname{} + \renewcommand{\swdayname}[1]{% + \ifcase\DTMfetchdow{#1} + Mon% + \or + Tue% + \or + Wed% + \or + Thu% + \or + Fri% + \or + Sat% + \or + Sun% + \fi + } + + % English menu name + \def\menuname{Menu} + \def\dessertname{Dessert} + \def\dinnername{Dinner} + \def\dietname{Weekly menu} +\fi + + + +% REQUIRED IN CONJUNCTION WITH datetime2 - ENGLISH (GB) LOCALIZATION -------------------------------------------------------- + +\if@engb + % Print the short version of a saved date + \def\shortdate{} + \renewcommand{\shortdate}[1]{\DTMtwodigits{\DTMfetchday{#1}}/\DTMtwodigits{\DTMfetchmonth{#1}}/\DTMtwodigits{\DTMfetchyear{#1}}} + + % Print the short version of a saved date with the day of week + \def\dowshortdate{} + \renewcommand{\dowshortdate}[1]{\wdayname{#1},~\shortdate{#1}} + + % Print the long version of a saved date with the day of week + \def\longdate{} + \renewcommand{\longdate}[1]{\DTMtwodigits{\DTMfetchday{#1}}/\DTMtwodigits{\DTMfetchmonth{#1}}/\DTMfetchyear{#1}} + + % Print a range of dates + \def\daterange{} + \renewcommand{\daterange}[2]{\shortdate{#1}\,--\,\shortdate{#2}} +\fi + + + +% REQUIRED IN CONJUNCTION WITH datetime2 - ENGLISH (US) LOCALIZATION -------------------------------------------------------- + +\if@enus + % Print the short version of a saved date + \def\shortdate{} + \renewcommand{\shortdate}[1]{\DTMtwodigits{\DTMfetchmonth{#1}}/\DTMtwodigits{\DTMfetchday{#1}}/\DTMtwodigits{\DTMfetchyear{#1}}} + + % Print the short version of a saved date with the day of week + \def\dowshortdate{} + \renewcommand{\dowshortdate}[1]{\wdayname{#1},~\shortdate{#1}} + + % Print the long version of a saved date with the day of week + \def\longdate{} + \renewcommand{\longdate}[1]{\DTMtwodigits{\DTMfetchmonth{#1}}/\DTMtwodigits{\DTMfetchday{#1}}/\DTMfetchyear{#1}} + + % Print a range of dates + \def\daterange{} + \renewcommand{\daterange}[2]{\shortdate{#1}\,--\,\shortdate{#2}} +\fi + + + +% REQUIRED IN CONJUNCTION WITH datetime2 - GERMAN LOCALIZATION -------------------------------------------------------------- + +\if@german + % German weekday names + \def\wdayname{} + \renewcommand{\wdayname}[1]{% + \ifcase\DTMfetchdow{#1} + Montag% + \or + Dienstag% + \or + Mittwoch% + \or + Donnerstag% + \or + Freitag% + \or + Samstag% + \or + Sonntag% + \fi + } + + % German short weekday names + \def\swdayname{} + \renewcommand{\swdayname}[1]{% + \ifcase\DTMfetchdow{#1} + Mo% + \or + Di% + \or + Mi% + \or + Do% + \or + Fr% + \or + Sa% + \or + So% + \fi + } + + % German menu name + \def\menuname{Men\"u} + \def\dessertname{Dessert} + \def\dinnername{Abendessen} + \def\dietname{Speiseplan vom} + + % Print the short version of a saved date + \def\shortdate{} + \renewcommand{\shortdate}[1]{\DTMtwodigits{\DTMfetchday{#1}}.\DTMtwodigits{\DTMfetchmonth{#1}}.} + + % Print the short version of a saved date with the day of week + \def\dowshortdate{} + \renewcommand{\dowshortdate}[1]{\wdayname{#1},~\shortdate{#1}} + + % Print the long version of a saved date with the day of week + \def\longdate{} + \renewcommand{\longdate}[1]{\DTMtwodigits{\DTMfetchday{#1}}.\DTMtwodigits{\DTMfetchmonth{#1}}.\DTMfetchyear{#1}} + + % Print a range of dates + \def\daterange{} + \renewcommand{\daterange}[2]{\shortdate{#1}\,--\,\longdate{#2}} +\fi + + + +% MENU FOR THE WHOLE WEEK --------------------------------------------------------------------------------------------------- + +\if@print + \AtBeginDocument{% + \begin{center} \huge + \color{\ctextcolor}\insertinstitute + \end{center} + % + \bigskip\bigskip + \begin{minipage}[b][.15\textheight][b]{.5\textwidth} \LARGE + \image + \end{minipage} + \begin{minipage}[b][.15\textheight][c]{.48\textwidth}\flushright\huge\color{\ctextcolor} + \scalebox{2}{\Huge \insertmensaname} \\[\bigskipamount] + \dietname \\ + \daterange{monday}{friday} + \end{minipage} + + \setlength{\arrayrulewidth}{1.25pt} + \begin{center} + \rowcolors{2}{\bgcolor!20}{white} + \begin{tabular}{|>{\bfseries}M{0.95cm}*{2}{|M{5cm}}*2{|M{2.4cm}}|} + \hline + \rowcolor{\bgcolor} \vbox to .5cm {} &% + \bfseries{\color{\colorfg} \menuname{} 1} &% + \bfseries{\color{\colorfg} \menuname{} 2} &% + \bfseries{\color{\colorfg} \dessertname{}} &% + \bfseries{\color{\colorfg} \dinnername{}} \tabularnewline \hline + % + \printday{monday} & \mondayI & \mondayII & \mondayD & \mondayA \tabularnewline \hline + \printday{tuesday} & \tuesdayI & \tuesdayII & \tuesdayD & \tuesdayA \tabularnewline \hline + \printday{wednesday} & \wednesdayI & \wednesdayII & \wednesdayD & \wednesdayA \tabularnewline \hline + \printday{thursday} & \thursdayI & \thursdayII & \thursdayD & \thursdayA \tabularnewline \hline + \printday{friday} & \fridayI & \fridayII & \fridayD & \fridayA \tabularnewline \hline + \end{tabular} + \end{center} + + \vfill + {\insertlongremarks}} +\fi + + + +% MENUS FOR MULTIPLE DAYS (when setting the "app" option) ------------------------------------------------------------------- + +\if@print\else + \def\daypage{} + \renewcommand{\daypage}[5]{{% Double braces, otherwise changes on a single page will apply to the whole document + \clearpage + \begin{minipage}[b][.15\textheight][b]{.58\textwidth} + \image + \end{minipage} + \begin{minipage}[b][.15\textheight][b]{.4\textwidth} \flushright + {\LARGE\color{\ctextcolor} \insertmensaname} \\ + {\footnotesize\color{\ctextcolor} #1} \\\vspace{\medskipamount} + \end{minipage} + + \small + \medskip + \begin{minipage}[t][.15\textheight][t]{\textwidth} \centering + \colorbox{\bgcolor}{\hbox to .975\textwidth{\hfill\color{\colorfg}\bfseries \menuname{} 1 \hfill}} \\[\smallskipamount] + #2 + \end{minipage} + \begin{minipage}[t][.15\textheight][t]{\textwidth} \centering + \colorbox{\bgcolor}{\hbox to .975\textwidth{\hfill\color{\colorfg}\bfseries \menuname{} 2 \hfill}} \\[\smallskipamount] + #3 + \end{minipage} + \begin{minipage}[t][.15\textheight][t]{\textwidth} \centering + \colorbox{\bgcolor}{\hbox to .975\textwidth{\hfill\color{\colorfg}\bfseries \dessertname{} \hfill}} \\[\smallskipamount] + #4 + \end{minipage} + \begin{minipage}[t][.15\textheight][t]{\textwidth} \centering + \colorbox{\bgcolor}{\hbox to .975\textwidth{\hfill\color{\colorfg}\bfseries \dinnername{} \hfill}} \\[\smallskipamount] + #5 + \end{minipage} + + \vfill + {\insertshortremarks}} + } + + \AtBeginDocument{% + \daypage{\dowshortdate{monday}}{\mondayI}{\mondayII}{\mondayD}{\mondayA} + \daypage{\dowshortdate{tuesday}}{\tuesdayI}{\tuesdayII}{\tuesdayD}{\tuesdayA} + \daypage{\dowshortdate{wednesday}}{\wednesdayI}{\wednesdayII}{\wednesdayD}{\wednesdayA} + \daypage{\dowshortdate{thursday}}{\thursdayI}{\thursdayII}{\thursdayD}{\thursdayA} + \daypage{\dowshortdate{friday}}{\fridayI}{\fridayII}{\fridayD}{\fridayA} + } +\fi + + + +% END OF FILE --------------------------------------------------------------------------------------------------------------- +\endinput \ No newline at end of file -- cgit v1.2.3