如何交叉引用外部文件中的子圖?

如何交叉引用外部文件中的子圖?

如何在外部乳膠文件中交叉引用圖形(具有多個子圖)?我目前正在使用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}

在外部乳膠文件中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加載外部文檔網.tex應該可以解決你的問題。

原因:mdpi類別載入hyperref並重新定義了許多巨集以進行交叉引用。這包括寫入的宏.aux文件。這裡增加了額外的參數。

cleverref支持hyperref.這意味著它需要這些附加參數。但他們卻失蹤了外部文件.aux文件,因為它是在沒有 hyperref 的情況下編譯的。

\usepackage{hyperref}在序言中加入外部文檔網.tex解決了這個問題。這必須在 之前完成\uspackage{cleverref},否則您將得到未定義的引用。

相關內容