외부 문서에서 하위 그림을 상호 참조하려면 어떻게 해야 합니까?

외부 문서에서 하위 그림을 상호 참조하려면 어떻게 해야 합니까?

외부 라텍스 파일에서 그림(여러 하위 그림 포함)을 어떻게 상호 참조합니까? 현재 xr패키지와 cleveref패키지를 사용하고 있는데 아래와 같이 계속해서 오류가 발생합니다.

! 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}

외부 라텍스 파일에서 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에 로드 중externaldocumnet.tex문제를 해결해야합니다.

이유: mdpi클래스가 로드되고 hyperref이로 인해 상호 참조를 위한 많은 매크로가 재정의됩니다. 여기에는 다음에 작성된 매크로가 포함됩니다..aux파일. 여기에 추가 매개변수가 추가됩니다.

cleverref지원합니다 hyperref. 이는 추가 매개변수가 필요하다는 것을 의미합니다. 하지만 그들은외부문서.aux파일은 하이퍼참조 없이 컴파일되었기 때문입니다.

\usepackage{hyperref}의 서문에 추가externaldocumnet.tex이 문제를 해결합니다. 이 작업은 이전에 수행되어야 합니다 \uspackage{cleverref}. 그렇지 않으면 정의되지 않은 참조가 생성됩니다.

관련 정보