Помогая подруге с ее диссертацией, я столкнулся со странной проблемой с itemize. Ей нужно использовать небольшое изображение в качестве метки для ее itemize, и я предложил использовать \item[\includegraphics{xx}]
. Однако мы обнаружили, что использование необязательного аргумента для \includegraphics
установки некоторого параметра рисунка (например, размера) приводит к сбою компиляции.
Вместо этого, если я создам вспомогательную команду, которая принимает только один аргумент, компиляция пройдет гладко.
Может кто-нибудь подскажет, почему так происходит? И, может быть, куда смотреть, чтобы понять, что тут происходит? Спасибо большое!
Вот MWE, для него требуется изображение example.png
в вашем рабочем каталоге:
\documentclass{article}
\usepackage{graphicx}
\newcommand{\imagebullet}[1]{\includegraphics[width=0.5cm]{#1}}
\begin{document}
\begin{itemize}
\item[\imagebullet{example.png}] This works
\item[\includegraphics[width=0.5cm]{example.png}] This does not!
\end{itemize}
\end{document}
решение1
TeX не отслеживает вложенность скобок, как это делается для фигурных скобок.
Когда вы вкладываете скобки
{.... { .... } ....}
1 2 2 1
тогда TeX знает, какие пары должны быть вместе. Этого не происходит для скобок. Здесь код просто ищет следующую закрывающую скобку. Поэтому TeX будет их спаривать следующим образом
\item[\includegraphics[width=0.5cm]{example.png}]
1 2 1
и ваша команда прерывается. Чтобы избежать этого, вы можете скрыть внутреннюю скобку в группе фигурных скобок:
\item[{\includegraphics[width=0.5cm]{example.png}}]
1{ 2 2 }1
решение2
Поскольку вы используете одно и то же изображение во всех элементах, может быть проще изменить макрос \imagebullet
по своему усмотрению, а затем просто вставить [\imagebullet]
.
\documentclass{article}
\usepackage{graphicx}
\newcommand{\imagebullet}{$\vcenter{\hbox{\includegraphics[width=0.5cm]{example-image}}}$}
\begin{document}
\begin{itemize}
\item[\imagebullet] This works
\item[\imagebullet] This also works
\end{itemize}
\end{document}