さて、私は自分のテンプレートについて短い要約を書こうとしていますが、岐路に立たされています。クラス定義で、テンプレートの特定のスタイルを維持する\section{}
ためにコマンドを再定義しました\section*{}
が、今度はセクションを個別に参照したいのですが、\section{A random title}
タイトルを記述すると番号が付かないというプロパティは維持したいのです。
これをもう少し詳しく説明しましょう:
\section{}
次のコード行でコマンドを再定義しました。\let\oldsection\section \renewcommand{\section}[1]{% \oldsection*{#1} \phantomsection \addcontentsline{toc}{section}{#1} }
2 つの異なるセクションで使用すると
\ref{A label given to the section}
、次の結果が得られます。
\section{}
次のように、章内の各セクションの名前を含むミニサマリーを作成したので、コマンドに番号を付ける必要はありません。
投稿に情報が多すぎて過負荷にならないように、このミニサマリーのコードを含める必要はないと思います。
基本的に、これをどうやって機能させるかを理解するための支援が欲しいのです\ref{}
。
答え1
\ref{}
希望どおりに動作させる可能性があります。 \@currentlabel
next の前に、その場で再定義する必要があります\label
。あなたの場合、それは redefined 内になります\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}