在幫助朋友完成論文時,我遇到了 itemize 的一個奇怪問題。她需要使用一些小圖像作為她的 itemize 的標籤,我建議使用\item[\includegraphics{xx}]
.然而,我們發現使用可選參數 for\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}