document class for a restaurant menu

I don't think there is a predefined class for menus, but you can create you own format using any of the existing document classes; after all, the menu is a unique feature that identifies a restaurant.

Just as an idea (which admits many improvements), in the following example I used the web-O-mints fonts and the background package to create a frame that will be placed in all the pages of the menu. A simple tabular* environment was used to format each food group.

\documentclass[12pt]{article}
\usepackage[spanish]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[textwidth=12cm,centering]{geometry}
\usepackage[x11names]{xcolor}
\usepackage{background}

\newcommand*\wb[3]{%
  {\fontsize{#1}{#2}\usefont{U}{webo}{xl}{n}#3}}

% The page frame
\SetBgColor{Goldenrod3}
\SetBgAngle{0}
\SetBgScale{1}
\SetBgOpacity{1}
\SetBgContents{%
\begin{tikzpicture}
\node at (0.5\paperwidth,0) {\wb{80}{34}{E}\rule[60pt]{.2\textwidth}{0.4pt}%
  \raisebox{55pt}{%
  \makebox[.6\textwidth]{\ \fontsize{24}{29}\selectfont\scshape La Abuela }}%
  \rule[60pt]{.2\textwidth}{0.4pt}\wb{80}{34}{F}};
\node at (2,-0.5\textheight) {\rule{0.4pt}{.8\textheight}};
\node at (19.5,-0.5\textheight) {\rule{0.4pt}{.8\textheight}};
\node at (0.5\paperwidth,-\textheight) {\wb{80}{34}{G}\rule[-10pt]{\textwidth}{0.4pt}\wb{80}{34}{H}} ;
\end{tikzpicture}%
}

% colorize text
\newcommand*\ColText[1]{\textcolor{Goldenrod3}{#1}}

% a tabular* for each food group
\newenvironment{Group}[1]
  {\noindent\begin{tabular*}{\textwidth}{@{}p{.8\linewidth}@{\extracolsep{\fill}}r@{}}
    {\fontsize{24}{29}\selectfont\ColText{#1}}\\[0.8em]}
  {\end{tabular*}}

% to format each entry
\newcommand*\Entry[2]{%
  \sffamily#1 & #2}

% to format each subentry
\newcommand*\Expl[1]{%
  \hspace*{1em}\footnotesize #1}

\pagestyle{empty}

\begin{document}

\begin{Group}{Entradas}
\Entry{Calamares de campo}{9.00} \\
\Expl{Aros muy finos de cebolla y pimiento verde, a nuestro estilo} \\
\Entry{Berenjenas a la cordobesa}{9.95} \\
\Expl{Finas lonchas de berenjenas rebozadas a la cordobesa acompañadas de salsa de miel} \\
\Entry{Huevos estrellados con chistorra}{10.50} \\
\Entry{Cecina de León}{10.70} \\
\Expl{Lonchas muy finas con aceite virgen extra y pimienta recién molida} \\
\end{Group}

\vfill

\begin{Group}{Ensaladas}
\Entry{Ensalada <<La Abuela>>}{9.20} \\ 
\Expl{Piña, manzana y pimiento rojo, con pollo recién asado y una sabrosa y ligera mayonesa} \\
\Entry{Ensalada mediterránea}{8.90} \\ 
\Expl{Lechuga, tomate, cebolla, atún, huevo duro. espárragos y aceitunas} \\ 
\Entry{Salpicón de pollo}{9.50} \\ 
\Expl{Pollo en tiras recién asado con manzana sobre lechuga en juliana, zanahoria rallada y rodajas de tomate, aliñado con una sorprendente y suave salsa de mostaza y yogurt} \\
\Entry{Ensalada de cabra}{10.70} \\ 
\Expl{Queso de cabra templado con mermelada de tomate sobre una variedad de lechugas frescas} \\
\end{Group}

\vfill

\begin{Group}{Carnes}
\Entry{Carpaccio de buey}{13.50} \\
\Expl{Acompañado de lascas de parmesano y rucuta} \\
\Entry{Parrillada ibérica}{16.70} \\
\Expl{Pluma, presa y secreto} \\
\Entry{Patatas con guarnición para acompañar}{3.75} \\
\Expl{Fritas caseras} \\
\Entry{Patatas con guarnición para acompañar}{3.50} \\
\Expl{Patatas paja} \\
\end{Group}

\end{document}

And here's the result:

enter image description here


It's impossible not to give a menu of a restaurant in Paris but I need to justify a new version for a menu. I like the menu of Gonzalo, so I try to create a variant but with tikz and tabular (I do not know yet background).

I keep some part of the tabular (great idea here) and I use a macro to build a box around the menu. The macro is named \MyCadre first argument =size of the ornement font here Orna 4 at 60 pt, then two integers. The width and the height of the cadre are multiple of first argument.

The cadre is placed at current page.center and I use a node to place the menu at the center.

zorna.sty is to use orna 4 font. Orna 4
web-O-mintsis fine but I would like another example. You can find useful tools font casseaux.

%Filename: zorna.sty 
%Created by: TTF2TEX.perl, Sam  5 jui 2010 22:40:14 CEST

\NeedsTeXFormat{LaTeX2e}%}
\ProvidesPackage{zorna}%
%
\newcommand*{\zorna}[1]{{%
\fontencoding{U}\fontfamily{zorna}\selectfont  #1}}
\endinput

The main font for menu is Zapfinobut you can change it

The main code is compiled with xelatex. Real menu from "la Tour d'Argent" (PARIS) with real prices !

%!TEX TS-program = xelatex
%!TEX encoding = UTF-8 Unicode
\documentclass{scrartcl}
\usepackage[utf8x]{inputenc} 
\usepackage[dvipsnames]{xcolor}
\usepackage[textwidth=14cm,centering]{geometry}
\usepackage{tikz,fullpage}
\usepackage{fontspec}   
\setmainfont{Zapfino}
\usepackage{zorna} %http://www.urbanfonts.com/dingbats/Orna_4.htm 
% and http://jacques-andre.fr/fontex/casseaux.pdf 
\font\zapf ="Zapfino"  at 14pt 
\font\zapff="Zapfino"  at 8pt
\usepackage[french]{babel}  
% some colors
\definecolor{fondpaille}{cmyk}{0,0,0.1,0}
\newcommand*\ColText[1]{\textcolor{Maroon}{#1}}

\newenvironment{Group}[1]{%
\noindent
\begin{tabular*}{\textwidth}{@{}p{.9\linewidth}@{\extracolsep{\fill}}r@{}}{\zapf\ColText{#1}}\\[0.8em]}
{\end{tabular*}}

\newcommand*\Entry[2]{\zapff #1 &  \zapff #2}
\thispagestyle{empty}
% \MyCadre{#1 font  size ornement }
%         {#2 integer largeur = #2 * font size}
%         {#3 integer hauteur = #3 * font size}
\newcommand*\MyCadre[3] {%
  \newcommand{\sfc}{#1} 
  \newcommand{\wdc}{#2}
  \newcommand{\htc}{#3}
  \node at (.5*\sfc pt,.5*\sfc pt)  {%
                \fontsize{\sfc}{\sfc}\selectfont \zorna{c}};  
  \node at ({(\wdc-0.5)*\sfc pt},.5*\sfc pt) {%
                \fontsize{\sfc}{\sfc}\selectfont \zorna{d}};
  \node at (.5*\sfc pt,{(\htc-0.5)*\sfc pt}) {%
                \fontsize{\sfc}{\sfc}\selectfont \zorna{a}};  
  \node at ({(\wdc-0.5)*\sfc pt},{(\htc-0.5)*\sfc pt}){%
                \fontsize{\sfc}{\sfc}\selectfont \zorna{b}};
  \draw[line width=2pt,color=Maroon]%
   (0,0) rectangle coordinate (thecenter) (\wdc*\sfc pt,\htc*\sfc pt);
  }%

\newcommand{\Tiret}{%
 \par\medskip
  \center \fontsize{10}{10}\selectfont \zorna{y}
\medskip}

\begin{document} 
\pagecolor{fondpaille}
\color{Maroon}            

\begin{tikzpicture} [remember picture, overlay] % center the box in the page
\node at (current page.center){%
\begin{tikzpicture}
\MyCadre{60}{8}{12}%

\node[text width=13cm] at (thecenter){% 
        \begin{center}
                 LA TOUR D'ARGENT\\ PARIS  %http://www.latourdargent.com/
        \end{center}

\vspace{1cm}

\begin{Group}{Entr\'ees}
\Entry{ Bouquet de l\'egumes, sauce comme une \og C\'esar\fg}         {69 €}\\
\Entry{ Saint-Jacques en tartare, betteraves multicolores}            {71 €}\\
\Entry{ Quenelles de brochet \og Andr\'e Terrail\fg}                  {49 €}\\
\Entry{ Palette de choux aux grains de caviar}                       {135 €}\\
\Entry{ Caviar \og Imp\'erial de Sologne\fg, blinis et condiments}   {210 €}\\
\end{Group}

\Tiret

\begin{Group}{Poissons}
\Entry{ Tron\c on de sole \og des Tournelles\fg }                     {81 €}\\
\Entry{ Saint-Jacques dor\'ees, poireaux au jus de coques}            {82 €}\\
\Entry{ Queue de lotte piqu\'ee \`a la truffe et l\'egumes racines}   {84 €}\\
\end{Group}

\Tiret   

\begin{Group}{Canetons}
\Entry{ Caneton Marco Polo sabl\'e au poivre de Sichuan}             {140 €}\\
\Entry{ Caneton \og Tour d'Argent\fg, pommes souffl\'ees}            {140 €}\\
\Entry{ Caneton \`a l'orange, carotte aux agrumes et pain d'\'epices}{140 €}\\
\end{Group}

\Tiret 

\begin{Group}{Desserts}
\Entry{ Variation chocolat orange, cr\'emeux pain d'\'epices}         {24 €}\\
\Entry{ Biscuit marmelade citron, glace thym citron}                  {24 €}\\
\Entry{ Duo poire r\'eglisse, sorbet poire}                           {24 €}\\
\end{Group}};
\end{tikzpicture}
}; 
\end{tikzpicture}  

\end{document}

enter image description here


...just thinking that Menus and Resumés are similar in format, and templates for the latter are two-a-penny.

For example, with a little lateral thinking, you could try using moderncv. Using a pruned version of the template in the package, you could do something like:

\documentclass[11pt,a4paper]{moderncv}

\moderncvtheme[orange]{casual}                  
\usepackage[utf8]{inputenc}                

\firstname{Fawlty}
\familyname{Towers}
\title{Evening Menu} 
\address{Torquay}{Devon, England}
\phone{555-9000}
\extrainfo{Opening Hours: 07:00--00:00}
\photo[64pt]{picture}
\quote{``If you don't like duck... then you're rather stuck!''}
\begin{document}
\maketitle

\section{To Start}
\cventry{\textsterling7.50}{Waldorf Salad}{A salad of unknown composition}{}{}{}  % arguments 3 to 6 can be left empty

\section{Mains}
\cventry{\textsterling9.50}{Duck a l'Orange}{Duck with orange}{}{}{} % arguments 3 to 6 can be left empty
\cventry{\textsterling9.50}{Duck with Cherries}{Duck with cherries}{}{}{} % arguments 3 to 6 can be left empty
\cventry{\textsterling9.50}{Duck Surprise}{Duck without orange or cherries}{}{}{} % arguments 3 to 6 can be left empty

\section{Desserts}
\cventry{\textsterling5.50}{Bombe Surprise}{Does not contain duck}{}{}{} % arguments 3 to 6 can be left empty
\end{document}

enter image description here

...anyways, variations on a theme... you get the idea.

Of course, any TeX geek will spot it a mile away. (And will be suitably impressed.)