加载 titlesec 时,\nameref 会中断部分/段落的星号版本

加载 titlesec 时,\nameref 会中断部分/段落的星号版本

\nameref加载时,star版本的中断。我有一个文档默认对段落进行编号,但我有几个不想编号但想引用的段落。这些标记为,但是,如果同时加载包,则会导致显示一个空字符串(hyperref 的链接框仍然可见)。sectionparagraphtitlesec\paragraph*titlesecnameref

梅威瑟:

\documentclass[12pt]{article}
\usepackage[sf]{titlesec} %comment this out and it works fine.
\usepackage{hyperref}
\begin{document}
\section{Sections}
\label{sec}
This is \nameref{sec}
\paragraph{A named Paragraph}
\label{par}
This is \nameref{par}
\paragraph*{A starred named Paragraph}
\label{par:star}
This is \nameref{par:star}
\end{document}

我怀疑 titlesec 会导致所有 star 版本的分段命令出现此缺陷,但我尚未测试过。仅对我来说paragraph*是相关的,但最好对所有版本进行修复。

我有预感这可能与此有关:https://tex.stackexchange.com/a/6658/19326然而这恰恰超出了我对乳胶的了解,对我来说简直就是“魔术”。

答案1

将以下内容添加到您的序言中:

\makeatletter
\def\ttl@useclass#1#2{%
  \@ifstar
    {\ttl@labeltrue\@dblarg{#1{#2}}}% {\ttl@labelfalse#1{#2}[]}%
    {\ttl@labeltrue\@dblarg{#1{#2}}}}
\makeatother

这允许\<section>[<ToC>]{<regular>}使用分段单元处理常规参数\<section>。此外,设置\ttl@labeltrue会插入适当的hyperref锚。

在此处输入图片描述

\documentclass[12pt]{article}
\usepackage[sf]{titlesec} %comment this out and it works fine.
\usepackage{hyperref}
\makeatletter
\def\ttl@useclass#1#2{%
  \@ifstar
    {\ttl@labelfalse\@dblarg{#1{#2}}}% {\ttl@labelfalse#1{#2}[]}%
    {\ttl@labeltrue\@dblarg{#1{#2}}}}
\makeatother
\begin{document}
\section{Sections}
\label{sec}
This is \nameref{sec}
\paragraph{A named Paragraph}
\label{par}
This is \nameref{par}
\paragraph*{A starred named Paragraph}
\label{par:star}
This is \nameref{par:star}
\end{document}

尚未经过广泛测试。

相关内容