Fehler beim Einfügen benutzerdefinierter Symbole (Grafiken) in den Abschnitt

Fehler beim Einfügen benutzerdefinierter Symbole (Grafiken) in den Abschnitt

Ich erstelle ein Kochbuch und möchte ein einzelnes Makro \recipe (im Minimalbeispiel unten) verwenden, um den Namen des Rezepts, die Tags für das Essen (benutzerdefinierte Symbole, die auf diätetische Einschränkungen hinweisen) und auch eine kurze Beschreibung einzufügen. Ich habe einen Ordner namens „foodtags“, in dem sich verschiedene Symbole befinden. Wenn ich diese Symbole im Text über einen Befehl aufrufe (unten \foodtags), werden die richtigen Symbole angezeigt.

Allerdings erhalte ich bei Verwendung des Befehls \recipe die Fehlermeldung „undefinierte Steuersequenz. \foreach … reach \let \pgffor@assign@before@code“, anstatt dass die Symbole rechtsbündig in derselben Zeile und in derselben Größe wie der Abschnitt angezeigt werden.

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

Irgendeine Idee, wo die Ursache dieses Problems liegt? Liegt es an der Interaktion zwischen der Abschnittsumgebung und den Grafiken? Wie kann ich das Problem lösen?

Antwort1

Der Grund für dieses Problem wird inSo fügen Sie Grafiken in den Abschnittsnamen einwas nahelegt, \protectdie Erweiterung von Befehlen zu vermeiden, wie \includegraphicswenn diese in die Hilfsdateien geschrieben werden. Warum? Weil \sections schließlich in das Inhaltsverzeichnis aufgenommen werden, das aus der .tocDatei gelesen wird.

In Ihrem speziellen Fall haben Sie auch eine automatisierte Grafiksequenz, die in den Abschnittstitel eingeht. Diese Art der Listenverarbeitung erfordert normalerweise Zuweisungen, was bei der Verarbeitung von Abschnittseinheiten ebenfalls problematisch ist. Daher würde ich Folgendes für Ihr \recipeMakro vorschlagen:

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

Dadurch wird verhindert, dass heikle Inhalte in das Inhaltsverzeichnis gelangen, und dennoch bleibt ein kontextangemessenes Inhaltsverzeichnis möglich (falls dies jemals erforderlich ist).

verwandte Informationen