Как сделать перекрестную ссылку на подрисунок во внешнем документе?

Как сделать перекрестную ссылку на подрисунок во внешнем документе?

Как сделать перекрестную ссылку на рисунок (с несколькими подрисунками) во внешнем файле latex? В настоящее время я использую xrpackage и cleverefpackage для этого, но я постоянно получаю ошибку, как показано ниже.

! Argument of \@fourthoffive has an extra }.

Ниже приведена настройка, которую я использую в main.texфайле. Необходимые файлы для пользовательского класса документа можно найти по адресу

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}

Во внешнем файле latex, 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}

Спасибо вам за всю помощь!!

решение1

Загрузка hyperref перед cleverrefввнешнийdocumnet.texдолжно решить вашу проблему.

Причина: mdpiКласс загружается hyperref, и это переопределяет множество макросов для перекрестных ссылок. Это включает макросы, записанные в.auxфайл. Здесь добавляются дополнительные параметры.

cleverrefподдерживает hyperref. Это означает, что он ожидает эти дополнительные параметры. Но они отсутствуют ввнешнийдокумент.auxфайл, так как он был скомпилирован без hyperref.

Добавление \usepackage{hyperref}в преамбулувнешнийdocumnet.texрешает эту проблему. Это должно быть сделано до \uspackage{cleverref}, иначе вы получите неопределенные ссылки.

Связанный контент