
Uma mensagem de erro enganosa do seguinte código:
\documentclass{article}
\usepackage{graphicx}
\usepackage{subfig}
\begin{document}
\begin{figure}[!ht]
\centering%
\subfloat[]{
\label{subfig1}
\includegraphics[width=.4\linewidth]{fig1.pdf}%
}%
\qquad%
\subfloat[]{
\label{subfig2}
\includegraphics[width=.4\linewidth]{fig2.pdf}
}%
\label{myfig}
\caption{A caption for figures \subref{subfig1} and \subref{subfig2}.}
\end{figure}
\end{document}
dá
! Argument of \caption@ydblarg has an extra }.
<inserted text>
\par
l.19 ...es \subref{subfig1} and \subref{subfig2}.}
?
O que eu fiz errado? Não consigo ver nenhum extra }
em lugar nenhum.
Responder1
A solução mais fácil nestes casos é adicionar \protect
na frente dos suspeitos do costume; \subref
é um deles porque tem uma variante *.
\documentclass{article}
\usepackage{graphicx}
\usepackage{subfig}
\begin{document}
\begin{figure}[!ht]
\centering
\subfloat[]{%
\label{subfig1}%
\includegraphics[width=.4\linewidth]{fig1.pdf}%
}%
\qquad
\subfloat[]{%
\label{subfig2}%
\includegraphics[width=.4\linewidth]{fig2.pdf}%
}
\caption{A caption for figures \protect\subref{subfig1} and \protect\subref{subfig2}.}
\label{myfig}
\end{figure}
\end{document}
Observe onde adicionei/removi %
no final das linhas e a posição de\label{myfig}
depois \caption
.
Isso pode ser irritante se você tiver várias aparições de \subref
argumentos em movimento. Neste caso você pode “robustificar” o comando:
\documentclass{article}
\usepackage{graphicx}
\usepackage{subfig}
\usepackage{etoolbox} % for \robustify
\robustify{\subref}
\begin{document}
\begin{figure}[!ht]
\centering
\subfloat[]{%
\label{subfig1}%
\includegraphics[width=.4\linewidth]{fig1.pdf}%
}%
\qquad
\subfloat[]{%
\label{subfig2}%
\includegraphics[width=.4\linewidth]{fig2.pdf}%
}
\caption{A caption for figures \subref{subfig1} and \subref{subfig2}.}
\label{myfig}
\end{figure}
\end{document}
Outra solução é evitar subfig
for subcaption
, que é o caminho que recomendo:
\documentclass{article}
\usepackage{graphicx}
\usepackage{subcaption}
\begin{document}
\begin{figure}[!ht]
\centering
\subcaptionbox{\label{subfig1}}{%
\includegraphics[width=.4\linewidth]{fig1.pdf}%
}%
\qquad
\subcaptionbox{\label{subfig2}}{%
\includegraphics[width=.4\linewidth]{fig2.pdf}%
}
\caption{A caption for figures \subref{subfig1} and \subref{subfig2}.}
\label{myfig}
\end{figure}
\end{document}