Когда я пробую следующий код, все работает так, как и ожидалось:
\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.
Но если я включу команду в комментарии, я просто получу a) вместо ожидаемого 1.1.a)
На самом деле я хочу, чтобы раздел отображался как a) ..., а ссылка — как 1.1.a без скобок.
Есть идеи?
решение1
Для любого счетчика LaTeX макрос — это префикс, используемый в ссылках. Обычно он используется во вложенном перечислении, чтобы получить именно тот эффект, когда метка списка просто показывает один уровень, а ссылка показывает развернутую форму.\[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
Второе решение также с исправлением оглавления (опять же, между скобками и заголовком просто обычный пробел кажется лучшим вариантом).
\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}
Уступающий