(sub)sección con número, subsubsección con letra - \ref muestra solo la letra

(sub)sección con número, subsubsección con letra - \ref muestra solo la letra

cuando intento seguir el código, todo funciona como se esperaba:

\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}

Esto imprimirá 1.1.1.

Pero si habilito el comando en el comentario, solo obtengo a) en lugar del esperado 1.1.a)

De hecho quiero que el apartado aparezca como a)... y la referencia como 1.1.a sin llave.

¿Algunas ideas?

Respuesta1

ingrese la descripción de la imagen aquí

Para cualquier contador LaTeX, la macro es el prefijo utilizado en las referencias. Normalmente se usa en enumeración anidada para obtener exactamente el efecto donde la etiqueta de la lista solo muestra un nivel y una referencia muestra la forma expandida.\[email protected]

Las macros predeterminadas suponen que la forma de impresión del contador final es la misma en ambos lugares, por lo que si desea perderlo, )necesita la macro de prefijo para eliminarlo, como aquí, o como en la respuesta de egreg, no agregarlo al formato del contador. y en su lugar considere la )parte del formato del encabezado de la sección.

\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}

Respuesta2

Es mejor agregar el paréntesis donde corresponde, en lugar de eliminarlo después. Esto se puede lograr mediante una simple redefinición de \@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}

ingrese la descripción de la imagen aquí

Esto también es escalable. Suponga que desea un espacio entre palabras normal entre a)y el título, manteniendo el \quadpara niveles superiores. Luego puedes modificar el código como

\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

ingrese la descripción de la imagen aquí

La segunda solución también incluye una solución para la tabla de contenido (nuevamente, entre el paréntesis y el título, parece mejor dejar un espacio normal).

\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}

ingrese la descripción de la imagen aquí

Respuesta3

También debes proporcionar el \thesubsubsectioncontenido.\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}

Flexible

ingrese la descripción de la imagen aquí

información relacionada