「\ref」を使用して番号なしセクションを相互参照するにはどうすればよいですか?

「\ref」を使用して番号なしセクションを相互参照するにはどうすればよいですか?

さて、私は自分のテンプレートについて短い要約を書こうとしていますが、岐路に立たされています。クラス定義で、テンプレートの特定のスタイルを維持する\section{}ためにコマンドを再定義しました\section*{}が、今度はセクションを個別に参照したいのですが、\section{A random title}タイトルを記述すると番号が付かないというプロパティは維持したいのです。

これをもう少し詳しく説明しましょう:

  1. \section{}次のコード行でコマンドを再定義しました。

    \let\oldsection\section                             
    \renewcommand{\section}[1]{%                        
       \oldsection*{#1}                                
       \phantomsection                                
       \addcontentsline{toc}{section}{#1}              
    }
    
  2. 2 つの異なるセクションで使用すると\ref{A label given to the section}、次の結果が得られます。

ここに画像の説明を入力してください

  1. \section{}次のように、章内の各セクションの名前を含むミニサマリーを作成したので、コマンドに番号を付ける必要はありません。

ここに画像の説明を入力してください

投稿に情報が多すぎて過負荷にならないように、このミニサマリーのコードを含める必要はないと思います。

基本的に、これをどうやって機能させるかを理解するための支援が欲しいのです\ref{}

答え1

\ref{}希望どおりに動作させる可能性があります。 \@currentlabelnext の前に、その場で再定義する必要があります\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}

関連情報