
\nameref
se rompe para las star
versiones de section
, paragraph
cuando titlesec
se 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 titlesec
paquete se carga al mismo tiempo, se muestra nameref
una 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@labeltrue
inserta el correspondientehyperref
ancla.
\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.