番号付きの(サブ)セクション、文字付きのサブサブセクション - \refは文字のみを表示します

番号付きの(サブ)セクション、文字付きのサブサブセクション - \refは文字のみを表示します

次のコードを試すと、すべてが期待どおりに動作します。

\documentclass{article}
%\renewcommand{\thesubsubsection}{\alph{subsubsection})}
\begin{document}
\section{A Section}
\subsection{A Subsection}
\subsubsection{A Subsubsection}
\label{testlabel}
Hello world.
\par
In \ref{testlabel} I wrote: Hello world.
\end{document}

1.1.1 が印刷されます。

しかし、コメントでコマンドを有効にすると、期待される 1.1.a) ではなく、a) が表示されます。

実際、セクションは a) ... として表示され、参照は中括弧なしの 1.1.a として表示されます。

何か案は?

答え1

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

どの LaTeX カウンターでも、マクロは参照で使用されるプレフィックスです。通常、ネストされた列挙で使用され、リスト ラベルが 1 つのレベルのみを表示し、参照が展開された形式を表示するという効果を正確に実現します。\[email protected]

デフォルトのマクロでは、最終カウンターの印刷形式が両方の場所で同じであると想定されているため、カウンターを失いたい場合は、)ここでのようにプレフィックス マクロを使用してカウンターを削除するか、egreg の回答のようにカウンター形式に追加せず、代わりに)セクション見出し形式の一部を考慮する必要があります。

\documentclass{article}
\renewcommand{\thesubsubsection}{\alph{subsubsection})}
\makeatletter
\renewcommand{\p@subsubsection}{\thesubsection.\protect\eatbracket}
\makeatother
\def\eatbracket#1#2{#1\ifx)#2\else#2\fi}

\begin{document}
\section{A Section}
\subsection{A Subsection}
\subsubsection{A Subsubsection}
\label{testlabel}
Hello world.
\par
In \ref{testlabel} I wrote: Hello world.
\end{document}

答え2

括弧は後から削除するのではなく、必要な場所に追加する方がよいでしょう。これは、 の簡単な再定義によって実現できます\@seccntformat

\documentclass{article}

\makeatletter
\renewcommand{\@seccntformat}[1]{%
  \csname the#1\endcsname
  \csname suffix@#1\endcsname % this does nothing unless \suffix@... is defined
  \quad
}
% the subsubsection number is just a letter
\renewcommand{\thesubsubsection}{\alph{subsubsection}}
% but references will also have “section.subsection.” in front of the letter
\renewcommand{\p@subsubsection}{\thesubsection.}
% define \suffix@subsubsection
\newcommand{\suffix@subsubsection}{)}
\makeatother

\begin{document}

\section{A Section}
\subsection{A Subsection}
\subsubsection{A Subsubsection}\label{testlabel}

Hello world.

In \ref{testlabel} I wrote: Hello world.

\end{document}

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

a)これもスケーラブルです。とタイトルの間に通常の単語間スペースを入れ、\quad上位レベルでは を残しておきたいとします。その場合、コードを次のように変更できます。

\makeatletter
\renewcommand{\@seccntformat}[1]{%
  \csname the#1\endcsname
  \@ifundefined{suffix@#1}%
    {\quad}%
    {\csname suffix@#1\endcsname}%
}
% the subsubsection number is just a letter
\renewcommand{\thesubsubsection}{\alph{subsubsection}}
% but references will also have “section.subsection.” in front of the letter
\renewcommand{\p@subsubsection}{\thesubsection.}
% define \suffix@subsubsection
\newcommand{\suffix@subsubsection}{) }% parenthesis and space
\makeatother

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

2 番目の解決策では、目次も修正されます (ここでも、括弧とタイトルの間に通常のスペースを入れるのが最適なようです)。

\documentclass{article}

\makeatletter
\renewcommand{\@seccntformat}[1]{%
  \csname the#1\endcsname
  \@ifundefined{suffix@#1}
    {\quad}%
    {\csname suffix@#1\endcsname}%
}
% the subsubsection number is just a letter
\renewcommand{\thesubsubsection}{\alph{subsubsection}}
% but references will also have “section.subsection.” in front of the letter
\renewcommand{\p@subsubsection}{\thesubsection.}
% define \suffix@subsubsection
\newcommand{\suffix@subsubsection}{) }% parenthesis and space
\renewcommand{\l@subsubsection}[2]{%
  \@dottedtocline{3}{3.8em}{3.2em}{\let\numberline\subsubsection@numberline#1}{#2}%
}
\def\subsubsection@numberline#1{#1) }
\makeatother

\begin{document}

\tableofcontents

\section{A Section}
\subsection{A Subsection}
\subsubsection{A Subsubsection}
\label{testlabel}
Hello world.
\par
In \ref{testlabel} I wrote: Hello world.

\section{Whatever}
\end{document}

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

答え3

\thesubsubsection内容\thesubsectionも伝える必要があります

\documentclass{article}
\renewcommand{\thesubsubsection}{\thesubsection.\alph{subsubsection})}
\begin{document}
\section{A Section}
\subsection{A Subsection}
\subsubsection{A Subsubsection}
\label{testlabel}
Hello world.
\par
In \ref{testlabel} I wrote: Hello world. 
\end{document}

譲歩

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

関連情報