
\nameref
bricht für die star
Versionen von ab section
, paragraph
wenn titlesec
geladen wird. Ich habe ein Dokument, das Absätze standardmäßig nummeriert, aber ich habe einige, die ich nicht nummerieren möchte, auf die ich aber verweisen möchte. Diese sind mit gekennzeichnet. \paragraph*
Wenn das titlesec
Paket jedoch gleichzeitig geladen wird, wird nameref
eine leere Zeichenfolge angezeigt (das Linkfeld von Hyperref ist weiterhin sichtbar).
MWE:
\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}
Ich vermute, dass Titlesec diesen Defekt bei ALLEN Star-Varianten von Abschnittsbefehlen verursacht, habe dies aber nicht getestet. Für mich paragraph*
ist das nur relevant, aber ein Fix für alle Varianten wäre das Beste.
Ich habe so eine Ahnung, dass es damit zusammenhängen könnte:https://tex.stackexchange.com/a/6658/19326Dies geht jedoch bei weitem über mein Latex-Wissen hinaus und ist für mich einfach „Magie“.
Antwort1
Fügen Sie Ihrer Präambel Folgendes hinzu:
\makeatletter
\def\ttl@useclass#1#2{%
\@ifstar
{\ttl@labeltrue\@dblarg{#1{#2}}}% {\ttl@labelfalse#1{#2}[]}%
{\ttl@labeltrue\@dblarg{#1{#2}}}}
\makeatother
Dies ermöglicht die Verarbeitung der regulären Argumente \<section>[<ToC>]{<regular>}
mit der Sektionseinheit \<section>
. Zusätzlich \ttl@labeltrue
fügt die Einstellung die entsprechendenhyperref
Anker.
\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}
Nicht ausführlich getestet.