Использовать изображение в качестве метки для детализации

Использовать изображение в качестве метки для детализации

Помогая подруге с ее диссертацией, я столкнулся со странной проблемой с 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}

введите описание изображения здесь

Связанный контент