将自定义符号(图形)插入到部分时出错

将自定义符号(图形)插入到部分时出错

我正在制作一本食谱,想使用单个宏 \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}

知道这个问题的根源是什么吗?这是 Section 环境和图形交互的问题吗?我该如何解决这个问题?

答案1

这个问题背后的原因在如何在部分名称中包含图形这建议使用\protect来避免像\includegraphics在将其写入辅助文件时那样扩展命令。为什么?因为\sections 最终包含在从.toc文件中读取的 ToC 中。

在您的特定情况下,您还拥有进入部分标题的自动图形序列。这种类型的列表处理通常需要分配,这在处理部分单元时也会有问题。因此,我建议您的\recipe宏如下:

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

这可以避免脆弱的内容进入目录,同时仍然允许上下文适当的目录(如果需要的话)。

相关内容