友人の論文を手伝っているときに、itemize に関する奇妙な問題に遭遇しました。友人は itemize のラベルとして小さな画像を使用する必要があり、私は を使用することを提案しました\item[\includegraphics{xx}]
。しかし、 のオプション引数を使用して\includegraphics
図のパラメータ (サイズなど) を設定すると、コンパイルが失敗することがわかりました。
代わりに、引数を 1 つだけ取る補助コマンドを作成すると、コンパイルがスムーズに進みます。
なぜこのようなことが起こるのか、誰かヒントをくれませんか? また、ここで何が起こっているのかを理解するためにどこを見ればよいかも教えていただけませんか? どうもありがとうございます!
ここでは 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}