次のコードを試すと、すべてが期待どおりに動作します。
\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}
譲歩