titletoc:如何使目录中的编号格式与章节标题的编号格式相匹配?

titletoc:如何使目录中的编号格式与章节标题的编号格式相匹配?

在文档类中,我使用 编辑了章节和小节的编号格式(颜色为灰色和欧拉字体)titlesec。但是,我不知道如何将相同的样式应用于目录中的标签。

问题是我只希望修改标题上的编号格式,这意味着不能修改\thesection\thesubsection(除非有办法在本地执行此操作,我尝试在 中更改它们\titleformat,然后在最后一个[...]参数中将它们改回,但这没有用),但\thecontentslabeloftitletoc似乎使用它们的值。有了这个限制,如何将编号格式也应用于目录中的标签?

在此处输入图片描述

下面是一个 MWE。(是的,它很丑陋,因为这只是一个“最小”代码演示)

\documentclass{article}

\usepackage[explicit]{titlesec}
\usepackage{titletoc}
\usepackage{xcolor}
\usepackage{ulem}


\titleformat{\section}
    {\centering}
    {\textcolor{gray}{\usefont{U}{zeur}{b}{n}\arabic{section}}}{.75em}
    {#1}

\titleformat{\subsection}
    {\normalfont}
    {}{0pt}
    {\uline{\textcolor{gray}{\usefont{U}{zeur}{b}{n}\arabic{section}$.$\arabic{subsection}}\nobreakspace\textcolor{gray}{$|$}\nobreakspace #1}}


\titlecontents{section}
    [2em] % i.e., 0em (part) + 2em
    {\normalfont}
    {\contentslabel{1.75em}}
    {\hspace*{-1.75em}}
    {\titlerule*[1em]{\textcolor{gray!30}{.}}\contentspage}
\titlecontents{subsection}
    [4.5em] % i.e., 2em (section) + 2.5em
    {\normalfont}
    {\contentslabel{2.25em}}
    {\hspace*{-2.25em}}
    {\titlerule*[1em]{\textcolor{gray!30}{.}}\contentspage}


\begin{document}

\tableofcontents

\section{Test section}

\subsection{Test subsection}

Text in case of empty.

\end{document}

答案1

我不确定这是否是你想要的(“相同风格”有歧义)。

\documentclass{article}

\usepackage[explicit]{titlesec}
\usepackage{titletoc}
\usepackage{xcolor}
\usepackage{ulem}

\newcommand{\eul}[1]{{\usefont{U}{zeur}{b}{n}#1}}

\ExplSyntaxOn
\NewDocumentCommand{\eulernumber}{m}
 {
  \seq_set_split:Nnx \l_tmpa_seq { . } { #1 }
  \seq_set_map:NNn \l_tmpb_seq \l_tmpa_seq { \eul{##1} }
  \textcolor{gray}{\seq_use:Nn \l_tmpb_seq {.}}
 }
\cs_generate_variant:Nn \seq_set_split:Nnn { Nnx }
\ExplSyntaxOff

\titleformat{\section}
    {\filcenter}
    {\eulernumber{\thesection}}
    {.75em}
    {#1}

\titleformat{\subsection}
    {\normalfont}
    {}{0pt}
    {%
     \begin{tabular}[t]{@{}c|l@{}}
     \eulernumber{\thesubsection} & #1\\
     \hline
     \end{tabular}%
    }

\titlecontents{section}
    [2em] % i.e., 0em (part) + 2em
    {\normalfont}
    {\eulernumber{\thecontentslabel}\enspace}
    {}
    {\titlerule*[1em]{\textcolor{gray!30}{.}}\contentspage}
\titlecontents{subsection}
    [4.5em] % i.e., 2em (section) + 2.5em
    {\normalfont}
    {\eulernumber{\thecontentslabel}\enspace}
    {}
    {\titlerule*[1em]{\textcolor{gray!30}{.}}\contentspage}


\begin{document}

\tableofcontents

\section{Test section}

\subsection{Test subsection}

Text in case of empty.

\end{document}

在此处输入图片描述

答案2

我认为这符合你的要求。

% tocfontprob.tex  SE 636705

\documentclass{article}
\usepackage{xcolor}

\usepackage{tocloft}

% change the color and font of ToC section numbers
\renewcommand{\cftsecpresnum}{\bgroup \color{gray}{} \usefont{U}{zeur}{b}{n}}
\renewcommand{\cftsecaftersnum}{\egroup}


\begin{document}

\tableofcontents

\section {First section}
\subsection{A subsection}
\section{Second section}
\subsection{Another subsection}

\end{document}

更改颜色和字体以适合您。阅读tocloft手册了解更多信息。顺便说一句,我不确定tocloft您使用这些title...包的效果如何。

相关内容