%20%D0%B2%20%D1%80%D0%B0%D0%B7%D0%B4%D0%B5%D0%BB.png)
Я создаю кулинарную книгу и хочу использовать один макрос \recipe (в минимальном примере ниже) для вставки названия рецепта, тегов для еды (пользовательские символы, обозначающие диетические ограничения), а также краткого описания. У меня есть папка под названием "foodtags", в которой находятся различные символы. Когда я вызываю эти символы в тексте с помощью команды (ниже, \foodtags), она отображает правильные символы.
Однако при использовании команды \recipe вместо того, чтобы символы отображались выровненными по правому краю на той же строке и того же размера, что и раздел, я получаю ошибку «неопределенная управляющая последовательность. \foreach ... reach \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
когда это записано во вспомогательные файлы. Почему? Потому что \section
s в конечном итоге включаются в ToC, который считывается из .toc
файла.
В вашем конкретном случае у вас также есть автоматизированная последовательность графики, идущая в заголовок раздела. Этот тип обработки списка обычно требует назначений, что также проблематично при работе с единицами раздела. Таким образом, я бы предложил следующее для вашего \recipe
макроса:
\newcommand{\recipe}[3]{\section[#1]{#1 \hfill \foodtags{#2}} #3}
Это позволяет избежать попадания в ToC ненадёжного контента, при этом сохраняя контекстно-зависимое ToC (если это когда-либо понадобится).