在 Revtex 中为补充材料图表创建嵌套计数器

在 Revtex 中为补充材料图表创建嵌套计数器

使用补充材料 (SM) 生成论文变得越来越普遍。理想情况下,我希望编写一个包含正文和 SM 的文档,以便生成所有 latex 自动引用和超链接。许多期刊都喜欢我们通过图 S1、S2 等指定 SM 中的图表。我曾经使用过的一种方法是

\renewcommand{\thefigure}{S\arabic{figure}}
\setcounter{figure}{0}

然而,这会产生问题,因为现在我将拥有多个对象:图 1 和图 S1 具有相同的标识符。

我找到了另一种方法:

\newcounter{sfigure}
\renewcommand{\thefigure}{S\arabic{sfigure}}

但现在我需要补充

 \stepcounter{sfigure} 

每个图形之后

定义语法是什么

\newcounter{sfigure}

这样每次数字计数器是否增加?

答案1

超链接在添加链接时,计数器会在幕后做一些狡猾的事情,这就是为什么重置计数器会导致与相应超链接混淆的原因。要解决这个问题,您要么需要欺骗 hyperref,要么欺骗 latex 来做您想做的事情。

我认为欺骗 latex 可能更容易,所以我建议重新定义图形计数器。与其将计数器重置为,不如0“记住”主文档中的图形数量,比如在宏中\presupfigures,然后重新定义\thefigure,以便它打印一个S以及通过减去获得的“调整后的”图形数量\presupfigures

\renewcommand\thefigure{S\fpeval{\arabic{figure}-\presupfigures}}

这里\fpeval,来自韓膠囊包,是一种方便的减法方法,但当然还有其他方法可以做到这一点。

以下 MWE 提供了完整的详细信息。为了完整起见,我还以同样的方式调整了章节编号。

\documentclass{article}
\usepackage{hyperref}
\usepackage{xfp}
\newcommand\SupplementaryMaterials{%
  \xdef\presupfigures{\arabic{figure}}% save the current figure number
  \xdef\presupsections{\arabic{section}}% save the current section number
  \renewcommand\thefigure{S\fpeval{\arabic{figure}-\presupfigures}}
  \renewcommand\thesection{S\fpeval{\arabic{section}-\presupsections}}
}

\begin{document}
  \section{Main text}
    \begin{figure}\caption{Nice one caption!}\label{Fig:1}
    Here is a nice figure
  \end{figure}

  \SupplementaryMaterials
  \section{Supplementary text}
  \begin{figure}\caption{Nice two caption!}\label{Fig:2}
    Here is a nicer figure
  \end{figure}

  A reference to the nice figure: see \autoref{Fig:1}

  A reference to the nicer figure: see \autoref{Fig:2}
\end{document}

输出如下:

在此处输入图片描述

您无法从此图像检查超链接是否有效,但如果您编译自己的 MWE 版本,您会发现它们有效。

顺便说一句,最好提供一个最小工作示例提问时。我不能完全确定我是否已经解决了您的问题,因为问题中没有包含足够的信息来重现它。

相关内容