Espaciado, subfiguras y títulos derechos (Crear un menú de barra)

Espaciado, subfiguras y títulos derechos (Crear un menú de barra)

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.

ingrese la descripción de la imagen aquí

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 \raggedrighttexto, 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, minipages) 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&#2\\}

\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):

ingrese la descripción de la imagen aquí

y simplemente configurando el interruptor en falso, obtendrás la versión para bartenders (con instrucciones de preparación):

ingrese la descripción de la imagen aquí

Cómo funciona el código

  • El comando principal tiene \frameconcinco argumentos obligatorios:

    \framecon{<name>}{<ingredients>}{<price>}{<image-file>}{<prep. directions>}
    
  • Para escribir los ingredientes \fitemse 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 clientinterruptor en true, se produce la versión del cliente y al configurarlo en false, se obtiene la versión de los camareros.

Para menos de cuatro imágenes por fila, se podrían insertar \hfills 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&#2\\}

\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}

ingrese la descripción de la imagen aquí

información relacionada