我简单地用 标记子节\label{labelname}
,并在文档后面用 引用它\ref{labelname}
。但是,此时它不会只打印子节编号,例如2.1
,而是先打印节编号,然后打印子节编号,例如2 2.1
。能否让它显示所需的输出?
最小示例(使用 revtex4 类):
\documentclass[pre,12pt]{revtex4}
\renewcommand \thesection{\arabic{section}}
\renewcommand \thesubsection{\arabic{section}.\arabic{subsection}}
\renewcommand \thesubsubsection{\arabic{section}.\arabic{subsection}
\begin{document}
\section{Section 1}
\subsection{Subsection 1}
\label{subsection1}
Some text.
\section{Section 2}
Previously seen in \ref{subsection1}
\end{document}
答案1
该文件revtex4.cls
包含以下行
\def\thesubsection{\Alph{subsection}}
\def\p@subsection{\thesection\,}
因此,对小节的交叉引用的表示将被排版为计数器的大写字母表示,并subsection
在计数器前面加上节的计数器和一个细空格:
\documentclass[pre,12pt]{revtex4}
\begin{document}
\section{Section 1}
\subsection{Subsection 1}
\label{subsection1}
Some text.
\section{Section 2}
Previously seen in~\ref{subsection1}
\end{document}
由于您已重新定义\thesubsection
为明确包含section
计数器,因此您将获得重复的计数器。为了防止这种情况,您可以重新定义\p@subsection
;例如,为了隐藏前缀并仅保留计数器的表示,subsection
您可以说:
\makeatletter
\def\p@subsection{}
\makeatother
完整示例:
\documentclass[pre,12pt]{revtex4}
\renewcommand\thesection{\arabic{section}}
\renewcommand\thesubsection{\arabic{section}.\arabic{subsection}}
\renewcommand\thesubsubsection{\arabic{section}.\arabic{subsection}}
\makeatletter
\def\p@subsection{}
\makeatother
\begin{document}
\section{Section 1}
\subsection{Subsection 1}
\label{subsection1}
Some text.
\section{Section 2}
Previously seen in \ref{subsection1}
\end{document}
必须对 will 进行类似的重新定义\p@subsubsection
,因为阶级
\def\p@subsubsection{\thesection\,\thesubsection\,}