Espaçamento, subfiguras e legendas à direita (Criando uma barra de menu)

Espaçamento, subfiguras e legendas à direita (Criando uma barra de menu)

Estou tentando criar um menu de bar para um local de estudante do qual faço parte. Agora, como estamos estudando ciência da computação, matemática e/ou física, é claro que ele tem que usar látex para criar nossos menus de bar ou listas de bebidas. Um exemplo de página é fornecido abaixo

insira a descrição da imagem aqui

Agora a questão é como facilitar o processo de criação do menu. No momento estou usando 'floatrow', para poder usar legendas laterais. O que eu quero alcançar é ter uma maneira simples de escrever receitas e imagens de bebidas. O menu deve ter esses recursos.

  • Receitas alinhadas à esquerda (não à direita como na imagem).
  • O espaçamento azul deve ser de pelo menos 0,5 cm de cada lado.
  • O espaçamento vermelho deve ser o maior possível.
  • O espaçamento verde deve ser pequeno, mas não zero.
  • A capacidade de ter texto escrito em caixas abaixo das imagens.
  • As figuras devem ser alinhadas verticalmente

Como mostrado na imagem acima =) Se eu tentar alterar meu MWE para evitar o \raggedrighttexto, todo espaçamento será inconsistente. Usei o pacote floatrow, mas qualquer resposta não precisa usar isso!

\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 eu disse, não tenho ideia de como obter espaçamentos consistentes usando o pacote floatrow. Mas se o menu puder ser criado mais facilmente usando outro pacote, e oferecer espaçamento consistente, eu sou totalmente a favor =) O pacote floatrow tem muitas opções.

As imagens usadas

Responder1

Aqui está uma possibilidade. Como suas imagens devem ficar em locais específicos, acho melhor não usar ambientes flutuantes. Proponho uma abordagem diferente, utilizando caixas (neste caso, minipages) para colocar as informações:

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

A versão para os clientes (sem instruções de preparação):

insira a descrição da imagem aqui

e simplesmente definindo o botão de alternância como falso, você obtém a versão para bartenders (com instruções de preparação):

insira a descrição da imagem aqui

Como funciona o código

  • O comando principal possui \frameconcinco argumentos obrigatórios:

    \framecon{<name>}{<ingredients>}{<price>}{<image-file>}{<prep. directions>}
    
  • Para escrever os ingredientes, \fitemfoi definido um comando adicional:

    \fritem{<ingredient>}{<quantity>}
    

    Assim, por exemplo, a entrada para "EPIC" no meu exemplo é:

    \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.} 
    
  • Colocando o clientbotão de alternância em true, a versão do cliente é produzida, e configurando-o em false, obtém-se a versão dos bartenders.

Para menos de quatro imagens por linha, pode-se inserir \hfills para produzir o alinhamento desejado:

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

insira a descrição da imagem aqui

informação relacionada