具体latex项目示例见github仓库ECNU-Thesis-Proposal,下面是一些踩坑的总结。
简单跨页长表格
使用mdframed
包适合实现下图可跨页的简单表格样式,且在单元格内依旧像正文一样,方便得调整样式和正常使用 figure
,enumerate
等功能,不需要额外的调整样式去匹配。这些是普通的表格 tabularx
和 跨页表格(longtable
、 xltabular
)很难方便做到的。
示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| \mdfdefinestyle{mymdfstyle}{
everyline=true,
linewidth=0.5pt,
innerleftmargin=4pt,
innerrightmargin=4pt,
innertopmargin=-15pt,
innerbottommargin=-10pt
}
\begin{mdframed}[
style=mymdfstyle,
]
% 第一个单元格的内容
% 使用 \mdfsubtitle 添加横行,区分单元格
\mdfsubtitle[
subtitleaboveline=true,
subtitleabovelinewidth=0.8pt, % 经验值,肉眼看跟上面 linewidth = 0.5pt 粗细差不多
subtitlebelowskip=0.2\baselineskip,
subtitleinneraboveskip=0pt,
subtitleinnerbelowskip=0pt,
]{}
% 第二个单元格的内容
\end{mdframed}
|
图片
tikz画图初探
强制图片位置
1
2
3
4
5
| \usepackage{float}
\begin{figure}[H]
...
\end{figure}
|
列表
简单列表
1
2
3
4
5
| \begin{enumerate}[label=\chinese*、]
\item 第一项
\item 第二项
\item 第三项
\end{enumerate}
|
多级列表
1
2
3
4
5
6
7
8
| - 开发组
- 数据层 --- 前期2位同学,后期1位同学
- 主要负责数据的采集、抽取以及入库等(需要了解neo4j)。
- 前端 --- 1位同学
- 主要负责功能界面的可视化(需要了解node.js)。
- 后端 --- 1位同学
- 主要负责业务逻辑。
- 研究组
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| \begin{enumerate}
\item 开发组
\begin{enumerate}
\item 数据层 --- 前期2位同学,后期1位同学
\begin{itemize}
\item 主要负责数据的采集、抽取以及入库等(需要了解neo4j)。
\end{itemize}
\item 前端 --- 1位同学
\begin{itemize}
\item 主要负责功能界面的可视化(需要了解node.js)。
\end{itemize}
\item 后端 --- 1位同学
\begin{itemize}
\item 主要负责业务逻辑。
\end{itemize}
\end{enumerate}
\item 研究组
\end{enumerate}
|
每一级不同样式的多级列表
1
2
3
4
5
| 第一章 第一级项目
1.1 第二级项目
1.1.1 第三级项目
1.1.2 第三级项目
第二章 第一级项目
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| \setlist[enumerate]{itemsep=0pt}
\setlist[enumerate,1]{label=第\chinese*章,itemindent=20pt}
\setlist[enumerate,2]{label=\arabic{enumi}.\arabic*,itemindent=-5pt}
\setlist[enumerate,3]{label=\arabic{enumi}.\arabic{enumii}.\arabic*}
\begin{enumerate}
\item 第一级项目
\begin{enumerate}
\item 第二级项目
\begin{enumerate}
\item 第三级项目
\item 第三级项目
\end{enumerate}
\item 第一级项目
\end{enumerate}
\end{enumerate}
% 恢复默认
\setlist[enumerate]{}
\setlist[enumerate,1]{}
\setlist[enumerate,2]{}
\setlist[enumerate,3]{}
|
工具
后记
官方开题报告使用了一个跨页长表格来填充内容,也是开坑的起点。一开始基于上海交大开题报告模板,修改制作latex模版时,用了错误的xltabular
包,导致写的时候失去了latex自动化的优势,反而耗费了很大的功夫去全手动的写东西。四分之一时间在写报告,剩下的时间全在调格式debug。急急忙忙交完了报告后,回过头看,发现了非常合适的mdframed
包,重构了报告的正文部分,因此有了本文和github仓库。
参考