將自訂符號(圖形)插入該部分時出錯

將自訂符號(圖形)插入該部分時出錯

我正在製作一本食譜,並且想要使用單一巨集 \recipe (在下面的最小範例中)來插入食譜名稱、食物標籤(表示飲食限制的自訂符號)以及簡短說明。我有一個名為“foodtags”的資料夾,其中包含各種符號。當我透過命令(下面的 \foodtags)呼叫文字中的這些符號時,它會顯示正確的符號。

但是,當使用\recipe 命令時,我得到的錯誤是“未定義的控制序列。\foreach ...reach \let \pgffor@assign”,而不是讓符號在同一行上右對齊且大小與該部分相同。

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

這可以避免脆弱的內容進入目錄,同時仍然允許使用適合上下文的目錄(如果需要的話)。

相關內容