\nameref
除非我删除包,否则下面代码中的交叉引用 ( ) 不会填充titlesec
。我需要两个包。我该如何解决这个问题?
\documentclass{article}
\usepackage{titlesec}
\usepackage{hyperref}
\begin{document}
\section*{Section title}\label{first}
See section \nameref{first}.
\end{document}
答案1
看README
包含hyperref
:
titlesec -------- "nameref" supports titlesec, but hyperref does not (unsolved is the anchor setting, missing with unnumbered section, perhaps problems with page breaks with numbered ones).
因此,您可以使用nameref
,titlesec
但hyperref
不支持。该示例使用nameref
而不是进行编译hyperref
:
\documentclass{article}
\usepackage{titlesec}
\usepackage{nameref}
\begin{document}
\section*{Section title}\label{first}
See section \nameref{first}.
\end{document}
但是,\nameref{first}
为空,因为\label{first}
未引用编号部分。不支持未编号部分。
解决方法
以下解决方法定义了一个\starsection
将其参数传递给 的宏。然后通过(宏)的内部接口定义\section*
一个内部命令 ( )。然后,可以拾取当前节标题以供 使用。\@currentlabelname
nameref
\NR@gettitle
\label
\nameref
\documentclass{article}
\usepackage{titlesec}
\usepackage{nameref}
\makeatletter
\newcommand*{\starsection}[1]{%
\section*{#1}%
\NR@gettitle{#1}%
}
\makeatother
\begin{document}
\starsection{Section title}\label{first}
See section \nameref{first}.
\end{document}
答案2
由于这个问题是在我使用 寻找相同冲突的答案时出现的titlesec
,hyperref
并且\section*{}
需要标记,所以我想分享 Ulrike Fisher 几年后在论坛上发布的解决方法。因此,这个问题将与该答案交叉链接,从而对所有人都有益。
Ulrike 定义了一个新命令,可用于扩充需要标签的星号部分(和其他部分)。您可以在这里找到她的答案:由于 titilesec 和 latexbangla,nameref 不适用于未编号部分。