제가 속해 있는 학생 장소의 바 메뉴를 만들려고 합니다. 이제 우리는 CS, 수학, 물리학을 공부하고 있기 때문에 그는 라텍스를 사용하여 바 메뉴나 음주 목록을 만들어야 합니다. 페이지의 예는 다음과 같습니다.
이제 문제는 메뉴를 만드는 과정을 어떻게 더 쉽게 만드는가입니다. 현재 저는 사이드 캡션을 사용하기 위해 'floatrow'를 사용하고 있습니다. 제가 이루고 싶은 것은 음료수 레시피와 이미지를 간단하게 작성할 수 있는 방법을 갖는 것입니다. 메뉴에는 이러한 기능이 있어야 합니다.
- 왼쪽 정렬된 레시피입니다(이미지와 같이 오른쪽이 아님).
- 파란색 간격은 양쪽에서 최소 0.5cm 이상이어야 합니다.
- 빨간색 간격은 최대한 커야 합니다.
- 녹색 간격은 작아야 하지만 0이 되어서는 안 됩니다.
- 이미지 아래 상자에 텍스트를 쓰는 기능.
- 그림은 세로로 정렬되어야 합니다.
위 이미지에 표시된 것처럼 =) MWE를 변경하여\raggedright
위 이미지에 표시된 것처럼 =) 텍스트를
나는 floatrow 패키지를 사용했지만 어떤 대답도 이것을 사용할 필요가 없습니다!
\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}
내가 말했듯이 나는 floatrow 패키지를 사용하여 일관된 간격을 얻는 방법을 모릅니다. 하지만 다른 패키지를 사용하여 메뉴를 더 쉽게 만들 수 있고 일관된 간격을 제공할 수 있다면 저는 그게 전부입니다 =) floatrow-package에는 옵션이 너무 많습니다.
사용된 이미지
답변1
여기에 한 가지 가능성이 있습니다. 이미지는 특정 위치에 있어야 하기 때문에 플로팅 환경을 사용하지 않는 것이 좋다고 생각합니다. 나는 minipage
정보를 배치하기 위해 상자(이 경우 s)를 사용하는 다른 접근 방식을 제안합니다 .
\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}
클라이언트용 버전(준비 지침 없음):
간단히 토글을 false로 설정하면 바텐더용 버전(준비 지침 포함)을 얻을 수 있습니다.
코드 작동 방식
기본 명령에는
\framecon
5개의 필수 인수가 있습니다.\framecon{<name>}{<ingredients>}{<price>}{<image-file>}{<prep. directions>}
재료를 작성하기 위해 추가
\fitem
명령이 정의되었습니다.\fritem{<ingredient>}{<quantity>}
예를 들어, 내 예에서 "EPIC" 항목은 다음과 같습니다.
\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.}
client
토글을 로 설정하면true
클라이언트 버전이 생성되고, 로 설정하면false
바텐더 버전이 생성됩니다.
행당 4개 미만의 이미지의 경우 \hfill
s를 삽입하여 원하는 정렬을 생성할 수 있습니다.
\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}