\nameref
加载时,star
版本的中断。我有一个文档默认对段落进行编号,但我有几个不想编号但想引用的段落。这些标记为,但是,如果同时加载包,则会导致显示一个空字符串(hyperref 的链接框仍然可见)。section
paragraph
titlesec
\paragraph*
titlesec
nameref
梅威瑟:
\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}
尚未经过广泛测试。