章节引用显示章节然后是小节编号

章节引用显示章节然后是小节编号

我简单地用 标记子节\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\,}

相关内容