我正尝试pdf
在章节名称旁边插入一个图标(一个文件)。
我希望小盾牌图标位于 的位置<Icon>
。
生成该图像的代码是:
\subsection{Sentinel $<$Icon$>$}\icon{static/sentinel.pdf}
\icon
如果我尝试在里面添加\subsection
:
\subsection{Sentinel \icon{static/sentinel.pdf}}
我收到一个错误。
! 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
如果可能的话,最好图标不要出现在目录中,并且目录中的链接继续有效。
\icon
定义为
\newcommand{\icon}[1]{\begingroup
\setbox0=\hbox{\includegraphics[height=12pt,keepaspectratio]{#1}}%
\parbox{\wd0}{\box0}\endgroup}
答案1
你需要一些\protect
离子。顺便说一句,这种复杂的事情\newcommand
可以简化。
\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}
如果您不想\protect
在很多情况下这样做,您可以采用以下方法。首先robust
使用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}
或者再次使用\newrobustcmd
(from etoolbox
)
\usepackage{etoolbox}
\newrobustcmd{\icon}[1]{\includegraphics[height=12pt]{#1}}
或者使用可选参数,例如
\subsection[<opt argument>]{Sentinel \icon{example-image-a}}
ETC....
如果您正在使用,hyperref
您可能需要使用它\texorpdfstring{\icon{example-image-a}}{}
来摆脱警告和后果。
\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}