Excluir números de sección de enlaces en ToC: error de secciones no numeradas

Excluir números de sección de enlaces en ToC: error de secciones no numeradas

yo uso etocpara excluir números de sección de enlaces en ToC. Sin embargo, cuando inserto una sección de apéndice no numerada, etoc agrega un punto:

ingrese la descripción de la imagen aquí

Jugué con el código y descubrí que el problema está \etocthenumberen \etocsetstyle{section}la definición (sin etoc, el punto no está allí). ¿Hay alguna solución?

Aquí un 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}

(También estoyexcluyendo la numeración de secciones en ToC)

Respuesta1

Como se menciona en los comentarios, en vista de los otros paquetes utilizados por el código del OP, el remedio más simple probablemente sea dejar de usaretoc.

En caso de que algunos usuarios etocencuentren esta pregunta, proporciono esta respuesta para explicar cuál podría ser la forma de etocmanejar el problema: simplemente use el \etocifnumberedcomando.

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

tabla de contenidos con etoc

información relacionada