Ich benutze etocum Abschnittsnummern aus Links im Inhaltsverzeichnis auszuschließen. Wenn ich jedoch einen nicht nummerierten Appexdix-Abschnitt einfüge, fügt etoc einen Punkt hinzu:
Ich habe mit dem Code herumgespielt und festgestellt, dass das Problem bei der Definition liegt \etocthenumber
( \etocsetstyle{section}
ohne etoc ist der Punkt nicht da). Gibt es eine Lösung?
Hier ein MWE:
\documentclass{article}
\usepackage{etoolbox}
\usepackage{xcolor}
% heading styles:
\usepackage{titlesec}
\titleformat{\section}
{\color{teal}\large\sffamily}
{\thetitle.\hspace{0.5cm}}
{0cm}
{}
\titleformat{\subsection}
{\color{violet}\bfseries}
{\hspace{0.75cm}\thetitle.\hspace{0.3cm}}
{0cm}
{}
\titleformat{\subsubsection}
{\color{olive}\itshape}
{\hspace{1.3cm}\thetitle.\hspace{0.3cm}}
{0cm}
{}
% ToC styles:
\usepackage[dotinlabels]{titletoc}
\contentsmargin{2.55em} % space for a page number
\titlecontents{section}
[3.8em] % 1.5em + 2.3em
{\vspace{0.3cm}\sffamily\bfseries\large}
{\contentslabel{2.3em}}
{\hspace*{-2.3em}}
{\normalsize\normalfont\rmfamily\titlerule*[1pc]{.}\contentspage}
[\vspace{0.1cm}]
\titlecontents{subsection}
[5.2em] % 3.8em + 1.3em
{\vspace{0.1cm}}
{\contentslabel{1.4em}}
{\hspace*{-1.4em}}
{\titlerule*[1pc]{.}\contentspage}
[]
\titlecontents{subsubsection}
[6.5em] % 5.2em + 1.3em
{\vspace{0.1cm}}
{\contentslabel{1.3em}}
{\hspace*{-1.3em}}
{\titlerule*[1pc]{.}\contentspage}
[]
\makeatletter
\let\perhapsprint\@firstofone
\patchcmd{\addtocontents}
{\glossary\@gobble}
{\glossary\@gobble\let\perhapsprint\@gobble}
{}{}
\makeatother
%\newcommand{\perhapsprint}[1]{\ifprintprefix#1\fi}
%\newif\ifprintprefix
\renewcommand\thesection{\Roman{section}}
\renewcommand\thesubsection{%
\perhapsprint{\Roman{section}.}%
\alph{subsection}%
}
\renewcommand\thesubsubsection{%
\perhapsprint{\Roman{section}.\alph{subsection}.}%
\arabic{subsubsection}%
}
% appendix:
\usepackage[toc,page]{appendix}
\renewcommand*\thesubsection{\Alph{subsection}}
\usepackage{hyperref}
% exclude number from the link in ToC:
\usepackage{etoc}
\makeatletter
% store the original table of contents macros (they are not modified by hyperref, only \contentsline is)
\let\latchapter\l@chapter
\let\latsection\l@section
\let\latsubsection\l@subsection
\let\latsubsubsection\l@subsubsection
% then use the etoc package to feed the l@ macros with a filtered out data
\etocsetstyle{chapter}{}{}
{\latchapter{\numberline{\etocthenumber}\etocname}{\etocpage}}{}
\etocsetstyle{section}{}{}
{\latsection{\numberline{\etocthenumber}\etocname}{\etocpage}}{}
\etocsetstyle{subsection}{}{}
{\latsubsection{\numberline{\etocthenumber}\etocname}{\etocpage}}{}
\etocsetstyle{subsubsection}{}{}
{\latsubsubsection{\numberline{\etocthenumber}\etocname}{\etocpage}}{}
\makeatother
\renewcommand\thesection{\Roman{section}}
\renewcommand\thesubsection{\alph{subsection}}
\renewcommand\thesubsubsection{\arabic{subsubsection}}
\renewcommand\theparagraph{\Roman{section}.\alph{subsection}.\arabic{subsubsection}.\roman{paragraph}}
\begin{document}
\tableofcontents
\section{H1}
\subsection{H2}
\subsubsection{H3}
\section{H1}
\subsection{H2}
\subsubsection{H3}
\addtocontents{toc}{\vspace*{\baselineskip}}
\renewcommand{\appendixtocname}{Appendices}
\renewcommand{\appendixpagename}{Appendices}
\begin{appendices}
\subsection{H2}
\subsubsection{H3}
\subsection{H2}
\subsubsection{H3}
\subsection{H2}
\subsubsection{H3}
\end{appendices}
\end{document}
(Ich bin auchausgenommen Abschnittsnummerierung im Inhaltsverzeichnis)
Antwort1
Wie in den Kommentaren erwähnt, ist angesichts der anderen Pakete, die vom Code des OP verwendet werden, die einfachste Lösung wahrscheinlich, die Verwendung vonetoc.
Für den Fall, dass einige Benutzer etoc
diese Frage haben, biete ich dennoch diese Antwort an, um zu erklären, wie etoc
das Problem gelöst werden kann: Verwenden Sie einfach den \etocifnumbered
Befehl.
\documentclass{article}
% appendix:
\usepackage[toc,page]{appendix}
\renewcommand*\thesubsection{\Alph{subsection}}
\usepackage{hyperref}
% exclude number from the link in ToC:
\usepackage{etoc}
\makeatletter
% store the original table of contents macros (they are not modified by hyperref, only \contentsline is)
\let\latchapter\l@chapter
\let\latsection\l@section
\let\latsubsection\l@subsection
\let\latsubsubsection\l@subsubsection
\etocsetstyle{chapter}{}{}
{\etocifnumbered
{\latchapter{\numberline{\etocthenumber}\etocname}{\etocpage}}
{\latchapter{\etocname}{\etocpage}}}{}
\etocsetstyle{section}{}{}
{\etocifnumbered
{\latsection{\numberline{\etocthenumber}\etocname}{\etocpage}}
{\latsection{\etocname}{\etocpage}}}{}
\etocsetstyle{subsection}{}{}
{\etocifnumbered
{\latsubsection{\numberline{\etocthenumber}\etocname}{\etocpage}}
{\latsubsection{\etocname}{\etocpage}}}{}
\etocsetstyle{subsubsection}{}{}
{\etocifnumbered
{\latsubsubsection{\numberline{\etocthenumber}\etocname}{\etocpage}}
{\latsubsubsection{\etocname}{\etocpage}}}{}
\makeatother
\renewcommand\thesection{\Roman{section}}
\renewcommand\thesubsection{\alph{subsection}}
\renewcommand\thesubsubsection{\arabic{subsubsection}}
\renewcommand\theparagraph{\Roman{section}.\alph{subsection}.\arabic{subsubsection}.\roman{paragraph}}
\begin{document}
\tableofcontents
\section{H1}
\subsection{H2}
\subsubsection{H3}
\section{H1}
\subsection{H2}
\subsubsection{H3}
\renewcommand{\appendixtocname}{Appendices}
\renewcommand{\appendixpagename}{Appendices}
\begin{appendices}
\subsection{H2}
\subsubsection{H3}
\subsection{H2}
\subsubsection{H3}
\subsection{H2}
\subsubsection{H3}
\end{appendices}
\end{document}