考え直してみると...

考え直してみると...

私はしばらくの間、ShareLaTeX を使用して見栄えの良いレシピ本を作成しようとしてきました。パッケージの使用も試みましたcookybookycuisine、うまく動作しないようです。各ページに次の内容を含めたいと考えています。

  1. レシピのタイトルと、そのタイトルを目次ページに配置します。
  2. 表示する記号:

    (a)食事が冷凍可能かどうか

    (b)ベジタリアンであるかどうか

    (c)作るのにどれくらいの時間がかかるか(準備時間および調理時間)

    (d)何人の人にサービスを提供するか

  3. 原材料リスト

    (a)独自のサブタイトルを持つこと

    (b)マリネなどのサブタイトルのオプションがあること

    (c)次のように並べる:数量測定成分(調製)。

  4. 「手順」と最初の手順の間に「オーブンを x 度に予熱する」という文言を入れるオプションが付いた手順 (これも独自のサブタイトル付き)。

  5. 各レシピに同じ場所に同じサイズの画像を追加するオプション。

現時点では、典型的なレシピは次のようになります。

ここに画像の説明を入力してください

見た目にはほぼ満足しています (色があるともっといいかもしれませんが)。ただし、すべて「手作業」で行ったため、すべてのレシピが同じフォーマットになるようにするのは大変な作業です。

そのようなテンプレートを作ることは可能ですか?

上記のレシピの私のコード:

\newpage
\section{Raspberry Chocolate Tiramisu}
\lhead{}\chead{Serves 4}\rhead{V}
\lfoot{Prep time:}\rfoot{Cook time:}
\begin{multicols}{2}
{\Large Instructions}
\begin{itemize}
    \item 100ml Double Strength Coffee
    \item 400g Raspberries (blitzed)
    \item 200g Mascarpone
    \item 2 tbsp Sweetener
    \item 1 tsp Vanilla Extract
    \item 700g Vanilla Yogurt
    \item 15g Dark Chocolate (finely grated)
\end{itemize}
\columnbreak
\textit{For the Crumble Mixture}:
\begin{itemize}
    \item 80g Wholemeal Flour
    \item 80g Plain Flour
    \item 80g Butter (diced)
    \item 70g Demerara Sugar
\end{itemize}
\end{multicols}
{\Large Instructions}\\
Preheat the over to Gas Mark 4, Electric $180^\circ$C, Fan $160^\circ$C.
\begin{enumerate}
    \item Stir the two kinds of flour together in a bowl, add the butter and rub it into the flour. When the mixture looks like breadcrumbs, mix in the brown sugar. Lay the mixture on a shallow baking tray and bake for 25-30 minutes until golden brown. Leave on the side to cool.
    \item Mix together the mascarpone, sweetener, vanilla extract, and three quarters of the chocolate. Put half the crumble mixture in each of the glasses and pour over half the quark mixture along with half the raspberries.
    \item Put the other half of the crumble mixture on top, followed by the remaining quark mixture and raspberries. Sprinkle over the last of the chocolate. Chill for 3 hours before serving.
\end{enumerate}

答え1

これを本当の LaTeX プロジェクトにしてくれた @alephzero に感謝します。つまり、LaTeX マークアップではなくレシピのセマンティクスに集中してくれたということです。

そのため、私はすっきりと整理された入力と出力を好みます。私は、\obeylines付随するマークアップなしでリスト環境をエミュレートするために使用しました。また、いくつかの可能性を示すために少し色を使用しました。私は、非常に単純なコードに、道を示すコメントを含めました。Computer Modern は私の選択ではありませんが、あなたの TeXing 環境が何であるかを知りませんので、不都合な仮定をしたくありませんでした。レシピのプレゼンテーションをできるだけ明確にするために、装飾 (ルールなど) を最小限に抑えます。どうぞお楽しみください。

後で:

不足している をいくつか追加しました%。さらに、 のオプション引数としてヘッドノートの可能性を追加しました\recipe。さらに、私自身の便宜を図るため、 を利用してgeometry.sty5.5 インチ x 8.5 インチの出力を作成しました。もちろん、これは必要に応じて変更できます。

さらに後ほど:

また、これはと からTOC を使用して作成されることも指摘しておく必要があります\frontmatter。ピーナッツのようなもので、1 個だけ食べることはできません...\backmatterbook.cls

% !TEX encoding = UTF-8 Unicode
% !TEX TS-program = XeLaTeX

%% pagestyle alterations per user request 14 xii 2020

\documentclass{article}
\usepackage{fancyhdr}
\usepackage{multicol}
\usepackage[%
    %a5paper,
    papersize={5.5in,8.5in},
    margin=0.75in,
    top=0.75in,
    bottom=0.75in,
    %twoside
    ]{geometry}
\usepackage{xcolor}
\usepackage{graphicx}

\raggedcolumns
\setlength{\multicolsep}{0pt}
\setlength{\columnseprule}{1pt}

\makeatletter

%% Used for the headnote and in \showit
%% If the text is small it is placed on one line;
%% otherwise it is put into a raggedright paragraph.
\long\def\testoneline#1{%
  \sbox\@tempboxa{#1}%
  \ifdim \wd\@tempboxa <0.75\linewidth
        \begingroup
            \itshape
            #1\par
        \endgroup
  \else
    \parbox{0.75\linewidth}{\raggedright\itshape#1}%
    \par
  \fi
}

\newif\if@mainmatter \@mainmattertrue

%% Borrowed from book.cls
\newcommand\frontmatter{%
    \cleardoublepage
  \@mainmatterfalse
  \pagenumbering{roman}}
\newcommand\mainmatter{%
    \cleardoublepage
  \@mainmattertrue
  \pagenumbering{arabic}}
\makeatother

%% Vary the colors at will

\definecolor{vegcolor}{rgb}{0,0.5,0.2}
\definecolor{frzcolor}{rgb}{0,0,1}
\definecolor{dessertcolor}{rgb}{0.5,0.2,0.1}
\definecolor{makeaheadcolor}{rgb}{0.5,0.5,0.6}

%% Thanks to alephzero for the excellent start:
\newcommand{\recipe}[2][]{%
    \newpage
    \thispagestyle{fancy}
    \lhead{}%
    \chead{}%
    \rhead{}%
    \lfoot{}%
    \rfoot{}%
    \section{#2}%
    \if###1##%
    \else
        \begin{center}
            \testoneline{#1}%
        \end{center}
    \fi
}
\newcommand{\serves}[2][Serves]{%
    \chead{#1 #2}}
\newcommand{\dishtype}[1]{%
    \rhead{#1}%
}
\newcommand{\dishother}[1]{%
    \lhead{#1}%
}
\newcommand{\vegetarian}{%
    {\large\color{vegcolor}\textbf{V}}%
}
\newcommand{\freeze}{%
    {\large\color{frzcolor}\textbf{F}}%
}
\newcommand{\dessert}{%
    {\large\color{dessertcolor}\textbf{D}}%
}
\newcommand{\makeahead}{%
    {\large\color{makeaheadcolor}\textbf{M}}%
}
%% Optional arguments for alternate names for these:
\newcommand{\preptime}[2][Prep time]{%
    \lfoot{#1: #2}%
}
\newcommand{\cooktime}[2][Cook time]{%
    \rfoot{#1: #2}%
}
\newcommand{\temp}[1]{%
    $#1^\circ$C}
%% Optional argument is the width of the graphic, default = 1in
\newcommand{\showit}[3][1in]{%
    \begin{center}
        \bigskip
            \includegraphics[width=#1]{#2}%
            \par
            \medskip
            \testoneline{#3}%
            \par
    \end{center}%
}

%% Optional argument for a  heading within the ingredients section
\newcommand{\ingredients}[1][]{%
    \if###1##%
        {\color{red}\Large\textbf{Ingredients}}%
    \else
        \emph{#1}%
    \fi
}

%% Use \obeylines to minimize markup
\newenvironment{ingreds}{%
    \parindent0pt
    \noindent
    \ingredients
    \par
    \smallskip
    \begin{multicols}{2}
    \leftskip1em
    \rightskip0pt plus 3em
    \parskip=0.25em
    \obeylines
    \everypar={\hangindent2em}
}{%
    \end{multicols}%
    \medskip
}

\newcounter{stepnum}

%% Optional argument for an italicized pre-step
%% Also use obeylines to minimize markup here as well
\newenvironment{method}[1][]{%
    \setcounter{stepnum}{0}
    \noindent
    {\color{red}\Large\textbf{Instructions}}%
    \par
    \smallskip
    \if###1##%
    \else
        \noindent
        \emph{#1}
        \par
    \fi
    \begingroup
    \parindent0pt
    \parskip0.25em
        \leftskip2em
    \everypar={\llap{\stepcounter{stepnum}\hbox to2em{\thestepnum.\hfill}}}
}{%
    \par
    \endgroup
    }

\pagestyle{plain}

\begin{document}

\frontmatter
\tableofcontents

\mainmatter

\recipe[This is a simple headnote that describes the product for the user. A simple but elegant dessert.]{Raspberry Chocolate Tiramisu}
\serves{4}
\preptime{1 hour}
\cooktime[Chill time]{1$\frac{1}{2}$ hours}
\dishtype{\dessert,\vegetarian}
\dishother{\makeahead, \freeze}
\begin{ingreds}
     100ml double strength coffee
     400g raspberries (blitzed)
     200g mascarpone
     2 tbsp sweetener
     1 tsp vanilla extract
     700g vanilla yogurt
     15g dark chocolate (finely grated) and a really long one
\columnbreak
\ingredients[For the Crumble Mixture:]
     80g wholemeal flour
     80g plain flour
     80g butter (diced)
     70g demerara sugar
\end{ingreds}

\begin{method}[Preheat the oven to Gas Mark 4, Electric \temp{180}, Fan \temp{160}.]
     Stir the two kinds of flour together in a bowl, add the butter and rub it into the flour. When the mixture looks like breadcrumbs, mix in the brown sugar. Lay the mixture on a shallow baking tray and bake for 25--30 minutes until golden brown. Leave on the side to cool.

     Mix together the mascarpone, sweetener, vanilla extract, and three quarters of the chocolate. Put half the crumble mixture in each of the glasses, sprinkling over with half the coffee, and pour over half the mascarpone mixture along with half the raspberries.

     Put the other half of the crumble mixture on top, sprinkling over with the remaining half of the coffee, followed by the remaining quark mixture and raspberries. Sprinkle over the last of the chocolate. Chill for 3 hours before serving.

\end {method}

\showit[1.25in]{example-image-b}{This is a picture}

\end{document}

最初のバージョン

考え直してみると...

私はこの形式があまり好きではないのですが、二分法、材料が視覚的にはっきりとした場所に表示され、作り方とはまったく別物になっています。表面上、この目的は、ユーザーが最初に必要な原材料が何であるかを確認できるようにすることです。イザベラ・ビートン(家政書、1861年、彼女は読者に「レシピに書かれている順番に正確に従うこと。つまり、まず必要な材料をテーブルに並べること。そうすれば、調理法、つまり調理方法は簡単に管理できる」と勧めた。これは現在では一般的に「調理法」と呼ばれている。ミス・アン・プレイス。 しかし、特に長いレシピでは、目が材料と調理法の間を行ったり来たりしているうちに、何か(多くの場合は材料)が失われたり読み間違えられたり、手順が飛ばされたり誤解されたりすることが多すぎます。この影響は、長すぎるテキスト行を読むのと似ています。目は次の行の始まりを正確に見つけることができず、同じ行をもう一度読んだり、行を飛ばしたりします。(https://www.fonts.com/content/learning/fontology/level-2/text-typography/length-column-width) いずれにせよ、私はこのレシピをかなり異なる形式でフォーマットするだろうとだけ言っておきます (下記参照)。

今のところ、このレシピをそのまま使って、別の問題、つまり材料の指定について触れることにします。印刷物で二部形式が登場して以来(英語では19世紀初頭)、材料は明確に区別された方法で記載されてきました。物語形式:塩小さじ1杯、小麦粉1カップ、ココア2オンスなど。会話では慣用句ですが、印刷物では、成分が話題になっているのではなく、身元材料そのもののことです。幸いなことに、TeX は、この慣習的な (満足のいくものではないが) 形式を不必要なマークアップで過度に乱すことなく、材料を解析することでこれを修正するツールを提供しています。さらに、材料は、数量が先行しない場合にのみ大文字にする必要があります (Whitman、レシピをタイプ別に分類、pp.124--125) も参照のこと。さらに、計測単位は省略しないのがベストである (Whitman,レシピをタイプ別に分類、スペースが限られている場合を除き、本文は pp. 15--16 にのみ引用します。

さらに、OpenType フォント (STIX Two) で度記号 (°) と分数 (½) を処理することで、コーディングをさらに最小限に抑えています。

\documentclass{article}
\usepackage{fancyhdr,multicol,xcolor,graphicx,xparse,fontspec}
\usepackage[%
    %a5paper,
    papersize={5.5in,8.5in},
    margin=0.75in,
    top=0.75in,
    bottom=0.75in,
    %twoside
    ]{geometry}

\makeatletter

%% Used for the headnote and in \showit
%% If the text is small it is placed on one line;
%% otherwise it is put into a raggedright paragraph.
\long\def\testoneline#1{%
  \sbox\@tempboxa{#1}%
  \ifdim \wd\@tempboxa <0.75\linewidth
        \begingroup
            \itshape
            #1\par
        \endgroup
  \else
    \parbox{0.75\linewidth}{\raggedright\itshape#1}%
    \par
  \fi
}

\newif\if@mainmatter \@mainmattertrue

%% Borrowed from book.cls
\newcommand\frontmatter{%
    \cleardoublepage
  \@mainmatterfalse
  \pagenumbering{roman}}
\newcommand\mainmatter{%
    \cleardoublepage
  \@mainmattertrue
  \pagenumbering{arabic}}
\makeatother

%% Vary the colors at will

\definecolor{vegcolor}{rgb}{0,0.5,0.2}
\definecolor{frzcolor}{rgb}{0,0.8,0.8}
\definecolor{dessertcolor}{rgb}{0.5,0.2,0.1}
\definecolor{makeaheadcolor}{rgb}{0.5,0.5,0.6}

%% Thanks to alephzero for the excellent start:
\newcommand{\recipe}[2][]{%
    \newpage
    \thispagestyle{fancy}
    \lhead{}%
    \chead{}%
    \rhead{}%
    \lfoot{}%
    \rfoot{}%
    \section{#2}%
    \if###1##%
    \else
        \begin{center}
            \testoneline{#1}%
        \end{center}
    \fi
}
\newcommand{\serves}[2][Serves]{%
    \chead{#1 #2}}
\newcommand{\dishtype}[1]{%
    \rhead{#1}%
}
\newcommand{\dishother}[1]{%
    \lhead{#1}%
}
\newcommand{\vegetarian}{%
    {\large\color{vegcolor}\textbf{V}}%
}
\newcommand{\freeze}{%
    {\large\color{frzcolor}\textbf{F}}%
}
\newcommand{\dessert}{%
    {\large\color{dessertcolor}\textbf{D}}%
}
\newcommand{\makeahead}{%
    {\large\color{makeaheadcolor}\textbf{M}}%
}
%% Optional arguments for alternate names for these:
\newcommand{\preptime}[2][Prep time]{%
    \lfoot{#1: #2}%
}
\newcommand{\cooktime}[2][Cook time]{%
    \rfoot{#1: #2}%
}
\newcommand{\temp}[1]{%
    #1°C}
%% Optional argument is the width of the graphic, default = 1in
\newcommand{\showit}[3][1in]{%
    \begin{center}
        \bigskip
            \includegraphics[width=#1]{#2}%
            \par
            \medskip
            \testoneline{#3}%
            \par
    \end{center}%
}

%% Optional argument for a  heading within the ingredients section
\newcommand{\ingredients}[1][]{%
    \if###1##%
        {\color{red}\Large\textbf{Ingredients}}%
    \else
        \emph{#1}%
    \fi
}

\def\ucit#1{\uppercase{#1}}
\begingroup
    \lccode`~=`\^^M
    \lowercase{%
\endgroup%% Ingredient first, then measure; empty measure and/or unit = " . "
    %% *=column break; amount<space>ingredient
    \NewDocumentCommand{\ing}{s u{ } u{~}}{% %% basically the same as: \def\ing#1 #2~{%
         %% or: \bfseries\ucit#3\if#1#2---\else,\ \fi
        \if.#2%
            \emph{#3}~ % A heading
        \else % Amounts containing spaces <1 teaspoon> have to use '~' <1~teaspoon>
            \textbf{\ucit#3, }#2 \IfBooleanT{#1}{\columnbreak}~ %
        \fi
    }%
}%


%% Use \obeylines to minimize markup
\newenvironment{ingreds}{%
    \parindent0pt
    \noindent
    \ingredients
    \par
    \smallskip
    \begin{multicols}{2}
    \leftskip1em
    \parindent-1em
    \rightskip0pt plus 3em
    \parskip=0.25em
    \obeylines
    \everypar={\ing}
}{%
    \end{multicols}%
    \medskip
}

\newcounter{stepnum}

%% Optional argument for an italicized pre-step
%% Also use obeylines to minimize markup here as well
\newenvironment{method}[1][]{%
    \setcounter{stepnum}{0}
    \noindent
    {\color{red}\Large\textbf{Instructions}}%
    \par
    \smallskip
    \if###1##%
    \else
        \noindent
        \emph{#1}
        \par
    \fi
    \begingroup
    \rightskip0pt plus 3em
    \parindent0pt
    \parskip0.25em
        \leftskip2em
    \everypar={\llap{\stepcounter{stepnum}\hbox to2em{\thestepnum.\hfill}}}
}{%
    \par
    \endgroup
    }

\setmainfont{STIX Two Text}

\pagestyle{plain}
\raggedcolumns
\setlength{\multicolsep}{0pt}
\setlength{\columnseprule}{1pt}

\begin{document}

\frontmatter
\tableofcontents

\mainmatter

\recipe[This is a simple headnote that describes the product for the user. A simple but elegant dessert.]{Raspberry Chocolate Tiramisu}
\serves{4}
\preptime{1 hour}
\cooktime[Chill time]{1½ hours}
\dishtype{\dessert,\vegetarian}
\dishother{\makeahead, \freeze}
\begin{ingreds}% amount<space>ingredient; initial <.>=comment;*=column break
     100ml double strength coffee
     400g raspberries (blitzed)
     200g mascarpone
     2~tablespoons sweetener
     1~teaspoon vanilla extract
     700g vanilla yogurt
     *15g dark chocolate (finely grated) 
     . for the crumble mixture:
     80g wholemeal flour
     80g plain flour
     80g butter (diced)
     70g demerara sugar
\end{ingreds}

\begin{method}[Preheat the oven to Gas Mark 4, Electric \temp{180}, Fan \temp{160}.]
     Stir the two kinds of flour together in a bowl, add the butter and rub it into the flour. When the mixture looks like breadcrumbs, mix in the brown sugar. Lay the mixture on a shallow baking tray and bake for 25--30 minutes until golden brown. Leave on the side to cool.

     Mix together the mascarpone, sweetener, vanilla extract, and three quarters of the chocolate. Put half the crumble mixture in each of the glasses and pour over half the quark mixture along with half the raspberries.

     Put the other half of the crumble mixture on top, followed by the remaining quark mixture and raspberries. Sprinkle over the last of the chocolate. Chill for 3 hours before serving.
\end {method}

\showit[1.25in]{example-image-b}{This is a picture}

\end{document}

第二バージョン

そして最後に...

同じレシピはこちら協調二部形式、つまり、各ステップの材料は、そのステップと連動して表示されている。元のレシピでは実際には使用材料リストには「ダブルストロングコーヒー」と記載されていました。私は3つのバージョンすべてにおいて、その省略を修正しようと試みました。

\documentclass{article}
\usepackage{fancyhdr,wrapfig,xcolor,graphicx,xparse,fontspec}
\usepackage[%
    %a5paper,
    papersize={5.5in,8.5in},
    margin=0.75in,
    top=0.75in,
    bottom=0.75in,
    %twoside
    ]{geometry}

\newcounter{stepnum}

%% |=====8><-----| %%


\makeatletter

%% From Donald Arseneau. Add after the wrapping text. Whew!
\def\wrapfill{% Just glad it works.
    \par
  \ifx\parshape\WF@fudgeparshape
    \nobreak
    \ifnum\c@WF@wrappedlines>\@ne
      \advance\c@WF@wrappedlines\m@ne
      \vskip\c@WF@wrappedlines\baselineskip
      \global\c@WF@wrappedlines\z@
    \fi
    \allowbreak
    \WF@finale
  \fi
}


%% Used for the headnote and in \showit
%% If the text is small it is placed on one line;
%% otherwise it is put into a raggedright paragraph.
\long\def\testoneline#1{%
  \sbox\@tempboxa{#1}%
  \ifdim \wd\@tempboxa <0.75\linewidth
        \begingroup
            \itshape
            #1\par
        \endgroup
  \else
    \parbox{0.75\linewidth}{\raggedright\itshape#1}%
    \par
  \fi
}

\newif\if@mainmatter \@mainmattertrue

%% Borrowed from book.cls
\newcommand\frontmatter{%
    \cleardoublepage
  \@mainmatterfalse
  \pagenumbering{roman}}
\newcommand\mainmatter{%
    \cleardoublepage
  \@mainmattertrue
  \pagenumbering{arabic}}
\makeatother

%% Vary the colors at will

\definecolor{vegcolor}{rgb}{0,0.5,0.2}
\definecolor{frzcolor}{rgb}{0,0.8,0.8}
\definecolor{dessertcolor}{rgb}{0.5,0.2,0.1}
\definecolor{makeaheadcolor}{rgb}{0.5,0.5,0.6}

%% Thanks to alephzero for the excellent start:
%% #1 [optional headnote]; #2 Title of recipe; #3 [Initial instructions]
\NewDocumentCommand{\recipe}{o m o}{%
    \setcounter{stepnum}{0}%
    \newpage
    \thispagestyle{fancy}
    \lhead{}%
    \chead{}%
    \rhead{}%
    \lfoot{}%
    \rfoot{}%
    \section{#2}%
    \IfNoValueF{#1}{\begin{center}\testoneline{#1}\end{center}}
    \IfNoValueF{#3}{\noindent\emph{#3}\par\medskip}
}
\newcommand{\serves}[2][Serves]{%
    \chead{#1 #2}}
\newcommand{\dishtype}[1]{%
    \rhead{#1}%
}
\newcommand{\dishother}[1]{%
    \lhead{#1}%
}
\newcommand{\vegetarian}{%
    {\large\color{vegcolor}\textbf{V}}%
}
\newcommand{\freeze}{%
    {\large\color{frzcolor}\textbf{F}}%
}
\newcommand{\dessert}{%
    {\large\color{dessertcolor}\textbf{D}}%
}
\newcommand{\makeahead}{%
    {\large\color{makeaheadcolor}\textbf{M}}%
}
%% Optional arguments for alternate names for these:
\newcommand{\preptime}[2][Prep time]{%
    \lfoot{#1: #2}%
}
\newcommand{\cooktime}[2][Cook time]{%
    \rfoot{#1: #2}%
}
\newcommand{\temp}[1]{%
    #1°C}
%% Optional argument is the width of the graphic, default = 1in
\newcommand{\showpic}[3][1in]{%
    \begin{center}
        \bigskip
            \includegraphics[width=#1]{#2}%
            \par
            \medskip
            \testoneline{#3}%
            \par
    \end{center}%
}

\def\ucit#1{\uppercase{#1}}
\begingroup
    \lccode`~=`\^^M
    \lowercase{%
\endgroup%% Ingredient first, then measure; empty measure and/or unit = " . "
    %% *=column break; amount<space>ingredient
    \NewDocumentCommand{\ing}{u{ } u{~}}{% %% basically the same as: \def\ing#1 #2~{% requires xparse
        \noindent
        \if.#1% Is a heading, a non-ingredient, in the ingredients block
            \emph{#2}~ % A heading
        \else % Amounts containing spaces <1 teaspoon> have to use '~' <1~teaspoon>
            \textbf{\ucit#2, }#1~ %
        \fi
    }%
}%

\NewDocumentEnvironment{step}{}{%
    \parindent0pt
    \leftskip0pt
    \begin{minipage}{\textwidth}
        \begin{wrapfigure}{r}{0pt}
            \kern-0.5em
            \vrule width 1pt\enskip
            \begin{minipage}{0.5\textwidth}
                \leftskip=1.5em
                \parindent=-1.5em
                \parskip=0.25em
                \obeylines
                    \everypar={\ing}
}{%
        \wrapfill
    \end{minipage}
    \medskip
}

\NewDocumentCommand{\method}{}{%
            \end{minipage}
        \end{wrapfigure}
        \rightskip0pt plus 2em
        \parskip0.25em
        \everypar={\llap{\stepcounter{stepnum}\hbox to 1.5em{\thestepnum.\hfill}}}
}

\setmainfont{STIX Two Text}

\pagestyle{plain}
\setlength{\intextsep}{0pt}

\begin{document}

\frontmatter
\tableofcontents

\mainmatter

\recipe[This is a simple headnote that describes the product for the user. A simple but elegant dessert.]{Raspberry Chocolate Tiramisu}[Preheat the oven to Gas Mark 4, Electric \temp{180}, Fan \temp{160}.]
\serves{4}
\preptime{1 hour}
\cooktime[Chill time]{1½ hours}
\dishtype{\dessert,\vegetarian}
\dishother{\makeahead, \freeze}

\begin{step}
     100ml double strength coffee
     400g raspberries 
\method
Prepare the coffee and set aside to cool; mash the raspberries with a fork and set aside.
\end{step}

\begin{step}
     . For the crumble mixture:
     80g wholemeal flour
     80g plain flour
     80g butter (diced)
     70g demerara sugar
    \method
    Stir the two kinds of flour together in a bowl, add the butter and rub it into the flour. When the mixture looks like breadcrumbs, mix in the brown sugar. Lay the mixture on a shallow baking tray and bake for 25--30 minutes until golden brown. Leave on the side to cool.
\end{step}

\begin{step}
     200g mascarpone
     2~tablespoons sweetener
     1~teaspoon vanilla extract
     700g vanilla yogurt
     15g dark chocolate (finely grated)
     \method
         Mix together the mascarpone, sweetener, vanilla extract, and three quarters of the chocolate.

    Put half the crumble mixture in each of the glasses, sprinkling over half the coffee, and pour over half the quark mixture along with half the raspberries.

     Put the other half of the crumble mixture on top, sprinkling over the remaining half of the coffee, followed by the remaining quark mixture and raspberries. Sprinkle over the last of the chocolate. Chill for 3 hours before serving.
\end{step}

\showpic[1.25in]{example-image-b}{This is a picture}

\end{document}

第三バージョン

最後に一つだけ...

@Alborz がまさに正しく指摘したように、ここでは修正が必要な点がいくつかあります。対応するメソッドよりも長い材料リストの問題については、修正を提供してくれた Donald Arseneau に感謝します。\wrapfillこの修正は にありwrapfig.sty、以下で使用されています。材料の入力も、次のコードの方が簡単です。

\documentclass{article}
\usepackage{fancyhdr,wrapfig,xcolor,graphicx,xparse,fontspec}
\usepackage[%
    %a5paper,
    papersize={5.5in,8.5in},
    margin=0.75in,
    top=0.75in,
    bottom=0.75in,
    %twoside
    ]{geometry}

\newcounter{stepnum}

%% |=====8><-----| %%


\makeatletter

%% From Donald Arseneau. Add after the wrapping text. Whew!
\def\wrapfill{% Just glad it works.
    \par
  \ifx\parshape\WF@fudgeparshape
    \nobreak
    \ifnum\c@WF@wrappedlines>\@ne
      \advance\c@WF@wrappedlines\m@ne
      \vskip\c@WF@wrappedlines\baselineskip
      \global\c@WF@wrappedlines\z@
    \fi
    \allowbreak
    \WF@finale
  \fi
}


%% Used for the headnote and in \showit
%% If the text is small it is placed on one line;
%% otherwise it is put into a raggedright paragraph.
\long\def\testoneline#1{%
  \sbox\@tempboxa{#1}%
  \ifdim \wd\@tempboxa <0.75\linewidth
        \begingroup
            \itshape
            #1\par
        \endgroup
  \else
    \parbox{0.75\linewidth}{\raggedright\itshape#1}%
    \par
  \fi
}

\newif\if@mainmatter \@mainmattertrue

%% Borrowed from book.cls
\newcommand\frontmatter{%
    \cleardoublepage
  \@mainmatterfalse
  \pagenumbering{roman}}
\newcommand\mainmatter{%
    \cleardoublepage
  \@mainmattertrue
  \pagenumbering{arabic}}
\makeatother

%% Vary the colors at will

\definecolor{vegcolor}{rgb}{0,0.5,0.2}
\colorlet{gfcolor}{brown}
\definecolor{frzcolor}{rgb}{0,0.8,0.8}
\definecolor{dessertcolor}{rgb}{0.5,0.2,0.1}
\definecolor{makeaheadcolor}{rgb}{0.5,0.5,0.6}

%% Thanks to alephzero for the excellent start:
%% #1 [optional headnote]; #2 Title of recipe; #3 [Initial instructions]
\NewDocumentCommand{\recipe}{o m o}{%
    \setcounter{stepnum}{0}%
    \newpage
    \thispagestyle{fancy}
    \lhead{}%
    \chead{}%
    \rhead{}%
    \lfoot{}%
    \rfoot{}%
    \section{#2}%
    \IfNoValueF{#1}{\begin{center}\testoneline{#1}\end{center}}
    \IfNoValueF{#3}{\noindent\emph{#3}\par\medskip}
}
\newcommand{\serves}[2][Serves]{%
    \chead{#1 #2}}
\newcommand{\dishtype}[1]{%
    \rhead{#1}%
}
\newcommand{\dishother}[1]{%
    \lhead{#1}%
}
\newcommand{\vegetarian}{%
    {\large\color{vegcolor}\textbf{V}}%
}
\newcommand{\glutenfree}{%
    {\large\color{gfcolor}\textbf{GF}}%
}
\newcommand{\freeze}{%
    {\large\color{frzcolor}\textbf{F}}%
}
\newcommand{\dessert}{%
    {\large\color{dessertcolor}\textbf{D}}%
}
\newcommand{\makeahead}{%
    {\large\color{makeaheadcolor}\textbf{M}}%
}
%% Optional arguments for alternate names for these:
\newcommand{\preptime}[2][Prep time]{%
    \lfoot{#1: #2}%
}
\newcommand{\cooktime}[2][Cook time]{%
    \rfoot{#1: #2}%
}
\newcommand{\temp}[1]{%
    #1°C}
%% Optional argument is the width of the graphic, default = 1in
\newcommand{\showpic}[3][1in]{%
    \begin{center}
        \bigskip
            \includegraphics[width=#1]{#2}%
            \par
            \medskip
            \testoneline{#3}%
            \par
    \end{center}%
}

\def\ucit#1{\uppercase{#1}}
\begingroup
    \lccode`~=`\^^M
    \lowercase{%
\endgroup%% Ingredient first, then measure; empty measure and/or unit = " . "
    %% *=column break; amount<space>ingredient
    \NewDocumentCommand{\ing}{u{ } u{ } u{~}}{% %% basically the same as: \def\ing#1 #2~{% requires xparse
        \noindent
        \if#1#2% Is a heading, a non-ingredient, in the ingredients block
            \emph{#3}~ % A heading
        \else % Amounts containing spaces <1 teaspoon> have to use '~' <1~teaspoon>
            \textbf{\ucit#3, }#1\if.#2\else\ #2\fi~ %
        \fi
    }%
}%

\NewDocumentEnvironment{step}{}{%
    \parindent0pt
    \leftskip0pt
    \begin{minipage}{\textwidth}
        \begin{wrapfigure}{r}{0pt}
            \kern-0.5em
            \vrule width 1pt\enskip
            \begin{minipage}{0.5\textwidth}
                \leftskip=1.5em
                \parindent=-1.5em
                \parskip=0.25em
                \obeylines
                    \everypar={\ing}
}{%
        \wrapfill
    \end{minipage}
    \medskip
}

\NewDocumentCommand{\method}{}{%
            \end{minipage}
        \end{wrapfigure}
        \rightskip0pt plus 2em
        \parskip0.25em
        \everypar={\llap{\stepcounter{stepnum}\hbox to 1.5em{\thestepnum.\hfill}}}
}

\setmainfont{STIX Two Text}

\pagestyle{plain}
\setlength{\intextsep}{0pt}

\begin{document}

\frontmatter
\tableofcontents

\mainmatter

\recipe[Some would say this is better than pie. It is certainly easier. And delicious. The original recipe came from Dorie Greenspan; this version also includes almond flour, suggested by King Arthur Baking.]{French Apple Cake}[Center a rack in the oven and preheat the oven to 350°F. Generously butter an 8-inch springform pan and put it on a baking sheet lined with a silicone baking mat or parchment paper.]
\serves{6-8}
\preptime{1 hour}
\cooktime{1 hour}
\dishtype{\dessert}
\dishother{\glutenfree}

\begin{step}
. . Batter, the dry:
1 cup AP (or GF) flour
½ cup almond flour
1 teaspoon baking powder
½ teaspoon cinnamon
¼ teaspoon nutmeg
¼ teaspoon salt
\method
Whisk the flour, baking powder, spices, and salt together in small bowl.
\end{step}

\begin{step}
4 large apples (if you can, choose 4 different kinds)
\method
Peel the apples, cut them in half and remove the cores. Cut the apples into 1- to 2-inch chunks.
\end{step}

\begin{step}
. . Batter, the wet:
2 large eggs
¾ cup maple or brown sugar
3 tablespoons dark rum
½ teaspoon pure vanilla extract
2--3 drops lemon extract
8 tablespoons unsalted butter, melted and cooled
\method
In a medium bowl, beat the eggs with a whisk until they’re foamy. Pour in the sugar and whisk for a minute or so to blend. Whisk in the rum, vanilla, and lemon oil. Whisk in  the flour and when it is incorporated, add the melted butter, mixing gently so that you have a smooth, rather thick batter.

Use a rubber spatula to fold-in the apples--it might look as if there isn't enough batter, but there is. Put the batter into the prepared pan, smoothing the top as much as possible. Bake for 55--65 minutes, or until a toothpick inserted  in the middle comes out clean.

Let cool 30 minutes. Before removing the side of the springform pan, run a knife around the edge of the cake to make sure no apples stuck to the pan.
\end{step}


\end{document}

新しい例

近いうちに、「TeX in the Kitchen」や「TeX en Cuisine」のようなブログを始めようかと思っています。面白いものになるかもしれません...

答え2

私が最初に行うステップは、いくつかのマクロを定義して、セマンティクスレシピのLateXの代わりに構文

それが終わったら、各セマンティックアイテムのフォーマット(色の適用など)を、編集とは独立して調整することができます。コンテンツレシピの。

これは完全ではありません (いずれにせよ、あなたが本をどのように見せたいのか正確にはわかりません!) が、実行でき、基本的なアイデアが伝わります。

\documentclass{article}
\usepackage{fancyhdr}
\usepackage{multicol}

% Your "recipes.sty" package starts here:
\newcommand{\recipe}{%
    \newpage\lhead{}\chead{}\rhead{}\lfoot{}\rfoot{}\section}
\newcommand{\serves}[1]{%
    \chead{Serves #1}}
\newcommand{\vegetarian}{%
    \rhead{V}}
\newcommand{\preptime}[1]{%
    \lfoot{Prep time: #1}}
\newcommand{\cooktime}[1]{%
    \rfoot{Cook time: #1}}
\newcommand{\ingredients}[1][\Large\emph{Ingredients}]{%
    \emph{#1}\\}
\newcommand{\instructions}[1][\Large\emph{Instructions}]{%
    \emph{#1}\\}
\newcommand{\temp}[1]{%
    $#1^\circ$C}

\pagestyle{fancy}
% End of "recipes.sty"

\begin{document}
\recipe{Raspberry Chocolate Tiramisu}
\serves{4}
\vegetarian

\begin{multicols}{2}
\ingredients
\begin{itemize}
    \item 100ml Double Strength Coffee
    \item 400g Raspberries (blitzed)
    \item 200g Mascarpone
    \item 2 tbsp Sweetener
    \item 1 tsp Vanilla Extract
    \item 700g Vanilla Yogurt
    \item 15g Dark Chocolate (finely grated)
\end{itemize}
\columnbreak
\ingredients[For the Crumble Mixture:]
\begin{itemize}
    \item 80g Wholemeal Flour
    \item 80g Plain Flour
    \item 80g Butter (diced)
    \item 70g Demerara Sugar
\end{itemize}
\end{multicols}

\instructions
Preheat the over to Gas Mark 4, Electric \temp{180}, Fan \temp{160}.
\begin{enumerate}
    \item Stir the two kinds of flour together in a bowl, add the butter and rub it into the flour. When the mixture looks like breadcrumbs, mix in the brown sugar. Lay the mixture on a shallow baking tray and bake for 25--30 minutes until golden brown. Leave on the side to cool.
    \item Mix together the mascarpone, sweetener, vanilla extract, and three quarters of the chocolate. Put half the crumble mixture in each of the glasses and pour over half the quark mixture along with half the raspberries.
    \item Put the other half of the crumble mixture on top, followed by the remaining quark mixture and raspberries. Sprinkle over the last of the chocolate. Chill for 3 hours before serving.
\end{enumerate}

\end{document}

\instructionsマクロとマクロにオプションの引数があることに注意してください\ingredients。引数がない場合、デフォルトのテキスト「Instructions」と「Ingredients」が自動的に作成されます。角括弧で囲まれた引数を使用すると、「For the Crumble Mixture:」などのようにそれを上書きできます。

関連情報