如果引用小节则获取节号(而不是小节编号)

如果引用小节则获取节号(而不是小节编号)

你好,我想做的是section当我在的时候\label引用subsection

例如我的代码是:

\documentclass[12pt]{article}
\usepackage{lipsum}  

\begin{document}

\section{My Section} 
\lipsum[1]

\subsection{My Sub Section}
\label{subancor}
\lipsum[1]
Try to get the number of the section not of the subsection: \ref{subancor}

\end{document}

常规行为就是\ref{subancor}意志给予我的东西1.1

但是,有没有办法让我显示“父”部分的编号?那么在这种情况下,只显示?(显然没有在我的语句下面1添加并引用这个)\ref{whatever}\section{My Section}

我正在寻找的是类似\refSectionNumberOf(subancor)这样的东西是否存在?

答案1

这是我的回答的简短形式https://tex.stackexchange.com/a/353536/31729,适合仅提供父计数器值的数字,而不是其名称。

大多数功能来自于包,计数器重置列表功能在我的包zref中确定。xassoccnt

代码zref添加了父计数器的值。第一次编译存储了父计数器的值,但当然从一开始就无法访问该值,这就是为什么要\zref@ifrefundefined进行检查。

换句话说:至少编译两次。在第一次编译宏之后(或者更好:在第一次编译期间)\parentref返回-100

\parentref是可扩展的。

确保保持通话

\GetAllResetLists% Important
\RegisterPostLabelHook{\zlabel}% Important

就在之前\begin{document}

如果之后用定义了任何计数器\newcounter\GetAllResetLists则必须再次调用以获取有关最新重置列表的正确信息。

以下是非常简短的版本:

\documentclass{article}
\usepackage{lipsum}
\usepackage{xassoccnt}
\usepackage[user,counter]{zref}


\usepackage{xparse}
\makeatletter

% Define new properties
\zref@newprop{childcountervalue}{\arabic{\LastRefSteppedCounter}}% This is the naked value
\zref@newprop{parentcountervalue}{\csname the\GetParentCounter{\LastRefSteppedCounter}\endcsname}

% Add the new properties to the main property list stored with \zlabel
\zref@addprops{main}{childcountervalue,parentcountervalue}


\NewDocumentCommand{\parentref}{m}{%
  \zref@ifrefundefined{#1}{%
    -100%
  }{%
    \zref@extract{#1}{parentcountervalue}%
  }%
}


\makeatother

\GetAllResetLists% Important
\RegisterPostLabelHook{\zlabel}% Important

\begin{document}

\section{My Section} 
\lipsum[1]

\subsection{My Sub Section}
\label{subancor}


\lipsum[1]

\section{Foo section}

\subsection{Foobar subsection} \label{foobarsubsection}
Try to get the number of the section not of the subsection: \parentref{subancor} and \parentref{foobarsubsection}

The sum is \the\numexpr\parentref{subancor}+\parentref{foobarsubsection}

\end{document}

在此处输入图片描述

相关内容