LaTeX - 获取未编号小节的名称

LaTeX - Get the name of an unnumbered subsection

我正在写一个 LaTeX 文档,我需要一种方法来获取我所在的小节的名称。我知道如何获取小节的名称,只要它有编号,问题是我的小节不是。

编号小节

\let\Subsectionmark\subsectionmark
\def\subsectionmark#1{\def\Subsectionname{#1}\Subsectionmark{#1}}

然后您只需使用以下代码获取您的子部分的名称:

\subsection{numbered}    
\Subsectionname %Will be "numbered"

未编号部分

当我尝试执行以下操作时,我的问题来了:

\subsection{numbered}  
\subsection*{unnumbered}    
\Subsectionname %Will be "numbered"

我想知道是否有一种简单的方法可以获取未编号小节的名称。

点击分段 标记 仅适用于编号为未编号分段单元的分段单元,不会更新任何标记。

下面我们进入 \@startsection 以捕获部分单元的类型 首先 ,然后我们将标题设置为 \@sect 的一部分 - 编号部分单位 - 或 \@ssect - unnumbered/starred 部分单位。标题在 unit-specific 宏中捕获:\sectiontitle 用于 \section[*]\subsectiontitle 用于 \subsection[*],等等

\documentclass{article}

\usepackage{etoolbox}
\makeatletter
\pretocmd{\@startsection}% <cmd>
  {\@namedef{@sectype}{#1}}% <pre>
  {}{}% <success><failure>
\patchcmd{\@sect}% <cmd>
  {\@xsect}% <search>
  {\@namedef{\@sectype title}{#8}\@xsect}% <replace>
  {}{}% <success><failure>
\patchcmd{\@ssect}% <cmd>
  {\@xsect}% <search>
  {\@namedef{\@sectype title}{#5}\@xsect}% <replace>
  {}{}% <success><failure>
\makeatother

\begin{document}

\section{A section}
Section name: \sectiontitle

\subsection{A subsection}
Subsection name: \subsectiontitle

\subsection*{Another subsection}
Subsection name: \subsectiontitle

\end{document}

titleref 提供了一个更简单的界面:

\documentclass{article}

% https://tex.stackexchange.com/q/75168/5764
\usepackage{titleref}
\makeatletter
\newcommand*{\currentname}{\TR@currentTitle}
\makeatother

\begin{document}

\section{A section}
Section name: \currentname

\subsection{A subsection}
Subsection name: \currentname

\subsection*{Another subsection}
Subsection name: \currentname

\end{document}