使用 etoc
宏包,虚线见 https://ask.latexstudio.net/ask/question/7397.html 。
\documentclass{ctexrep}
\usepackage{enumitem}
\usepackage{etoc}
%\usepackage[colorlinks]{hyperref}
\setmainfont{TeX Gyre TermesX}
\usepackage{dashrule}
\begin{document}
\ExplSyntaxOn
% https://ask.latexstudio.net/ask/question/7397.html
\NewDocumentCommand \approxhdashrule { O{0pt} m m m }
{
\hbox_to_wd:nn {#2}
{
\int_set:Nn \l_tmpa_int
{
2 * \int_div_round:nn { \int_value:w \tex_dimexpr:D #2 }
{ 2 * \int_value:w \tex_dimexpr:D #4 } + 1
}
\dim_set:Nn \l_tmpa_dim { \dim_eval:n {#2} / \l_tmpa_int }
\hdashrule [#1] {#2} {#3} { \l_tmpa_dim }
\hbox_overlap_left:n { \rule [#1] { \l_tmpa_dim } {#3} }
}
}
\ExplSyntaxOff
\ctexset{section/tocline={\protect\numberline{第\chinese{section}节}#2}}
\makeatletter
\newlist{thetoclist}{itemize}{5}
% chapter
\setlist[thetoclist,1]{nosep,label=\etocnumber,
left=0cm..5\ccwd,labelsep=1\ccwd}
% section
\setlist[thetoclist,2]{nosep,label=\etocnumber,
left=5\ccwd..4\ccwd,labelsep=1\ccwd}
\newcommand{\thetoc@dashed}{\noindent
\approxhdashrule[.6ex]{\linewidth}{.6pt}{4pt}\par}
\let\thetocdashed\relax
\providecommand{\three@digits}[1]{\ifnum#1<10 0\fi
\ifnum#1<100 0\fi \number#1 }
\etocsetstyle{chapter}
{\begin{thetoclist}}
{\etociffirst{}{\thetoc@dashed}%
\rmfamily\bfseries\item}
{\etocname\hfill \slshape\three@digits\etocthepage}
{\end{thetoclist}}
\etocsetstyle{section}
{\begin{thetoclist}}
{\normalfont\item}
{\etocname\hfill \slshape\three@digits\etocthepage}
{\end{thetoclist}}
\localtableofcontents
\makeatother
\cleardoublepage
\pagenumbering{arabic}
\chapter{双相障碍及精准医学}
\section{双相障碍概念}
\section{精准医学概念}
\chapter{双相障碍的临床表现}
\section{临床表现及分型}
\section{抑郁发作}
\setcounter{chapter}{10}
\chapter{双相障碍的病因机制假说}
\section{遗传与环境交互作用假说}
\end{document}
条目格式搞定了,如下:
\documentclass{ctexrep}
\usepackage{tocloft}
\usepackage{fmtcount}
\renewcommand{\cftdot}{}
\renewcommand{\thesection}{第\chinese{section}节}
\setlength{\cftchapnumwidth}{4em}
\setlength{\cftsecindent}{\cftchapnumwidth}
\renewcommand{\cftsecnumwidth}{4em}
\renewcommand{\cftchappagefont}{\itshape}
\renewcommand{\cftsecpagefont}{\itshape}
\makeatletter
\renewcommand{\cftchapfillnum}[1]{%
{\cftchapleader}\nobreak
\makebox[\@pnumwidth][\cftpnumalign]{\cftchappagefont \padzeroes[3]{\decimalnum{#1}}}\cftchapafterpnum\par
}
\renewcommand{\cftsecfillnum}[1]{%
{\cftsecleader}\nobreak
\makebox[\@pnumwidth][\cftpnumalign]{\cftsecpagefont \padzeroes[3]{\decimalnum{#1}}}\cftsecafterpnum\par
}
\makeatother
\usepackage{zhlipsum}
\begin{document}
\tableofcontents
\chapter{双相及精准医学障碍}
\section{双相障碍概念}
\zhlipsum[1-2]
\section{精准医学概念}
\zhlipsum[3-4]
\chapter{双相障碍的临床表现}
\section{临床表现及分型}
\zhlipsum[5-6]
\section{抑郁发作}
\zhlipsum[7-8]
\section{躁狂/轻躁狂发作}
\zhlipsum[9]
\end{document}
但是那个分割线我没有思路,看看别人有没有办法吧。
不知道为何无法正确显示,请问下什么原因呢?
单独编译没问题,但是放在自己文件中就出错了,很奇怪
用了什么宏包、文档类列出来,不支持
titlesec
、titletoc
等宏包。log 发出来。应该只与修改标题和目录的宏包冲突。
@u45041
{{log.txt(uploading...)}}
不好意思,log不能直接发,我给链接log
用的包有这些
@u45041 应该是你用
titlesec
修改了标题。要么把它们删了,直接用
ctex
设置标题。要么用另一个回答里的代码。
titlesec
不能方便地改目录项。@u10307 专家您好!我找到问题了,是您没有做subsection,但是我又用到了,所以才会这样,我把subsection改成section就好了
非常感谢专家您的指导,多次得到您的帮助,实在是不胜感激,再次向您鞠躬道谢了!!!