在帮助一位朋友完成她的论文时,我遇到了 itemize 的一个奇怪问题。她需要使用一些小图像作为 itemize 的标签,我建议使用\item[\includegraphics{xx}]
。然而,我们发现使用 的可选参数来\includegraphics
设置图形的某些参数(即大小)会导致编译失败。
相反,如果我创建一个只接受一个参数的辅助命令,则编译会顺利进行。
有人能告诉我为什么会发生这种情况吗?也许可以告诉我去哪里了解这里发生了什么?非常感谢!
example.png
这里有一个 MWE,它需要你工作目录中的图像:
\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}