带有章节和小节名称的参考文献?

带有章节和小节名称的参考文献?

我在我的文档中声明了这样的章节和小节:

\section{1}
\label{sec:1}

\subsection{a}
\label{sec:1a}

这些格式使用标题安全包分别显示“问题 1”和“部分 a”。

当我使用命令引用给定的子部分时\ref{label},它会显示类似1.1,这显然是节/子节计数器的值。然而,我想要的是显示类似1a参考文献中的内容,其中1a分别从章节/小节名称中获取其值。我尝试过使用名称引用包来执行此操作,但它只显示部分a,并且似乎没有办法打印部分(包含子部分)的名称。

欢迎提出任何建议——无论是使用原始 LaTeX、修改\nameref还是使用其他包。

答案1

考虑到我的评论,这里有一个补丁,\nameref它将结合两个部分级别的名称:

\documentclass{article}

\usepackage{nameref}

\makeatletter
\def\NR@gettitle#1{%
  \GetTitleString{#1}%
  \expandafter\let\csname @currentlabelname@\thesection@level\endcsname\GetTitleStringResult
  \edef\@currentlabelname
  {%
    \ifcsname
      @currentlabelname@\number\numexpr\c@section@level-\@ne\relax
    \endcsname
      \unexpanded\expandafter\expandafter\expandafter
      {%
        \csname 
          @currentlabelname@\number\numexpr\c@section@level-\@ne\relax
        \endcsname
      }%
    \fi
    \unexpanded\expandafter{\GetTitleStringResult}%
  }
}
\makeatother


\begin{document}
\section{1}
\label{sec:1}

\subsection{a}
\label{sec:1a}

section: \nameref{sec:1}.

subsection: \nameref{sec:1a}.
\end{document}

输出

我希望大家清楚,这不是很笼统,但它回答了你的确切问题。应该可以进一步概括它。

编辑

补丁何时titlesec使用...

\usepackage{etoolbox}

\makeatletter
\def\chapter@level{0}
\def\section@level{1}
\def\subsection@level{2}
\def\subsubsection@level{3}
\def\paragraph@level{4}
\def\subparagraph@level{5}

\patchcmd\ttl@straight@i{\def\@currentlabelname{#2}}
{%
  \expandafter\def
  \csname @currentlabelname@\csname#1@level\endcsname\endcsname{#2}%
  \edef\@currentlabelname
  {%
    \ifcsname
      @currentlabelname@\number\numexpr\csname#1@level\endcsname-\@ne\relax
    \endcsname
      \unexpanded\expandafter\expandafter\expandafter
      {%
        \csname 
          @currentlabelname@\number\numexpr\csname#1@level\endcsname-\@ne\relax
        \endcsname
      }%
    \fi
    \unexpanded{#2}%
  }
}{}{}
\makeatother

相关内容