Ну, я пытаюсь написать краткое резюме о моем шаблоне и я оказался на распутье. В моем определении класса я переопределил команду \section{}
to, \section*{}
чтобы сохранить определенную стилизацию моего шаблона, но теперь я хочу ссылаться на разделы независимо, но сохранить свойство, что если я напишу \section{A random title}
заголовок, он останется ненумерованным.
Позвольте мне объяснить это более подробно:
Я переопределил
\section{}
команду с помощью следующих строк кода:\let\oldsection\section \renewcommand{\section}[1]{% \oldsection*{#1} \phantomsection \addcontentsline{toc}{section}{#1} }
При использовании
\ref{A label given to the section}
в двух разных разделах я получаю следующий результат:
- Мне не нужно
\section{}
нумеровать команды, поскольку я создал мини-резюме, содержащее название каждого раздела в главе, как показано ниже:
Думаю, нет необходимости приводить код этого мини-резюме, чтобы не перегружать пост информацией.
По сути, мне нужна помощь, чтобы понять, как это \ref{}
работает.
решение1
Есть возможность сделать \ref{}
работу так, как вы хотите. Вам нужно будет переопределить \@currentlabel
на месте перед следующим \label
. В вашем случае это будет внутри переопределенного \section
.
Так как вы загружаете hyperref
, вам не нужно, \phantomsection
потому что якоря уже добавлены каждым помеченным разделом. Также рекомендуется использовать \NewCommandCopy
вместо \let
.
Следующий пример дает:
Я немного расширил ваш макрос, чтобы \ref{}
использовать более короткое название раздела, если указано. Я также предполагаю, что после двоеточий идут номера страниц, поскольку номер раздела в этом случае не имел бы смысла.
\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}