![提取当前章节标题并包含在 URL 中](https://linux22.com/image/467839/%E6%8F%90%E5%8F%96%E5%BD%93%E5%89%8D%E7%AB%A0%E8%8A%82%E6%A0%87%E9%A2%98%E5%B9%B6%E5%8C%85%E5%90%AB%E5%9C%A8%20URL%20%E4%B8%AD.png)
我正在编写一个包含§ions=
部分的 URL。我想在后面添加一个宏§ions=
,这样每当打开 URL 时,当前部分标题都会动态填充。
我尝试了\thepage
和,\thesection
它们都运行良好,可以显示当前页码或章节编号。但是,我想要的是章节标题,包括编号章节和未编号章节。
我尝试了这邮政。
第一的:
\documentclass{article}
\newcommand*\nowtitle{}
\let\oldsectionmark=\sectionmark
\renewcommand*\sectionmark[1]{%
\renewcommand*\nowtitle{#1}%
\oldsectionmark{#1}}
\begin{document}
\section{The first section}
\nowtitle
\section*{The second section}
\nowtitle -- (It shows ``The first section", but should be ``The second section")
\end{document}
问题是未编号的部分显示前一个编号的部分标题。
第二:
\documentclass{article}
\usepackage{etoolbox}
\makeatletter
\patchcmd{\@sect}% <cmd>
{\ifnum}% <search>
{\edef\nowtitle{#7}\ifnum}% <replace>
{}{}% <success><failure>
\patchcmd{\@ssect}% <cmd>
{\@tempskipa}% <search>
{\edef\nowtitle{#5}\@tempskipa}% <replace>
{}{}% <success><failure>
\makeatother
\begin{document}
\section{The first section}
\nowtitle
\section*{The second section}
\nowtitle
\end{document}
作为最小工作示例,它运行良好,但在我们的项目中不起作用。它似乎与现有包有冲突:
\usepackage[bookmarksopen=true,bookmarksnumbered=true]{hyperref}
\usepackage{nameref}
\usepackage{titlesec}
答案1
实际用例中的所有附加包都会重新定义或影响分段单元。titlesec
在游戏中,可以通过 来查看分区单位的标题\ttl@savetitle
。
\documentclass{article}
\usepackage[bookmarksopen=true,bookmarksnumbered=true]{hyperref}
\usepackage{nameref}
\usepackage{titlesec}
\begin{document}
\section{The first section}
\makeatletter
\ttl@savetitle
\makeatother
\section*{The second section}
\makeatletter
\ttl@savetitle
\makeatother
\end{document}