セクションにカスタム シンボル (グラフィック) を挿入する際にエラーが発生しました

セクションにカスタム シンボル (グラフィック) を挿入する際にエラーが発生しました

私は料理本を作っていますが、1 つのマクロ \recipe (以下の最小限の例) を使用して、レシピの名前、食品のタグ (食事制限を示すカスタム シンボル)、および簡単な説明を挿入したいと考えています。さまざまなシンボルが保存されている「foodtags」というフォルダーがあります。コマンド (以下、\foodtags) を使用してテキスト内のこれらのシンボルを呼び出すと、正しいシンボルが表示されます。

ただし、\recipe コマンドを使用すると、シンボルがセクションと同じ行に右揃えで同じサイズで表示されるのではなく、「未定義の制御シーケンス。\foreach ... \let \pgffor@assign@before@code に到達しました」というエラーが発生します。

\documentclass[12pt]{memoir}
\usepackage{tikz}
\usepackage{pgffor}
\usepackage{xstring}
\noexpandarg

%Kosher, Vegetarian, Vegan symbols
\newcommand*\foodtag[1]{\includegraphics[width=1em]{foodtags/#1}}
\newcommand*\foodtags[1]{\foreach \x in {#1} {\foodtag{\x}}}

%Recipe
\newcommand{\recipe}[3]{\section{#1 \hfill \foodtags{#2}} #3}

\begin{document}

\recipe{Turkish Style Charoset}{vegan,kosher}{A delicious smooth charoset made with apples, dates, chopped almonds, and wine}

\end{document}

この問題の根本原因は何だと思いますか? セクション環境とグラフィックスの相互作用に問題があるのでしょうか? どうすれば解決できますか?

答え1

この問題の背後にある理由については、セクション名内にグラフィックを含める方法これは、補助ファイルに書き込まれるとき\protectにコマンドが拡張されるのを避けるためにを使用することを示唆しています。なぜでしょうか?は、ファイルから読み取られる ToC に最終的に含まれるためです。\includegraphics\section.toc

あなたのケースでは、セクション タイトルに自動的にグラフィックのシーケンスが入ります。このタイプのリスト処理には通常、割り当てが必要ですが、セクション単位を扱う場合にも問題が生じます。そのため、\recipeマクロには次のことをお勧めします。

\newcommand{\recipe}[3]{\section[#1]{#1 \hfill \foodtags{#2}} #3}

これにより、脆弱なコンテンツが ToC に取り込まれるのを防ぎながら、コンテキストに適した ToC (必要な場合) を可能にします。

関連情報