Cómo incluir gráficos dentro del nombre de la sección

Cómo incluir gráficos dentro del nombre de la sección

Estoy intentando insertar un ícono (un pdfarchivo) literalmente al lado del nombre de la sección.

ingrese la descripción de la imagen aquí

Quiero que el pequeño ícono del escudo esté donde <Icon>está.

El código para generar esta imagen es:

\subsection{Sentinel $<$Icon$>$}\icon{static/sentinel.pdf}

Si intento agregar el \iconinterior de \subsection:

\subsection{Sentinel \icon{static/sentinel.pdf}}

Recibo un error.

! Missing \endcsname inserted.
<to be read again>
               \csname\endcsname 
l.42 ...ction{Sentinel \icon{static/sentinel.pdf}}                                                  
? 
! Emergency stop.
<to be read again> 
                   \csname\endcsname 
l.42 ...ction{Sentinel \icon{static/sentinel.pdf}}
!  ==> Fatal error occurred, no output PDF file produced!
Transcript written on generated//manual.log.
make: *** [all] Error 1

Si es posible sería bueno que el ícono no aparezca en la tabla de contenido y que el enlace de la tabla de contenido siga funcionando.

\icones definido por

\newcommand{\icon}[1]{\begingroup
\setbox0=\hbox{\includegraphics[height=12pt,keepaspectratio]{#1}}%
\parbox{\wd0}{\box0}\endgroup}

Respuesta1

Necesitas algo de \protection. Por cierto, eso complicado \newcommandse puede simplificar.

\documentclass{article}
\usepackage{graphicx}
\newcommand{\icon}[1]{\includegraphics[height=12pt]{#1}}
\begin{document}
  \section{Some section here}
  \subsection{Sentinel \protect\icon{example-image-a}}
\end{document}

Si en muchos casos no quieres \protect, tienes estas posibilidades. Primero hazlo robustusando etoolbox.

\documentclass{article}
\usepackage{graphicx}
\usepackage{etoolbox}
\newcommand{\icon}[1]{\includegraphics[height=12pt]{#1}}
\robustify{\icon}
\begin{document}
  \section{Some section here}
  \subsection{Sentinel \icon{example-image-a}}
\end{document}

O usar \newrobustcmd(de etoolboxnuevo) como

\usepackage{etoolbox}
\newrobustcmd{\icon}[1]{\includegraphics[height=12pt]{#1}}

O utilice un argumento opcional como

\subsection[<opt argument>]{Sentinel \icon{example-image-a}}

etc....

Si está usando, hyperrefes posible que necesite hacerlo \texorpdfstring{\icon{example-image-a}}{}para deshacerse de la advertencia y las consecuencias.

\documentclass{article}
\usepackage{graphicx}
\usepackage{etoolbox}
\usepackage{hyperref}
\newrobustcmd{\icon}[1]{\includegraphics[height=12pt]{#1}}
\begin{document}
  \section{Some section here}
  \subsection{Sentinel \texorpdfstring{\icon{example-image-a}}{}}
\end{document}

ingrese la descripción de la imagen aquí

información relacionada