Estoy intentando crear un menú de bar para un lugar de estudiantes del que formo parte. Ahora que estamos estudiando informática, matemáticas o física, por supuesto, tiene que usar látex para crear nuestros menús de bar o listas de bebidas. A continuación se muestra un ejemplo de una página.
Ahora la pregunta es cómo facilitar el proceso de creación del menú. Por el momento estoy usando 'floatrow', para poder usar subtítulos. Lo que quiero lograr es tener alguna forma sencilla de escribir recetas de bebidas e imágenes. El menú debe tener estas características.
- Recetas alineadas a la izquierda (no a la derecha como en la imagen).
- La distancia azul debe ser de al menos 0,5 cm a cada lado.
- El espacio en rojo debe ser lo más grande posible.
- El espacio verde debe ser pequeño, pero no cero.
- La capacidad de tener texto escrito en cuadros debajo de las imágenes.
- Las figuras deben estar alineadas verticalmente.
Como se muestra en la imagen de arriba =) Si intento cambiar mi MWE para evitar el \raggedright
texto, cada espacio es inconsistente.
Utilicé el paquete floatrow, ¡pero cualquier respuesta no necesita usar esto!
\documentclass[12pt,a4paper]{article}
\usepackage[landscape,
left=0.1cm,
right=1cm,
top=1cm,
bottom=0cm]{geometry}
\usepackage{microtype,lmodern,fixltx2e} % Småfikser og typografiske forbedringer
\usepackage{amsfonts,mathtools} % Matematikk.
\usepackage[utf8]{inputenc} % Norske symboler æ,ø,å
\usepackage[norsk]{babel} % Norsk innholdsfortegnelse, og overskrifter
\usepackage{caption,subcaption}
\usepackage{floatrow}
\captionsetup[subfigure]{font = large,labelformat=brace,format=hang,justification=rightlast}
\floatsetup[figure]{style=plain}
\floatsetup[subfigure]{heightadjust=all,framearound=all,capbesideposition={left,center},capbesidesep=none}
\newcommand\rightlast{\leftskip0ptplus1fil
\rightskip0ptplus-1fil\parfillskip0ptplus1fil}
\DeclareCaptionJustification{rightlast}{\rightlast}
\begin{document}
\centering
\thisfloatsetup{capposition=beside,capbesideposition={left,center},
capbesidewidth=5cm}
%
\section*{\LARGE $\mathbb{R}$ealfagskjelleren - Barkart - Side 1}
%
\vspace*{0.5cm}
%
\begin{figure}[H]
\ffigbox
{\begin{subfloatrow}
\fcapside[\FBwidth+2cm]{\caption*{%
\textbf{\Large Sure Føtter} \\
Cointreau: 2 cl \\
Jägermeister: 2 cl \\
Lime: 2 cl \\
Coca Cola:\phantom{ 2 cl} \\
\\
Pris: 35 kr}
}{\includegraphics[scale=0.33]{SureFotter.jpg}}
\fcapside[\FBwidth+2cm]{\caption*{%
\textbf{\Large Kvit Russer}\\
Vodka: 2 cl \\
Kahlua/Amarula: 2 cl \\
Fløte: 2 cl \\
\\
Pris: 35 kr}
}{\includegraphics[scale=0.125]{WhiteRussian.jpg}}
\fcapside[\FBwidth+2cm]{\caption*{
\textbf{\Large Crocodile}\\
Lys Rom: 2 cl \\
Midori: 2 cl \\
Lime:\phantom{ 2 cl} \\
Sprite:\phantom{ 2 cl} \\
\\
Pris: 35 kr}
}{\includegraphics[scale=0.33]{Crocodile2.jpg}}
\end{subfloatrow}
\renewlengthtocommand\settowidth\Mylen{100000\subfloatrowsep}\vskip\Mylen
\begin{subfloatrow}
\fcapside[\FBwidth+2cm]{{\caption*{
\textbf{\Large Silver Salute}\\
Vodka: 1 cl \\
Cointreau: 2 cl \\
Blå Bols: 3 cl \\
\\
Pris: 40 kr}
}}{\includegraphics[scale=0.85]{SilverSalute2.jpg}}
\fcapside[\FBwidth+2cm]{\caption*{
\textbf{\Large Majoren}\\
Captain Morgan: 2 cl \\
Jägermeister: 2 cl \\
Ingefærøl:\phantom{ 2 cl} \\
Sitron:\phantom{ 2 cl} \\
\\
Pris: 35 kr}
}{\includegraphics[scale=0.35]{Major3.jpg}}
\fcapside[\FBwidth+2cm]{\caption*{
\textbf{\Large EPIC} \\
Baccardi: 2 cl \\
Blå bols: 1 cl \\
Mickey Finn: 1 cl \\
Passoã: 1 cl \\
Sprite:\phantom{ 2 cl} \\
\\
Pris: 40 kr}
}{\includegraphics[scale=0.15]{EPIC3.jpg}\hspace*{10cm}}%
\end{subfloatrow}}
\end{figure}
\end{document}
Como dije, no tengo idea de cómo obtener espacios consistentes usando el paquete floatrow. Pero si el menú se puede crear más fácilmente usando otro paquete y ofrece un espacio consistente, estoy totalmente a favor de eso =) El paquete floatrow tiene demasiadas opciones.
Las imágenes utilizadas
Respuesta1
He aquí una posibilidad. Como tus imágenes deben ir en lugares específicos, creo que es mejor no utilizar entornos flotantes. Propongo un enfoque diferente, utilizando cuadros (en este caso, minipage
s) para colocar la información:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[norsk]{babel}
\usepackage[landscape,
left=1.5cm,
right=1cm,
top=3cm,
bottom=0cm]{geometry}
\usepackage{graphicx}
\usepackage{microtype,fixltx2e}
\usepackage{fourier}
\usepackage{tikz}
\usepackage{etoolbox}
\newtoggle{client}
\newsavebox\mybox
\newcommand\tikzmark[1]{%
\tikz[remember picture,overlay] \coordinate (#1);}
\colorlet{framecolor}{cyan!80!black}% color for frames (clients version)
\colorlet{ingrcolor}{orange!80!black}% color for frames around directions (bartenders version)
\setlength\parindent{0pt}
\newlength\framewd
\newlength\frameht
\newlength\legendwd
\newlength\descht
\newlength\imagewd
\newlength\rowsep% vertical spacing between rows
\setlength\framewd{7cm}% width of each frame
\setlength\legendwd{4cm}% with for ingredients
\setlength\imagewd{3cm}% width for image
\setlength\frameht{4.5cm}% height of the frame, without directions
\setlength\descht{1.5cm}% height of box for directions
\newcommand\framecon[5]{%
\begin{minipage}[t][\frameht][t]{\framewd}
\begin{minipage}[c][\frameht][t]{\framewd}
\begin{minipage}[c][\frameht][t]{\legendwd}
\vfill
{\bfseries\Large#1}\par\bigskip
\begin{tabular}{@{}r@{:\ }l@{}}
#2
\multicolumn{2}{c}{} \\
\fritem{Pris}{#3}
\end{tabular}%
\end{minipage}%
\begin{minipage}[c][\frameht][c]{\imagewd}
\vfill
\includegraphics[width=3cm]{#4}
\end{minipage}%
\end{minipage}%
\begin{lrbox}{\mybox}
\begin{minipage}[c][\descht][t]{\dimexpr\framewd-20pt\relax}
#5
\end{minipage}%
\end{lrbox}%
\iftoggle{client}
{}
{\par\bigskip
\tikz[remember picture]
\node[rectangle,draw=ingrcolor,ultra thick,rounded corners,inner sep=8pt]
{\usebox\mybox};%
}%
\par\vskip20pt\mbox{}\hfill\tikzmark{b}%
\end{minipage}%
\iftoggle{client}
{%
\begin{tikzpicture}[remember picture, overlay]
\draw[rounded corners=8pt,line width=1.5pt,draw=framecolor]
(b) -|
([xshift=\the\dimexpr-\framewd-1em\relax,yshift=\the\dimexpr\frameht+\descht\relax]b);
\end{tikzpicture}
}%
{}
}
\newcommand\fritem[2]{#1\\}
\begin{document}
\settoggle{client}{false}% for the bartender
%\settoggle{client}{true}% for the clients
\iftoggle{client}{\setlength\rowsep{6cm}}{\setlength\rowsep{3cm}}
\framecon{Sure Føtter}{%
\fritem{Cointreau}{2 cl}
\fritem{Jägermeister}{2 cl}
\fritem{Lime}{2 cl}
\fritem{Coca Cola}{}}{35kr}{11}{%
Shake vodka og likør med is i en cocktail shaker. -- Si til et højt glas med et par isterninger. -- Fyld op med orange juice.}\hfill
\framecon{Kvit Russer}{%
\fritem{Vodka}{2 cl}
\fritem{Kahlua/Amarula}{2 cl}
\fritem{Fløte}{2 cl}}{35 kr}{12}{%
Alle ingredienser unntatt epleskive ristes godt i en shaker med knust is. -- Siles og serveres i et avkjølt cocktailglass. -- Pyntes med epleskive.}\hfill
\framecon{Crocodile}{%
\fritem{Lys Rom}{2 cl}
\fritem{Midori}{2 cl}
\fritem{Lime}{}
\fritem{Sprite}{}}{35 kr}{13}{%
Shake vodka og likør med is i en cocktail shaker. -- Si til et højt glas med et par isterninger. -- Fyld op med orange juice.}
\vspace{\rowsep}
\framecon{Silver Salute}{%
\fritem{Vodka}{1 cl}
\fritem{Cointreau}{2 cl}
\fritem{Blå Bols}{3 cl}}{40 kr}{21}{%
Alle ingredienser unntatt mørk rom ristes godt i en shaker med knust is. -- Serveres i et avkjølt collinsglass. -- Mørk rom helles forsiktig øverst i glasset. -- Pyntes med limeskive.}\hfill
\framecon{Majoren}{%
\fritem{Vodka}{1 cl}
\fritem{Cointreau}{2 cl}
\fritem{Blå Bols}{3 cl}}{40 kr}{22}{%
Alle ingredienser unntatt mørk rom ristes godt i en shaker med knust is. -- Serveres i et avkjølt collinsglass. -- Mørk rom helles forsiktig øverst i glasset. -- Pyntes med limeskive.}\hfill
\framecon{Epic}{%
\fritem{Baccardi}{2 cl}
\fritem{Blå bols}{1 cl}
\fritem{Mickey Finn}{1 cl}
\fritem{Passoã}{1 cl}
\fritem{Sprite}{}}{40 kr}{23}{%
Alle ingredienser unntatt mørk rom ristes godt i en shaker med knust is. -- Serveres i et avkjølt collinsglass. -- Mørk rom helles forsiktig øverst i glasset. -- Pyntes med limeskive.}
\end{document}
La versión para los clientes (sin instrucciones de preparación):
y simplemente configurando el interruptor en falso, obtendrás la versión para bartenders (con instrucciones de preparación):
Cómo funciona el código
El comando principal tiene
\framecon
cinco argumentos obligatorios:\framecon{<name>}{<ingredients>}{<price>}{<image-file>}{<prep. directions>}
Para escribir los ingredientes
\fitem
se definió un comando adicional:\fritem{<ingredient>}{<quantity>}
Entonces, por ejemplo, la entrada para "EPIC" en mi ejemplo es:
\framecon{Epic}{% \fritem{Baccardi}{2 cl} \fritem{Blå bols}{1 cl} \fritem{Mickey Finn}{1 cl} \fritem{Passoã}{1 cl} \fritem{Sprite}{}}{40 kr}{23}{% Alle ingredienser unntatt mørk rom ristes godt i en shaker med knust is. -- Serveres i et avkjølt collinsglass. -- Mørk rom helles forsiktig øverst i glasset. -- Pyntes med limeskive.}
Al configurar el
client
interruptor entrue
, se produce la versión del cliente y al configurarlo enfalse
, se obtiene la versión de los camareros.
Para menos de cuatro imágenes por fila, se podrían insertar \hfill
s para producir la alineación deseada:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[norsk]{babel}
\usepackage[landscape,
left=1.5cm,
right=1cm,
top=3cm,
bottom=0cm]{geometry}
\usepackage{graphicx}
\usepackage{microtype,fixltx2e}
\usepackage{fourier}
\usepackage{tikz}
\usepackage{etoolbox}
\newtoggle{client}
\newsavebox\mybox
\newcommand\tikzmark[1]{%
\tikz[remember picture,overlay] \coordinate (#1);}
\colorlet{framecolor}{cyan!80!black}% color for frames (clients version)
\colorlet{ingrcolor}{orange!80!black}% color for frames around directions (bartenders version)
\setlength\parindent{0pt}
\newlength\framewd
\newlength\frameht
\newlength\legendwd
\newlength\descht
\newlength\imagewd
\newlength\rowsep% vertical spacing between rows
\setlength\framewd{7cm}% width of each frame
\setlength\legendwd{4cm}% with for ingredients
\setlength\imagewd{3cm}% width for image
\setlength\frameht{4.5cm}% height of the frame, without directions
\setlength\descht{1.5cm}% height of box for directions
\newcommand\framecon[5]{%
\begin{minipage}[t][\frameht][t]{\framewd}
\begin{minipage}[c][\frameht][t]{\framewd}
\begin{minipage}[c][\frameht][t]{\legendwd}
\vfill
{\bfseries\Large#1}\par\bigskip
\begin{tabular}{@{}r@{:\ }l@{}}
#2
\multicolumn{2}{c}{} \\
\fritem{Pris}{#3}
\end{tabular}%
\end{minipage}%
\begin{minipage}[c][\frameht][c]{\imagewd}
\vfill
\includegraphics[width=3cm]{#4}
\end{minipage}%
\end{minipage}%
\begin{lrbox}{\mybox}
\begin{minipage}[c][\descht][t]{\dimexpr\framewd-20pt\relax}
#5
\end{minipage}%
\end{lrbox}%
\iftoggle{client}
{}
{\par\bigskip
\tikz[remember picture]
\node[rectangle,draw=ingrcolor,ultra thick,rounded corners,inner sep=8pt]
{\usebox\mybox};%
}%
\par\vskip20pt\mbox{}\hfill\tikzmark{b}%
\end{minipage}%
\iftoggle{client}
{%
\begin{tikzpicture}[remember picture, overlay]
\draw[rounded corners=8pt,line width=1.5pt,draw=framecolor]
(b) -|
([xshift=\the\dimexpr-\framewd-1em\relax,yshift=\the\dimexpr\frameht+\descht\relax]b);
\end{tikzpicture}
}%
{}
}
\newcommand\fritem[2]{#1\\}
\begin{document}
\settoggle{client}{false}% for the bartender
%\settoggle{client}{true}% for the clients
\iftoggle{client}{\setlength\rowsep{6cm}}{\setlength\rowsep{3cm}}
\hfill\framecon{Sure Føtter}{%
\fritem{Cointreau}{2 cl}
\fritem{Jägermeister}{2 cl}
\fritem{Lime}{2 cl}
\fritem{Coca Cola}{}}{35kr}{11}{%
Shake vodka og likør med is i en cocktail shaker. -- Si til et højt glas med et par isterninger. -- Fyld op med orange juice.}\hfill
\framecon{Kvit Russer}{%
\fritem{Vodka}{2 cl}
\fritem{Kahlua/Amarula}{2 cl}
\fritem{Fløte}{2 cl}}{35 kr}{12}{%
Alle ingredienser unntatt epleskive ristes godt i en shaker med knust is. -- Siles og serveres i et avkjølt cocktailglass. -- Pyntes med epleskive.}\hfill\null
\vspace{\rowsep}
\hfill\framecon{Silver Salute}{%
\fritem{Vodka}{1 cl}
\fritem{Cointreau}{2 cl}
\fritem{Blå Bols}{3 cl}}{40 kr}{21}{%
Alle ingredienser unntatt mørk rom ristes godt i en shaker med knust is. -- Serveres i et avkjølt collinsglass. -- Mørk rom helles forsiktig øverst i glasset. -- Pyntes med limeskive.}\hfill
\framecon{Majoren}{%
\fritem{Vodka}{1 cl}
\fritem{Cointreau}{2 cl}
\fritem{Blå Bols}{3 cl}}{40 kr}{22}{%
Alle ingredienser unntatt mørk rom ristes godt i en shaker med knust is. -- Serveres i et avkjølt collinsglass. -- Mørk rom helles forsiktig øverst i glasset. -- Pyntes med limeskive.}\hfill\null
\end{document}