Como posso fazer referência cruzada a uma subfigura em um documento externo?

Como posso fazer referência cruzada a uma subfigura em um documento externo?

Como você faz referência cruzada de uma figura (com múltiplas subfiguras) em um arquivo de látex externo? Atualmente estou usando xrpacote e cleverefpacote para fazer isso, mas estou constantemente recebendo um erro conforme mostrado abaixo.

! Argument of \@fourthoffive has an extra }.

Abaixo está a configuração que estou usando no main.texarquivo. Os arquivos necessários para a classe de documento personalizado podem ser encontrados em

http://img.mdpi.org/data/MDPI_template.zip?v=20170619

\documentclass[remotesensing,article,submit,moreauthors,pdftex,10pt,a4paper]{mdpi} 

\firstpage{1} 
\makeatletter 
\setcounter{page}{\@firstpage} 
\makeatother 
\articlenumber{x}
\doinum{10.3390/------}
\pubvolume{xx}
\pubyear{2017}
\copyrightyear{2017}
\externaleditor{Academic Editor: name}
\history{Received: date; Accepted: date; Published: date}

\usepackage{mathrsfs,amsmath}
\usepackage{amssymb}
\usepackage{subfigure}
\usepackage{multirow}
\usepackage{hhline}
\usepackage{bm}
\usepackage{xr}
\externaldocument[ext-]{externaldocument}
\newcommand{\RE}[1]{\Re\left\{#1\right\}}
\newcommand{\IM}[1]{\Im\left\{#1\right\}}
\renewcommand{\vec}[1]{\mathbf{#1}}
\renewcommand{\i}{\mathrm{i}}
\let\oldhat\hat
\renewcommand{\hat}[1]{\oldhat{\mathbf{#1}}}

\newcommand{\p}{\partial}
\newcommand{\w}{\omega}
\newcommand{\FT}[1]{\mathscr{F}\{#1\}}
\newcommand{\iFT}[1]{\mathscr{F}^{-1}\{#1\}}

\usepackage{cleveref}
\Title{Title example}
\Author{author 1}
\AuthorNames{author }
\address{
$^{1}$ \quad address 1 \\
$^{2}$ \quad address 2}
\corres{Correspondence: [email protected]}
\abstract{blahblah}
\keyword{keyword1}


\begin{document}
\cref{ext-fig:example}
\end{document}

No arquivo de látex externo, externaldocument.tex,

\documentclass[a4paper]{article}

\usepackage{mathrsfs,amsmath}
\usepackage{amssymb}
\usepackage{subfigure}
\usepackage{multirow}
\usepackage{hhline}
\usepackage{bm}
\usepackage[section]{placeins}
\usepackage{authblk}
\usepackage{graphicx}
\usepackage{cleveref}


\newcommand{\RE}[1]{\Re\left\{#1\right\}}
\newcommand{\IM}[1]{\Im\left\{#1\right\}}
\renewcommand{\vec}[1]{\mathbf{#1}}
\renewcommand{\i}{\mathrm{i}}
\let\oldhat\hat
\renewcommand{\hat}[1]{\oldhat{\mathbf{#1}}}

\newcommand{\p}{\partial}
\newcommand{\w}{\omega}
\newcommand{\FT}[1]{\mathscr{F}\{#1\}}
\newcommand{\iFT}[1]{\mathscr{F}^{-1}\{#1\}}




\title{external document}


\author[1]{author 1}
\author[2]{author 2}
\affil[1]{affil 1}
\affil[2]{affil 2}

\begin{document}

\maketitle
\renewcommand{\theequation}{S\arabic{equation}}
\renewcommand{\thefigure}{S\arabic{figure}}
\renewcommand{\thetable}{S\arabic{table}}


\begin{figure}[htp!]
 \centering
 \subfigure[example1]
   {\includegraphics[width=0.4\textwidth]{example-image-a.png}}
 \subfigure[example2]
   {\includegraphics[width=0.4\textwidth]{example-image-a.png}}
  \subfigure[example3]
   {\includegraphics[width=0.4\textwidth]{example-image-a.png}}
 \subfigure[example4]
   {\includegraphics[width=0.4\textwidth]{example-image-a.png}}
 \caption{main caption.}
 \label{fig:example}
\end{figure}





\end{document}

Obrigado por toda a ajuda!!

Responder1

Carregando hyperref antes cleverrefemdocumento externo.texdeve resolver seu problema.

O motivo: a mdpiclasse é carregada hyperrefe isso redefine muitas macros para referência cruzada. Isso inclui macros gravadas no.auxarquivo. Aqui são adicionados parâmetros adicionais.

cleverrefapoia hyperref. Isso significa que ele espera esses parâmetros adicionais. Mas eles estão faltando nodocumento externo.auxarquivo, já que foi compilado sem hyperref.

Adicionando \usepackage{hyperref}no preâmbulo dedocumento externo.texresolve esse problema. Isso deve ser feito antes \uspackage{cleverref}, caso contrário você obterá referências indefinidas.

informação relacionada