\nameref se rompe para las versiones en estrella de la sección/párrafo cuando se carga titlesec

\nameref se rompe para las versiones en estrella de la sección/párrafo cuando se carga titlesec

\namerefse rompe para las starversiones de section, paragraphcuando titlesecse carga. Tengo un documento que numera los párrafos de forma predeterminada, pero tengo algunos que no quiero numerar pero a los que me gustaría hacer referencia. Estos están marcados con \paragraph*, sin embargo, si el titlesecpaquete se carga al mismo tiempo, se muestra namerefuna cadena vacía (el cuadro de enlace de hyperref aún está visible).

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}

Sospecho que titlesec causa este defecto para TODAS las variantes en estrella de los comandos de sección, pero no lo he probado. Para mí solo paragraph*es relevante, sin embargo, lo mejor sería una solución para todas las variantes.

Tengo el presentimiento de que podría estar relacionado con esto:https://tex.stackexchange.com/a/6658/19326sin embargo, esto va mucho más allá de mis conocimientos sobre látex y es simplemente "mágico" para mí.

Respuesta1

Agregue lo siguiente a su preámbulo:

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

Esto permite el procesamiento de los argumentos regulares \<section>[<ToC>]{<regular>}con la unidad seccional \<section>. Además, la configuración \ttl@labeltrueinserta el correspondientehyperrefancla.

ingrese la descripción de la imagen aquí

\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}

No probado exhaustivamente.

información relacionada