\ref{} を使用してフォーマットされた方法で複数のカウンターを参照するにはどうすればよいですか?

\ref{} を使用してフォーマットされた方法で複数のカウンターを参照するにはどうすればよいですか?

ドキュメントには 2 つのカウンターがありcounterAますcounterB

\ref{}文書内の参照を1.a)または のように印刷し2.、数字が を参照しcounterA、文字が を参照するようにしますcounterB

それは可能ですか?どうすればできますか?

\documentclass{article}
\begin{document}

\newcounter{counterA} 
\setcounter{counterA}{0}

\newcounter{counterB}
\setcounter{counterB}{0}


\refstepcounter{counterA}
\refstepcounter{counterB}
\label{First_Label}

I get: \ref{Second_Label}. I would like \textbf{2.}\,b)

Vestibulum lectus metus, tincidunt at fermentum non, pellentesque at lorem. Vivamus nisl sem, tempor ac mi et, elementum feugiat justo. Pellentesque tristique consequat molestie.


\bigskip
\refstepcounter{counterA}
\refstepcounter{counterB}
\label{Second_Label}

I get: \ref{First_Label}. I would like \textbf{1.}\,a)

Morbi nec nibh nulla. Cras posuere erat vitae lacus convallis, ut consequat urna dignissim. 
\end{document}

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

答え1

counterB命令を使って、たとえば というカウンタ変数を作成するたびに\newcounter、LaTeX は というマクロを設定し、\p@counterB相互参照を作成するためにラベルに他の情報を「プレフィックス」として追加します。つまり、次のように入力できます。

\makeatletter
\renewcommand\p@counterB{\thecounterA.}
\makeatother

の現在の値の LaTeX 表現にcounterAa を足したものを、.の値の LaTeX 表現の前に付けますcounterB

完全な MWE:

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

\documentclass{article}
\newcounter{counterA}
\newcounter{counterB}
\renewcommand\thecounterA{\arabic{counterA}} % arabic numbering
\renewcommand\thecounterB{\alph{counterB})}  % alphabetic numbering
\makeatletter
\renewcommand\p@counterB{\thecounterA.}
\makeatother
\begin{document}
% need to increment the counters via \refstepcounter
\refstepcounter{counterA} \label{refA}
\refstepcounter{counterB} \label{refB}
Here's a cross-reference to item \ref{refB}.
\end{document}

答え2

次のコマンドを使用できます。

\renewcommand{\thecounterB}{\textbf{\thecounterA}.\alph{counterB})}

完全な MWE は次のとおりです。

% arara: pdflatex
\documentclass{article}

\newcounter{counterA} 
\setcounter{counterA}{0}

\newcounter{counterB}
\setcounter{counterB}{0}

\renewcommand{\thecounterB}{\textbf{\thecounterA}.\alph{counterB})}
\begin{document}

\refstepcounter{counterA}
\refstepcounter{counterB}
\label{First_Label}

I get: \ref{Second_Label}. I would like \textbf{2.}\,b)

Vestibulum lectus metus, tincidunt at fermentum non, pellentesque at lorem. Vivamus nisl sem, tempor ac mi et, elementum feugiat justo. Pellentesque tristique consequat molestie.


\bigskip
\refstepcounter{counterA}
\refstepcounter{counterB}
\label{Second_Label}

I get: \ref{First_Label}. I would like \textbf{1.}\,a)

Morbi nec nibh nulla. Cras posuere erat vitae lacus convallis, ut consequat urna dignissim. 
\end{document}

関連情報