ToC의 링크에서 섹션 번호 제외: 번호가 매겨지지 않은 섹션 버그

ToC의 링크에서 섹션 번호 제외: 번호가 매겨지지 않은 섹션 버그

나는 etoc을 사용한다ToC의 링크에서 섹션 번호를 제외하려면. 그러나 번호가 지정되지 않은 appexdix 섹션을 삽입하면 etoc이 마침표를 추가합니다.

여기에 이미지 설명을 입력하세요

\etocthenumber나는 코드를 가지고 놀았고 정의 에 문제가 있다는 것을 발견했습니다 \etocsetstyle{section}(etoc이 없으면 점이 없습니다). 해결책이 있나요?

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}

(나는 또한 해요ToC에서 섹션 번호 매기기 제외)

답변1

의견에서 언급했듯이 OP 코드에서 사용되는 다른 패키지를 고려할 때 가장 간단한 해결 방법은 아마도 사용을 중단하는 것입니다.에톡.

일부 사용자가 이 질문을 발견한 경우에도 문제를 처리하는 etoc방법을 설명하기 위해 이 답변을 제공합니다 . 명령을 사용하면 됩니다.etoc\etocifnumbered

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

etoc이 포함된 목차

관련 정보