![在 Springer Nature 模板 (sn-jnl) 中,“枚举”中的标签交叉引用无法正常工作](https://linux22.com/image/452885/%E5%9C%A8%20Springer%20Nature%20%E6%A8%A1%E6%9D%BF%20(sn-jnl)%20%E4%B8%AD%EF%BC%8C%E2%80%9C%E6%9E%9A%E4%B8%BE%E2%80%9D%E4%B8%AD%E7%9A%84%E6%A0%87%E7%AD%BE%E4%BA%A4%E5%8F%89%E5%BC%95%E7%94%A8%E6%97%A0%E6%B3%95%E6%AD%A3%E5%B8%B8%E5%B7%A5%E4%BD%9C.png)
当我嵌套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}