(Unter-)Abschnitt mit Nummer, Unterunterabschnitt mit Buchstaben - \ref zeigt nur den Buchstaben

(Unter-)Abschnitt mit Nummer, Unterunterabschnitt mit Buchstaben - \ref zeigt nur den Buchstaben

wenn ich den folgenden Code versuche, funktioniert alles wie erwartet:

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

Dadurch wird 1.1.1 gedruckt.

Wenn ich den Befehl jedoch im Kommentar aktiviere, erhalte ich nur a) anstelle des erwarteten 1.1.a)

Tatsächlich möchte ich, dass der Abschnitt als a) ... und die Referenz als 1.1.a ohne Klammer angezeigt wird.

Irgendwelche Ideen?

Antwort1

Bildbeschreibung hier eingeben

Für jeden LaTeX-Zähler ist das Makro das in Referenzen verwendete Präfix. Normalerweise wird es in verschachtelten Aufzählungen verwendet, um genau den Effekt zu erzielen, bei dem die Listenbezeichnung nur eine Ebene anzeigt und eine Referenz die erweiterte Form zeigt.\[email protected]

Die Standardmakros gehen davon aus, dass die Druckform des endgültigen Zählers an beiden Stellen gleich ist. Wenn Sie ihn also verlieren möchten, )benötigen Sie das Präfixmakro, um ihn zu entfernen, wie hier, oder Sie fügen ihn, wie in der Antwort von egreg, nicht dem Zählerformat hinzu und berücksichtigen stattdessen den )Teil des Abschnittsüberschriftenformats.

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

Antwort2

Es ist besser, die Klammer dort hinzuzufügen, wo sie hingehört, als sie nachträglich zu entfernen. Dies kann durch eine einfache Neudefinition von erreicht werden \@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}

Bildbeschreibung hier eingeben

Dies ist auch skalierbar. Angenommen, Sie möchten einen normalen Wortabstand zwischen dem a)und dem Titel, während Sie \quadfür höhere Ebenen das beibehalten. Dann können Sie den Code wie folgt ändern:

\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

Bildbeschreibung hier eingeben

Die zweite Lösung enthält auch eine Korrektur für das Inhaltsverzeichnis (auch hier scheint zwischen der Klammer und dem Titel einfach ein normales Leerzeichen am besten zu sein).

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

Bildbeschreibung hier eingeben

Antwort3

Sie müssen auch \thesubsubsectionden Inhalt angeben\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}

Nachgeben

Bildbeschreibung hier eingeben

verwandte Informationen