正如您所知,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
。