![如何交叉引用外部文档中的子图?](https://linux22.com/image/357816/%E5%A6%82%E4%BD%95%E4%BA%A4%E5%8F%89%E5%BC%95%E7%94%A8%E5%A4%96%E9%83%A8%E6%96%87%E6%A1%A3%E4%B8%AD%E7%9A%84%E5%AD%90%E5%9B%BE%EF%BC%9F.png)
如何在外部 latex 文件中交叉引用一个图形(带有多个子图形)?我目前正在使用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}
在外部 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
外部文档.tex应该可以解决你的问题。
原因:mdpi
类加载hyperref
并重新定义了很多用于交叉引用的宏。这包括写入.aux文件。这里添加了额外的参数。
cleverref
支持hyperref
。这意味着它需要这些附加参数。但它们在外部文档.aux文件,因为它是在没有 hyperref 的情况下编译的。
\usepackage{hyperref}
在序言中添加外部文档.tex解决了这个问题。必须在之前完成此操作\uspackage{cleverref}
,否则您将获得未定义的引用。