I'd like to typeset a restaurant menu. What would be a good document class or package to use? I'm hoping for an answer similar to this thread: Survey or questionnaire document class or package?
5 Answers
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:
-
18
-
I've a problem to get the web-O-mints fonts. I can't download the font. Is there another place to get it ? Commented Dec 13, 2011 at 6:48
-
3
-
@Altermundus: what problems do you have downloading the font? The only place I know to get is on CTAN. Commented Dec 13, 2011 at 14:16
-
2@kirdie Thnaks for your kind words. I guess I can improve the answer to fix the issue with page sizes, if I have the time :) I can also add a version with vector decorations. In a few days I'll make the edit. Commented Apr 22, 2014 at 20:35
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-mints
is 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 Zapfino
but 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}
-
2
-
1Note that in order to use this answer, it's not sufficient to just copy paste the
.sty
file, you also need to figure out how thettftotex
program work (I don't know French) and use it to install the font. Alternatively, if you have XeLaTeX/LuaLaTeX you can usefontspec
: tex.stackexchange.com/a/516042/250119 Commented Feb 24 at 15:13
...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}
...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.)
-
1
-
@totera, well spotted! I wonder if it might (maybe) have been based on this answer. :)– badroitCommented Dec 19, 2020 at 19:28
You could use beamerposter
package. A menu can be thought of as a small poster, can't it? Then, in each block you can use two columns one for the dishes list and one for the prices.
This package will provide you with great flexibility.
I took Gonzalo Medina's answer, obtained a version that would compile, and put it here, the LaTeX used to build it is below:
\documentclass[12pt]{article}
\usepackage[spanish]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{ulem}
\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}{A}\rule[60pt]{.2\textwidth}{0.4pt}%
\raisebox{55pt}{%
\makebox[.6\textwidth]{\ \fontsize{24}{29}\selectfont\scshape Thanksgving, 2019}}%
\rule[60pt]{.2\textwidth}{0.4pt}\wb{80}{34}{R}};
\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}{H}\rule[-10pt]{\textwidth}{0.4pt}\wb{80}{34}{M}} ;
\end{tikzpicture}%
}
% colorize text
\newcommand*\ColText[1]{\textcolor{Goldenrod3}{#1}}
\pagestyle{empty}
\begin{document}
\huge{Thanksgiving Menu}
\begin{center}
\large{\uline{Chile-and-Citrus–Rubbed Chicken with Potatoes}} \\
\hspace*{1em}\footnotesize{Ingredients: chicken, Kosher salt, coriander seeds, fennel seeds, orange, lemon, olive oil, red pepper flakes, smoked paprika, dry white wine, tomato paste, crushed garlic cloves, potatos, parsley} \\
\large{\uline{Roasted and Marinated Root Vegetables}} \\
\hspace*{1em}\footnotesize{Ingredients: beets, sweet potatoes, turnips, bran oil, grapeseed oil, olive oil, kosher salt, sugar, honey, black pepper, thyme, rosemary, orange, lemon, vinegar, olive oil, red chile flakes} \\
\large{\uline{Mashed Cauliflower}} \\
\hspace*{1em}\footnotesize{Ingredients: riced white cauliflower, butter, water, kosher salt}
\large{\uline{Farmhouse Herbed Stuffing}} \\
\hspace*{1em}\footnotesize{Ingredients: Unsalted butter, onion, celery, bread stuffing cubes, parsely, celery salt, sage, rosemary, thyme, salt, black pepper, turkey stock} \\
\large{\uline{Haricots Verts with Herb Butter}} \\
\hspace*{1em}\footnotesize{Ingredients: Unsalted butter, shallots, parsely, tarragon, lemon zest, lemon juice, haricots verts} \\
\large{\uline{Autumn Kale Salad}} \\
\hspace*{1em}\footnotesize{Ingredients: Garlic, Olive Oil, seedless Squash, Kosher salt, black pepper, apple cider vinegar, lemon juice, honey, cayenne pepper, hot paprika, lacinato kale, golden raisins, hazelnuts, almonds, parmesan cheese} \\
\large{\uline{Cranberry and Tart-Cherry Compote}} \\
\hspace*{1em}\footnotesize{Ingredients: Lime, Cranberry juice cocktail, cranberries, cherries, cinammon, allspice, currant jelly, kosher salt} \\
\large{\uline{Thanksgiving Sangria}} \\
\hspace*{1em}\footnotesize{Ingredients: Pomegranate Juice, cinammon, allspice, ginger, red wine, pear, pomegranate seeds, spiced rum, pear cider, apple sparkling cider} \\
\large{\uline{Salted Caramel Apple Pie}} \\
\hspace*{1em}\footnotesize{Ingredients: Flour, Flaky Butter pie dough, Baking Apples, Granulated Sugar, Lemon Juice, Unsalted Butter, heavy cream, Demerara sugar, Angostura bitters, nutmeg, allspice, cinnamon, kosher salt, black pepper, sea salt, egg} \\
\large{\uline{Cranberry Walnut Tart}} \\
\hspace*{1em}\footnotesize{Ingredients: Sweet pastry dough, eggs, dark brown sugar, light corn syrup, unsalted butter, salt, vanilla, cranberries, walnuts} \\
\large{\uline{Honey Cornbread Muffins}} \\
\hspace*{1em}\footnotesize{Ingredients: Yellow Cornmeal, all-purpose flour, baking powder, granulated sugar, salt, whole milk, eggs, butter, honey} \\
\end{center}
\end{document}
multicol
package.article
class plus the following packages:titlesec
, (to make logical divisions of the menu)enumitem
(to make lists of items),geometry
(for page layout). There's lots of semantics to a menu, so LaTeX is actually quite well suited, since you could define markup for all of the logical parts of the menu for consistency (e.g. dish name, description, price etc.) I would also use XeLaTeX or LuaLaTeX to get access to a wider array of fonts.