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:
Eu redefini o
\section{}
comando com estas linhas de código:\let\oldsection\section \renewcommand{\section}[1]{% \oldsection*{#1} \phantomsection \addcontentsline{toc}{section}{#1} }
Quando uso
\ref{A label given to the section}
em duas seções diferentes, obtenho o seguinte resultado:
- 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:
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 \@currentlabel
o 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 \phantomsection
porque as âncoras já são adicionadas por cada seção marcada com estrela. Também é recomendado usar \NewCommandCopy
em vez de \let
.
O exemplo a seguir produz:
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}