在回忆录中获取 \currentsection 和 \currentsubsection

在回忆录中获取 \currentsection 和 \currentsubsection

正如您所知,memoir没有简单的方法来获取当前的section和/或subsection,您只能获取\currenttitle,它会告诉您最后的分区命令。如果您已经发出\subsection{...}并且想要获取当前section名称,那么这是一件令人沮丧的事情。

longtable该问题源于尝试使用当前节/小节名称生成s的表格列表条目\addcontentsline而不显示标题:

\addcontentsline{lot}{table}{\protect\numberline{\thetable}{\ignorespaces FMECA: \currentsection\ -- \currentsubsection}}

有没有不太困难的方法让它们成为\currentsection\currentsubsection

[答案中的 MWE]

答案1

\documentclass{memoir}
\usepackage{etoolbox}

\makeatletter
\gdef\currentsection{??}
\gdef\currentsubsection{??}
\newcommand{\setcurrentdivisions}[2]{%
         \ifstrequal{#1}{section}{\xdef\currentsection{#2}\gdef\currentsubsection{??}}{}%
         \ifstrequal{#1}{subsection}{\xdef\currentsubsection{#2}}{}%
}
\apptocmd{\M@sect}{\setcurrentdivisions{#1}{#7}}{}{}
\makeatother

\begin{document}
\tableofcontents
 \section{aaa}
 Name: \currentsection\\
 Subname: \currentsubsection
 \subsection{bbb}
 Name: \currentsection\\
 Subname: \currentsubsection
\end{document}

\addcontentsline请注意,该解决方案在节标题中的[重音字母和 ] 和命令方面仍然存在一些问题:我尝试了 和 的几种组合\noexpand\protect\expandafter未能获得强大的命令,因此任何改进都将受到赞赏。

还应完成计数器的处理\chapter\part重置section

相关内容