在给你保留原汁原味的情况下,给你通过编译了,下次提供 MWE 不要搞这么长
\documentclass[fontset = fandol]{ctexbook}
\usepackage{zhlipsum}
\usepackage{titletoc}
\usepackage{titlesec}
\usepackage{geometry}
\usepackage{xcolor}
\usepackage{pagecolor}
\usepackage{layout}
\usepackage{chemfig,subcaption,graphicx,float}
\usepackage{listings}
\definecolor{background}{RGB}{215, 247, 250}
\definecolor{藏花红}{RGB}{236,45,122}
\definecolor{石绿}{RGB}{87,195,194}
\geometry{a4paper,centering,scale=0.9}
%自定义“目录名称”
\renewcommand{\contentsname}{\hfill\songti\bfseries\LARGE 文章目录 \hfill
}
\newfontfamily\codefont{Times New Roman}
\setcounter{chapter}{-1} % 初始化为-1,使第一个章节显示
\ctexset{
chapter = {
name = {\S}, % 将"第X章"改为"§ X"
number = \arabic{chapter}, % 阿拉伯数字编号
format = \songti\large\bfseries\centering, % 标题格式
beforeskip = 2.5ex, % 标题前间距
afterskip = 2.5ex, % 标题后间距
}
}
% 针对章(chapter)的目录格式
\titlecontents{chapter}[0pt] % 作用对象:章
{\songti\bfseries} % 全局格式:间距+右对齐+粗体
{\thecontentslabel} % 带编号格式
{} % 无编号格式(空)
{\titlerule*[8pt]{.}\contentspage} % 页码引导符+页码
\titleformat{\section}[frame]
{\color{藏花红}}
{\centering
\footnotesize
\enspace 节 \thesection\enspace}
{8pt}
{\bfseries\filcenter\songti}
[\vspace{-10pt}]
% 代码排版配置
% 自定义VBA语法高亮
\lstdefinelanguage{VBA}{
morekeywords={Sub, End, Dim, As, Set, Range, Worksheet, MsgBox,
If, Then, Else, For, Next, Do, While, Loop, Integer, String},
sensitive=true,
morecomment=[l]{'}, % 单行注释
morestring=[b]{"}, % 字符串定义
keywordstyle=\codefont\color{blue},
stringstyle=\codefont\color{red},
basicstyle=\codefont\small,
keepspaces=true,
numbers=left,
% 边距控制
xleftmargin=2em, % 左边界距
xrightmargin=2em, % 右边界距
framexleftmargin=1em, % 框线左间距
framexrightmargin=1em, % 框线右间距
columns=fullflexible
}
\lstset{
language=VBA,
backgroundcolor=\color{gray!10},
escapeinside=``, % 中文注释处理
}
\begin{document}
\title{XVBA教程}
\author{吕旋延}
\date{\today}
\maketitle
\tableofcontents
\chapter{哈哈哈}
\section{初步}
\begin{lstlisting}[caption={生成斐波那契数列},label={code:fib}]
'`斐波那契数列生成函数`
Sub GenerateFibonacci()
Dim n As Integer
Dim i As Integer
Dim fib() As Long
n = InputBox("请输入数列项数:", "输入", 10)
ReDim fib(n)
fib(0) = 0
fib(1) = 1
For i = 2 To n - 1
fib(i) = fib(i - 1) + fib(i - 2)
Next i
'`输出结果`
MsgBox "前" & n & "项斐波那契数列:" & vbCrLf & Join(fib, ", ")
End Sub
\end{lstlisting}
\end{document}
问 \ctexset设置空行以及\contentsname定义后Not Allow in LR mode的错误