我有两个 tex 文件,即main.tex
和supplementary.tex
。
对于supplementary.tex
,我有三个要求:
- 图表标题以前缀“图 S”开头。因此我设置了,
\documentclass{article}
\usepackage{xr-hyper}
\usepackage{hyperref}
\usepackage{cleveref}
\renewcommand{\figurename}{Figure S}
\begin{document}
% some supplementary materials
\end{document}
- 标题前缀和索引之间没有空格。具体来说,我希望标题中有“图 S1”而不是“图 S 1”。所以我设置,
\def\fnum@figure{\figurename\thefigure}
- 图表的引用以“补充图表”开头。也就是说,当我们引用一个图表时,比如说第一个图表,我想要“补充图表 1”,在这里我使用
\autoref
命令并设置
\renewcommand{\figureautorefname}{Supplementary Figure}
当我引用一个数字时,我确实
\autoref{figurelabel}
对于此supplementary.tex
文件,所有要求均已实现。
对于main.tex
,我有两个要求:
- 补充资料中的图表引用也以前缀“图 S”开头。因此我设置
\documentclass{article}
\usepackage{xr-hyper}
\usepackage{hyperref}
\usepackage{cleveref}
\externaldocument[supp-]{supplementary} % for cite the external supplementary tex file
\renewcommand{\figureautorefname}{Figure S}
当我在这个主文件中引用补充资料中的数字时,我确实
\autoref{supp-figurelabel}
然而,这导致属于的图形的引用main.tex
也以“图 S”而不是“图”开头
- 补充资料中的图表引用前缀和标题之间没有空格。我无法做到这一点,原因与上一个案例类似。
综上所述,对于supplementary.tex
,一切似乎都很好。但我该如何实现 的要求呢main.tex
?
答案1
感谢您澄清的结构supplementary.tex
并指出Supplementary Figure 1
,Supplementary Figure 2
等将出现在章节标题中,而不是“普通”的交叉引用标注中。
由于 中的交叉引用需求supplementary.tex
定义非常狭窄,我认为设置一个额外的计数器变量并\refstepcounter
在每个\caption
语句后增加它(通过 ),并将一个单独的 关联\label
到额外计数器的每个值是有意义的。如下面的代码所示,这相当容易实现,而且非常重要的是,它不会以任何方式干扰通常的\label
、\autoref
和\cref
措施。
那么,下面是我设置的方法supplementary.tex
:
\documentclass{article}
\usepackage{xr-hyper}
\usepackage[colorlinks,allcolors=blue]{hyperref}
\usepackage[nameinlink,noabbrev,capitalize]{cleveref}
\renewcommand\thefigure{S\arabic{figure}} % modify \thefigure, *not* \figurename
\newcounter{myfig} % create an extra counter variable
\begin{document}
\section*{Supplementary Figure \ref*{myfig:a}}
\begin{figure}[h]
\caption{A supplementary figure}
\label{fig:a}
\refstepcounter{myfig}\label{myfig:a} % <-- increment and \label the extra counter
\end{figure}
\section*{Supplementary Figure \ref*{myfig:b}}
\begin{figure}[h]
\caption{Another supplementary figure}
\label{fig:b}
\refstepcounter{myfig}\label{myfig:b} % <-- increment and \label the extra counter
\end{figure}
\end{document}
当然,如果您想通过呼叫来交叉引用数字\cref
,您当然可以这样做。
以下是我的结构main.tex
:
\documentclass{article}
\usepackage{xr-hyper}
\usepackage[colorlinks,allcolors=blue]{hyperref}
\usepackage[nameinlink,noabbrev,capitalize]{cleveref}
\externaldocument[supp-]{supplementary}
\begin{document}
\noindent
\cref{fig:1}, \cref{supp-fig:a,supp-fig:b}
\begin{figure}[h]
\caption{A main figure}
\label{fig:1}
\end{figure}
\end{document}