Como fazer referência cruzada de uma seção não numerada via "\ref"?

Como fazer referência cruzada de uma seção não numerada via "\ref"?

Bem, estou tentando escrever um breve resumo sobre meu modelo e cheguei a uma encruzilhada. Na definição da minha classe, redefini o \section{}comando para \section*{}manter uma certa estilização do meu template, mas agora quero referenciar as seções de forma independente, mas manter a propriedade de que se eu escrever \section{A random title}o título permanecerá sem numeração.

Deixe-me explicar isso com mais detalhes:

  1. Eu redefini o \section{}comando com estas linhas de código:

    \let\oldsection\section                             
    \renewcommand{\section}[1]{%                        
       \oldsection*{#1}                                
       \phantomsection                                
       \addcontentsline{toc}{section}{#1}              
    }
    
  2. Quando uso \ref{A label given to the section}em duas seções diferentes, obtenho o seguinte resultado:

insira a descrição da imagem aqui

  1. Não preciso que o \section{}comando seja numerado porque criei um mini-resumo que contém o nome de cada seção do capítulo da seguinte forma:

insira a descrição da imagem aqui

Acho que não é necessário incluir o código deste mini-resumo, para não sobrecarregar o post com informações.

Essencialmente, gostaria de ajuda apenas para descobrir como fazer isso \ref{}funcionar.

Responder1

Existe a possibilidade de fazer \ref{}o trabalho como quiser. Você precisaria redefinir \@currentlabelo local antes do próximo \label. No seu caso, isso estaria dentro de um arquivo \section.

Desde que você carrega hyperref, você não precisa \phantomsectionporque as âncoras já são adicionadas por cada seção marcada com estrela. Também é recomendado usar \NewCommandCopyem vez de \let.

O exemplo a seguir produz:

insira a descrição da imagem aqui

Expandi ligeiramente sua macro para \ref{} usar um título de seção mais curto, se especificado. Também presumo que depois dos dois pontos estão os números das páginas porque o número da seção, neste caso, não teria sentido.

\documentclass{report}
\usepackage[colorlinks]{hyperref}
\usepackage{blindtext}

\title{The Title}
\author{First Last}
\date{}

\makeatletter
\NewCommandCopy\oldsection\section
\RenewDocumentCommand\section{O{#2}m}{%
  \oldsection*{#2}\addcontentsline{toc}{section}{\numberline{}#2}%
  \edef\@currentlabel{(titled as "#1")}}
\makeatother


\begin{document}
\maketitle
\tableofcontents

\chapter{Chapter one}
\section{Section: Aaa}\label{sec:aaa}
\Blindtext

\chapter{Chapter two}
\section[Bbb]{Section: Bbb}\label{sec:bbb}
\Blindtext

\chapter{Chapter three}
Referring to the section 1 \ref{sec:aaa}: \pageref{sec:aaa}.\\*
Referring to the section 2 \ref{sec:bbb}: \pageref{sec:bbb}.
\end{document}

informação relacionada