当前设置下如何使得目录的引导线右侧和页码直接无间距,或者添加一个较小的可设置的间距,而右侧的页码宽度是根据页码位数自适应而非固定。
以及当前状态下的{\textcircled{\arabic{paragraph}}}
设置的圆形数字标题标号“①”显示的看起来有些不正常,比如数字“1”和“〇”上侧几乎重合了,怎么使得这个标号变的正常一些呢。望大佬解答!!
附代码:
\documentclass[a4paper,12pt,openany]{book}
\usepackage{ctex} % 中文支持
\usepackage{fontspec} % 字体配置
\usepackage[showframe]{geometry} % 页面几何设置
\usepackage{tocloft} % 目录自定义
\usepackage{titlesec} % 章节标题自定义
\usepackage{tikz} % 绘图功能,用于圆形编号
\geometry{
a4paper,
top=2.5cm, % 上边距
bottom=2.5cm, % 下边距
left=2.5cm, % 左边距
right=2.5cm, % 右边距
headheight=1.5cm, % 页眉高度
headsep=16.75pt, % 页眉与正文间距
footskip=0.75cm % 页脚与正文间距
}
\setcounter{secnumdepth}{5}
\setcounter{tocdepth}{5}
% 章节计数器格式设置
\renewcommand{\thechapter}{\chinese{chapter}} % 一
\renewcommand{\thesection}{\chinese{section}} % 一
\renewcommand{\thesubsection}{\arabic{subsection}} % 1
\renewcommand{\thesubsubsection}{\arabic{subsubsection}} % 1
\renewcommand{\theparagraph}{\textcircled{\arabic{paragraph}}} % ①
%目录缩进设置
\setlength{\cftchapindent}{0pt} % 章不缩进
\setlength{\cftsecindent}{2em} % 节缩进2em
\setlength{\cftsubsecindent}{4.1em} % 条缩进3em
\setlength{\cftsubsubsecindent}{4em} % 项缩进4em
\setlength{\cftparaindent}{6em} % paragraph缩进5em
% 目录编号前后符号设置
% 章:一、 标题
\renewcommand{\cftchapaftersnum}{、} % 顿号+空格
\setlength{\cftchapnumwidth}{2em} % 一级标题(章)的编号宽度
% 节:(一) 标题
\renewcommand{\cftsecpresnum}{(} % 编号前加左括号
\renewcommand{\cftsecaftersnum}{)} % 右括号+空格
\setlength{\cftsecnumwidth}{2.56em} % 二级标题(节)的编号宽度
% 条:1. 标题
\renewcommand{\cftsubsecaftersnum}{.} % 使用可见字符标记间距位置
\setlength{\cftsubsecnumwidth}{1.467em} % 减小编号宽度
% 项:(1) 标题
\renewcommand{\cftsubsubsecpresnum}{(} % 编号前加左括号
\renewcommand{\cftsubsubsecaftersnum}{)} % 右括号+空格
\setlength{\cftsubsubsecnumwidth}{2em} % 四级标题(项)的编号宽度
% 项:① 标题
\renewcommand{\cftparapresnum}{} % 编号前无符号
\renewcommand{\cftparaaftersnum}{} % 编号后加空格
\setlength{\cftparanumwidth}{1em} % 编号宽度
%=====================================================
% 正文标题样式设置
% 章:第X章、标题 定义chapter格式 禁用默认换页行为
\titleclass{\chapter}{straight}
% 自定义标题格式(保留您的原有设置)
\titleformat{\chapter}[block]
{\normalfont\zihao{2}\heiti\raggedright}
{\hspace{2em}\thechapter、}
{0em}
{}
% 精确控制间距(标题前=1行距,标题后=0)
\titlespacing*{\chapter}{0pt}{\baselineskip}{0pt}
% 节:(X)标题
\titleformat{\section}
{\raggedright\heiti\zihao{3}} % 格式
{\hspace{31.5pt}(\thesection)} % 标签
{0em}{} % 间距和标题
\titlespacing{\section}
{0pt}{0pt}{0pt} % 左间距、上间距、下间距
% 条:X.标题
\titleformat{\subsection}
{\raggedright\heiti\zihao{4}} % 格式
{\hspace{31.5pt}\thesubsection.} % 标签(全角点)
{0em}{} % 间距和标题
\titlespacing{\subsection}
{0pt}{0pt}{0pt} % 左间距、上间距、下间距
% 项:(X)标题
\titleformat{\subsubsection}
{\raggedright\heiti\zihao{-4}} % 格式
{\hspace{31.5pt}(\thesubsubsection)} % 标签
{0em}{} % 间距和标题
\titlespacing{\subsubsection}
{0pt}{0pt}{0pt} % 左间距、上间距、下间距
%段:① 标题
\titleformat{\paragraph}
{\raggedright\heiti\zihao{-4}} % 格式
{\hspace{31.5pt}\theparagraph} % 标签
{0pt}{} % 间距和标题
\titlespacing{\paragraph}
{0pt}{0pt}{0pt} % 左间距、上间距、下间距
%=====================================================
% 目录格式设置
%=====================================================
% 目录标题格式
\renewcommand{\contentsname}{\heiti\zihao{3}\centerline{目\quad 录}}
% 引导线设置
\renewcommand{\cftdot}{.} % 引导点符号
\renewcommand{\cftdotsep}{0.5} % 引导点密度(值越小越密集)
\renewcommand{\cftchapdotsep}{\cftdotsep} % 章引导点密度继承全局设置
% 各层级引导线样式
\renewcommand{\cftchapleader}{\cftdotfill{\cftchapdotsep}} % 章
\renewcommand{\cftsecleader}{\cftdotfill{\cftdotsep}} % 节
\renewcommand{\cftsubsecleader}{\cftdotfill{\cftdotsep}} % 条
\renewcommand{\cftsubsubsecleader}{\cftdotfill{\cftdotsep}} % 项
% 使用 tocloft 的内部命令设置页码前的间距为零
\makeatletter
\renewcommand{\@pnumwidth}{1em} % 页码宽度
\renewcommand{\@tocrmarg}{1em} % 设置为与页码宽度相同,消除间距
\makeatother
% 目录间距控制
\setlength{\cftbeforetoctitleskip}{0pt} % 目录标题与页面顶部间距
\setlength{\cftaftertoctitleskip}{0pt} % 目录标题与内容间距
\setlength{\cftbeforechapskip}{0pt} % 章标题间间距
\setlength{\cftbeforesecskip}{0pt} % 节标题间间距
\setlength{\cftbeforesubsecskip}{0pt} % 条标题间间距
\setlength{\cftbeforesubsubsecskip}{0pt} % 项标题间间距
% 目录文字样式
\renewcommand{\cftchapfont}{\songti\fontsize{12pt}{14pt}\selectfont} % 章标题字体
\renewcommand{\cftchappagefont}{\songti\zihao{-4}} % 章页码字体
\renewcommand{\cftsecfont}{\songti\zihao{-4}} % 节标题字体
\renewcommand{\cftsecpagefont}{\songti\zihao{-4}} % 节页码字体
\renewcommand{\cftsubsecfont}{\songti\zihao{-4}} % 条标题字体
\renewcommand{\cftsubsecpagefont}{\songti\zihao{-4}}% 条页码字体
\renewcommand{\cftsubsubsecfont}{\songti\zihao{-4}} % 项标题字体
\renewcommand{\cftsubsubsecpagefont}{\songti\zihao{-4}}% 项页码字体
\begin{document}
\tableofcontents
\newpage
\chapter*※※※※※※※※{※※※※※※※※1}
\addcontentsline{toc}{chapter}{※※※※※※※※1} % 手动添加到目录
\chapter{※※※※※※※※}
撒打算打算
\section{※※※※※※※※}
打算
\subsection{※※※※※※※※}
三点睡得
\subsubsection{※※※※※※※※}
大叔大撒
\paragraph{※※※※※※※※}
撒大声地
\paragraph{※※※※※※※※}
\chapter{※※※※※※※※}
dasdasdadasdada
\end{document}
请注意,这里必须换行,否则代码块无法被正确高亮,我已经帮你改过来了...
关于第一个问题,疑似duplicated as this: https://ask.latexstudio.net/ask/question/8102.html
关于第二个问题,推荐阅读:
https://blog.ljguo.top/2024/06/textcircled-numbers 『需要魔法』
https://mp.weixin.qq.com/s/Zk6GvAYIHVKc-b5HXavAVg 『不需要魔法』
大致修改了两处:
circledtext
宏包\renewcommand{\theparagraph}{\circledtext{\arabic{paragraph}}} % ①
%%%%%%%%%%% https://ask.latexstudio.net/ask/question/8102.html
\makeatletter%%
\renewcommand{\cftchapfillnum}[1]{%
{\cftchapleader}\nobreak
\makebox{\cftchappagefont #1}\cftchapafterpnum\par
}
\renewcommand{\cftsecfillnum}[1]{%
{\cftsecleader}\nobreak
\makebox{\cftsecpagefont #1}\cftsecafterpnum\par
}
\renewcommand{\cftsubsecfillnum}[1]{%
{\cftsubsecleader}\nobreak
\makebox{\cftsubsecpagefont #1}\cftsubsecafterpnum\par
}
\renewcommand{\cftsubsubsecfillnum}[1]{%
{\cftsubsubsecleader}\nobreak
\makebox{\cftsubsubsecpagefont #1}\cftsubsubsecafterpnum\par
}
\renewcommand{\cftparafillnum}[1]{%
{\cftparaleader}\nobreak
\makebox{\cftparapagefont #1}\cftparaafterpnum\par
}
\makeatother
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
下面是完整代码...看上去是一部旷世巨作的模板啊,就是感觉有点ai味...
\documentclass[a4paper,12pt,openany]{book}
\usepackage{ctex} % 中文支持
% \usepackage{fontspec} % 字体配置 没必要...
\usepackage[showframe]{geometry} % 页面几何设置
\usepackage{tocloft} % 目录自定义
\usepackage{titlesec} % 章节标题自定义
\usepackage{tikz} % 绘图功能,用于圆形编号
\usepackage{circledtext}%%%%modify
\geometry{
a4paper,
top=2.5cm, % 上边距
bottom=2.5cm, % 下边距
left=2.5cm, % 左边距
right=2.5cm, % 右边距
headheight=1.5cm, % 页眉高度
headsep=16.75pt, % 页眉与正文间距
footskip=0.75cm % 页脚与正文间距
}
\setcounter{secnumdepth}{5}
\setcounter{tocdepth}{5}
% 章节计数器格式设置
\renewcommand{\thechapter}{\chinese{chapter}} % 一
\renewcommand{\thesection}{\chinese{section}} % 一
\renewcommand{\thesubsection}{\arabic{subsection}} % 1
\renewcommand{\thesubsubsection}{\arabic{subsubsection}} % 1
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%modify \circledtext
\renewcommand{\theparagraph}{\circledtext{\arabic{paragraph}}} % ①
%目录缩进设置
\setlength{\cftchapindent}{0pt} % 章不缩进
\setlength{\cftsecindent}{2em} % 节缩进2em
\setlength{\cftsubsecindent}{4.1em} % 条缩进3em
\setlength{\cftsubsubsecindent}{4em} % 项缩进4em
\setlength{\cftparaindent}{6em} % paragraph缩进5em
% 目录编号前后符号设置
% 章:一、 标题
\renewcommand{\cftchapaftersnum}{、} % 顿号+空格
\setlength{\cftchapnumwidth}{2em} % 一级标题(章)的编号宽度
% 节:(一) 标题
\renewcommand{\cftsecpresnum}{(} % 编号前加左括号
\renewcommand{\cftsecaftersnum}{)} % 右括号+空格
\setlength{\cftsecnumwidth}{2.56em} % 二级标题(节)的编号宽度
% 条:1. 标题
\renewcommand{\cftsubsecaftersnum}{.} % 使用可见字符标记间距位置
\setlength{\cftsubsecnumwidth}{1.467em} % 减小编号宽度
% 项:(1) 标题
\renewcommand{\cftsubsubsecpresnum}{(} % 编号前加左括号
\renewcommand{\cftsubsubsecaftersnum}{)} % 右括号+空格
\setlength{\cftsubsubsecnumwidth}{2em} % 四级标题(项)的编号宽度
% 项:① 标题
\renewcommand{\cftparapresnum}{} % 编号前无符号
\renewcommand{\cftparaaftersnum}{} % 编号后加空格
\setlength{\cftparanumwidth}{1em} % 编号宽度
%=====================================================
% 正文标题样式设置
%=====================================================
% 章:第X章、标题 定义chapter格式 禁用默认换页行为
\titleclass{\chapter}{straight}
% 自定义标题格式(保留您的原有设置)
\titleformat{\chapter}[block]
{\normalfont\zihao{2}\heiti\raggedright}
{\hspace{2em}\thechapter、}
{0em}
{}
% 精确控制间距(标题前=1行距,标题后=0)
\titlespacing*{\chapter}{0pt}{\baselineskip}{0pt}
% 节:(X)标题
\titleformat{\section}
{\raggedright\heiti\zihao{3}} % 格式
{\hspace{31.5pt}(\thesection)} % 标签
{0em}{} % 间距和标题
\titlespacing{\section}
{0pt}{0pt}{0pt} % 左间距、上间距、下间距
% 条:X.标题
\titleformat{\subsection}
{\raggedright\heiti\zihao{4}} % 格式
{\hspace{31.5pt}\thesubsection.} % 标签(全角点)
{0em}{} % 间距和标题
\titlespacing{\subsection}
{0pt}{0pt}{0pt} % 左间距、上间距、下间距
% 项:(X)标题
\titleformat{\subsubsection}
{\raggedright\heiti\zihao{-4}} % 格式
{\hspace{31.5pt}(\thesubsubsection)} % 标签
{0em}{} % 间距和标题
\titlespacing{\subsubsection}
{0pt}{0pt}{0pt} % 左间距、上间距、下间距
%段:① 标题
\titleformat{\paragraph}
{\raggedright\heiti\zihao{-4}} % 格式
{\hspace{31.5pt}\theparagraph} % 标签
{0pt}{} % 间距和标题
\titlespacing{\paragraph}
{0pt}{0pt}{0pt} % 左间距、上间距、下间距
%=====================================================
% 目录格式设置
%=====================================================
% 目录标题格式
\renewcommand{\contentsname}{\heiti\zihao{3}\centerline{目\quad 录}}
% 引导线设置
\renewcommand{\cftdot}{.} % 引导点符号
\renewcommand{\cftdotsep}{0.5} % 引导点密度(值越小越密集)
\renewcommand{\cftchapdotsep}{\cftdotsep} % 章引导点密度继承全局设置
% 各层级引导线样式
\renewcommand{\cftchapleader}{\cftdotfill{\cftchapdotsep}} % 章
\renewcommand{\cftsecleader}{\cftdotfill{\cftdotsep}} % 节
\renewcommand{\cftsubsecleader}{\cftdotfill{\cftdotsep}} % 条
\renewcommand{\cftsubsubsecleader}{\cftdotfill{\cftdotsep}} % 项
% 使用 tocloft 的内部命令设置页码前的间距为零
\makeatletter
\renewcommand{\@pnumwidth}{1em} % 页码宽度
\renewcommand{\@tocrmarg}{1em} % 设置为与页码宽度相同,消除间距
\makeatother
% 目录间距控制
\setlength{\cftbeforetoctitleskip}{0pt} % 目录标题与页面顶部间距
\setlength{\cftaftertoctitleskip}{0pt} % 目录标题与内容间距
\setlength{\cftbeforechapskip}{0pt} % 章标题间间距
\setlength{\cftbeforesecskip}{0pt} % 节标题间间距
\setlength{\cftbeforesubsecskip}{0pt} % 条标题间间距
\setlength{\cftbeforesubsubsecskip}{0pt} % 项标题间间距
% 目录文字样式
\renewcommand{\cftchapfont}{\songti\fontsize{12pt}{14pt}\selectfont} % 章标题字体
\renewcommand{\cftchappagefont}{\songti\zihao{-4}} % 章页码字体
\renewcommand{\cftsecfont}{\songti\zihao{-4}} % 节标题字体
\renewcommand{\cftsecpagefont}{\songti\zihao{-4}} % 节页码字体
\renewcommand{\cftsubsecfont}{\songti\zihao{-4}} % 条标题字体
\renewcommand{\cftsubsecpagefont}{\songti\zihao{-4}}% 条页码字体
\renewcommand{\cftsubsubsecfont}{\songti\zihao{-4}} % 项标题字体
\renewcommand{\cftsubsubsecpagefont}{\songti\zihao{-4}}% 项页码字体
%%%%%%%%%%% https://ask.latexstudio.net/ask/question/8102.html
\makeatletter%%
\renewcommand{\cftchapfillnum}[1]{%
{\cftchapleader}\nobreak
\makebox{\cftchappagefont #1}\cftchapafterpnum\par
}
\renewcommand{\cftsecfillnum}[1]{%
{\cftsecleader}\nobreak
\makebox{\cftsecpagefont #1}\cftsecafterpnum\par
}
\renewcommand{\cftsubsecfillnum}[1]{%
{\cftsubsecleader}\nobreak
\makebox{\cftsubsecpagefont #1}\cftsubsecafterpnum\par
}
\renewcommand{\cftsubsubsecfillnum}[1]{%
{\cftsubsubsecleader}\nobreak
\makebox{\cftsubsubsecpagefont #1}\cftsubsubsecafterpnum\par
}
\renewcommand{\cftparafillnum}[1]{%
{\cftparaleader}\nobreak
\makebox{\cftparapagefont #1}\cftparaafterpnum\par
}
\makeatother
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{zhlipsum}
\begin{document}
\tableofcontents
\newpage
\chapter*※※※※※※※※{※※※※※※※※1}
\addcontentsline{toc}{chapter}{※※※※※※※※1} % 手动添加到目录
\chapter{※※※※※※※※}
\section{※※※※※※※※}
\zhlipsum[1-50]
\subsection{※※※※※※※※}
\zhlipsum[1-50]
\subsubsection{※※※※※※※※}
\zhlipsum[1-50]
\zhlipsum[1-50]
\paragraph{※※※※※※※※}
\zhlipsum[1-50]
\zhlipsum[1-50]
\paragraph{※※※※※※※※}
\zhlipsum[1-50]
\chapter{※※※※※※※※}
\end{document}
真快啊你,感谢提醒!!
另外我有点好奇,
※
这个符号应该怎么不用unicode字符打出来呢?或者,这个符号叫什么呢🧐?@u70550 为了调目录的不同级别的缩进 在学校论文目录模板上直接复制的...之前用“国”这种四四方方的字来对比上下行的缩进,然后发现了这个就换了..