在 Springer Nature 模板 (sn-jnl) 中,“枚举”中的标签交叉引用无法正常工作

在 Springer Nature 模板 (sn-jnl) 中,“枚举”中的标签交叉引用无法正常工作

当我嵌套enumerate环境时,似乎会多次生成较低级别的引用。我应该如何在不修改模板本身的情况下修复此问题?

最小示例

\documentclass[sn-aps,pdflatex]{sn-jnl}

\begin{document}
\begin{enumerate}
    \item \label{itm:1}
    \item \label{itm:2}
    \begin{enumerate}
        \item \label{itm:2a}
        \item \label{itm:2b}
        \begin{enumerate}
            \item \label{itm:2b1}
        \end{enumerate}
    \end{enumerate}
\end{enumerate}
\ref{itm:1}, \ref{itm:2}, \ref{itm:2a}, \ref{itm:2b}, \ref{itm:2b1}.
\end{document}

参考文献的预期输出:1, 2, 2a, 2b, 2b.i

实际输出参考:1, 2, 22a, 22b, 2(2b)2b.i.

我想我应该\theenumii改变\theenumiii

\renewcommand{\theenumii}{\alph{enumii}}
\renewcommand{\theenumiii}{\roman{enumiii}}

然而,在这种情况下,参考的输出是:1, 2, 2a, 2b, 2(b)i.

看来,应该还有一些东西影响着参考文献的输出。

答案1

该班级有

\def\labelenumi{\theenumi.}         \def\theenumi{\arabic{enumi}}
\def\labelenumii{(\alph{enumii})}   \def\theenumii{\theenumi\alph{enumii}}
\def\labelenumiii{(\roman{enumiii})}\def\theenumiii{\theenumii.\roman{enumiii}}
\def\labelenumiv{(\Alph{enumiv})}   \def\theenumiv{\theenumiii.\Alph{enumiv}}

这似乎不是一个问题,按照类开发人员的意图,你应该但在文件中我们2a看到\ref{itm:2a}.aux

\newlabel{itm:2a}{{22a}{1}{}{Item.3}{}}

发生了什么?该类的开发人员忘记了\p@<counter>

\documentclass[sn-aps,pdflatex]{sn-jnl}

\labelformat{enumi}{#1}
\labelformat{enumii}{#1}
\labelformat{enumiii}{#1}
\labelformat{enumiv}{#1}

\begin{document}
\begin{enumerate}
    \item \label{itm:1}
    \item \label{itm:2}
    \begin{enumerate}
        \item \label{itm:2a}
        \item \label{itm:2b}
        \begin{enumerate}
            \item \label{itm:2b1}
        \end{enumerate}
    \end{enumerate}
\end{enumerate}
\ref{itm:1}, \ref{itm:2}, \ref{itm:2a}, \ref{itm:2b}, \ref{itm:2b1}.
\end{document}

在此处输入图片描述

相关内容