你的代码这么长(足足有116行),你觉得他是最小工作示例吗?
- 如果你注释你的代码块的内容,问题仍然存在,这说明代码块内容可以简化为
Hello, World!
,缩短20行 - 这说明与
lisitngs
宏包无关,同时再把你有关\lstset
设置全删了,缩短50行 - 删到最终你会发现,连下面的例子都报错:
\documentclass{ctexbook}
\usepackage{geometry}
\ctexset{
chapter = {
name = {\S}, % 将"第X章"改为"§ X"
number = \arabic{chapter}, % 阿拉伯数字编号
format = \songti\large\bfseries\centering, % 标题格式
beforeskip = 2.5ex, % 标题前间距
afterskip = 2.5ex, % 标题后间距
}
}
\begin{document}
\chapter{哈哈哈}
\section{初步}
Hello, World!
\end{document}
为什么要不负责任地把大段的代码贴上来增加别人的阅读量?
答案你也知道了... 第一个问题是\ctexset
内不能有空行...
LaTeX
不是python,不能想空行就空行,每一个空格,每一个~
甚至注释符号%
都有其作用,必须每一步都谨小慎微。
希望下次不要再看到100+行的最大工作示例。
删去空行之后,第二个问题是:
\chapter{哈哈哈}
Not allowed in LR mode.
从原来的代码再次删,不难发现,这段代码一加就报错:
\renewcommand{\contentsname}{%
\begin{center}
\normalfont\songti\bfseries 文章目录
\end{center}
}
这又是为什么呢?原因就是Not allowed in LR mode.
....
附第二份MWE:
\documentclass{ctexbook}
\usepackage{zhlipsum}
\usepackage{titletoc}
\usepackage{titlesec}
\usepackage{geometry}
\usepackage{fontspec}
\geometry{a4paper,centering,scale=0.9}
\renewcommand{\contentsname}{%
\begin{center}
\normalfont\songti\bfseries 文章目录
\end{center}
}
\begin{document}
\tableofcontents
\chapter{哈哈哈}
\section{初步}
\end{document}
理论上提取MWE的操作不需要任何LaTeX
技能,甚至来个小学生不断二分编译都能提取出来....只是因为大家的代码太长....都懒....
这些都是哪里学的....请使用@u79794 老师提供的方法....
你显然应该每加一个设置就编译,如果报错找问题,没报错再进行下一个配置。你一开始面临的代码存在多处问题,这些问题互相影响,让你的代码很难debug....
问 \ctexset设置空行以及\contentsname定义后Not Allow in LR mode的错误