%!TEX program = xelatex \documentclass{report} \usepackage{graphicx} \usepackage[dvipsnames]{xcolor} \usepackage{wrapfig} \usepackage{enumerate} \usepackage{amsmath,mathrsfs,amsfonts} \usepackage{booktabs} \usepackage{tabularx} \usepackage{colortbl} \usepackage{multirow,makecell} \usepackage{multicol} \usepackage{ulem} % \uline \usepackage{listings} \usepackage{tikz} \usepackage{tcolorbox} \usepackage{fontawesome} \usepackage[justification=centering]{caption} \usepackage{draftwatermark}% 所有页加水印 \usepackage{titletoc} \usepackage{ctex} \usepackage[subfigure]{tocloft} \usepackage{subfigure} \input{input/info.tex} \input{input/setting.tex} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% 正文开始 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \begin{document} \sloppy % 解决中英文混排文字超出边界问题 \input{input/cover.tex} \input{input/toc.tex} \input{input/abstract.tex} \newpage%开始新的一页,正文开始 \setcounter{page}{1}%页码编号,从1开始 \section{准备工作} 在正式开始使用模板之前,需要你安装LiveTex,并安装任何可用的编辑器。 不需要再做其他配置。字体统一放在仓库根目录的 \texttt{fonts/} 文件夹中(全库共用同一套),编译时会自动调用,无须额外安装,也不依赖你电脑上装了什么字体。 \section{字体} 在模板中,中文默认使用思源宋体,西文默认使用 Cochineal,标题统一使用鸿蒙字体。除此之外,还定义了一些其他的中文字体。 英文字体,正文默认使用的是 Cochineal(一款 Minion 风格的衬线体),代码等宽位使用的是 Latin Modern Mono。所以你现在看到的西文和阿拉伯数字都是衬线字体。这样安排是为了和中文的思源宋体保持相近的灰度——如果西文用无衬线,同一行里字母数字会明显比汉字细、像"陷进去",读起来割裂。这些设置,可以在 cls 中字体设定里面进行修改。 中文字体,使用的是鸿蒙字体、思源宋体、霞鹜文楷、朱雀仿宋、思源黑体等。全部为开源可商用字体,不使用任何方正、微软雅黑等商业字体。 中文的默认字体衬线字体是思源宋体,加粗字体是思源宋体的真粗体,就像这样:\textbf{这里是加粗字体}。斜体的字体是霞鹜文楷,就像这样:\textit{这里是中文斜体}。斜体粗体的字体是朱雀仿宋,就像这样:\textbf{\textit{这里是粗体斜体}}。中文的无衬线字体sans font使用的是鸿蒙字体,你应该可以在标题中看到它。中文等宽字体,使用的是思源黑体。 默认的无衬线字体是鸿蒙字体,你应该可以在各种标题中看到它的样子。注意标题里的中文和西文(包括编号 "1."、"3.1")现在统一都是鸿蒙——旧版因为编号是阿拉伯数字、被归到西文字体,会出现同一个标题里中文鸿蒙、编号衬线的情况,看着像"字体一会一个样",现已修正。 同样,上述的字体,在cls中,都可以进行设置。 另外,可以使用额外的命令,来临时改变某一段文字的字体设置。这些命令沿用了旧版的名字(fz开头,取自原先的方正系列),但实际用的都是随仓库分发的开源字体:fzss(宋体)、fzxbs(宋体粗,标题用)、fzkai(楷体)、fzfs(仿宋)、fzzdx(黑体)、hm(鸿蒙字体)。使用方法是使用斜线命令的方式,这样:{\fzss 宋体}、 {\fzxbs 宋体粗}、{\fzkai 楷体}、{\fzfs 仿宋}、{\fzzdx 黑体}、{\hm 鸿蒙字体}。注意这里的楷体是霞鹜文楷、仿宋是朱雀仿宋、黑体是思源黑体,都是可免费商用的开源字体。 \section{标题} 文档模板支持三级标题,并且自动编号。上面就是一级标题的样子。 \subsection{这里是二级标题} \subsubsection{这里是三级标题} \section{列表} 列表分为有序列表和无序列表。 \subsection{无序列表} 无序列表使用itemize。 \begin{itemize} \item \textbf{第一个有序列表}。可以在这里写列表的内容。 \item \textbf{第二条列表}。这里继续显示列表内容。 \end{itemize} 默认的前缀是实心的 黑色原点, 但是我们可以在 \textbackslash item[] 中进行自定义符号, 一般来说, 想要的符号都能够进行显示。 \begin{itemize} \item[-] 条目1 \item[+] 条目2 \item[x] 条目3 \item[/] 条目4 \item[*] 条目5 \item[a] 条目6 \item[$\circ$] 条目7 \item[$\bigotimes$] 条目8 \item ..... \end{itemize} \subsection{有序列表} 有序列表使用enumerate。 \begin{enumerate} \item 方括号中写的是列表的样式。可以是()、[]等。如果要改变编号样式,可使用begin\{enumerate\}[(1)]等。 \item 如果使用了特殊的样式导致没有了缩进,可以使用begin\{enumerate\}[itemindent=2em]设置缩进。 \end{enumerate} \section{图表信息} 可以插入表格,如表\ref{table1}所示\footnote{更复杂的表格,可以使用在线工具生成 https://www.tablesgenerator.com/}。 \noindent \begin{table}[h!] \caption{一个表格的实例}\label{table1} \begin{tabularx}{\textwidth}{>{\hsize=.6\hsize\raggedright\arraybackslash}X>{\raggedright\arraybackslash}X}\toprule \bfseries{食物} & \bfseries{菜谱}\\ \midrule 热狗 & 面包、香肠 \\ 包子 & 面粉、馅料 \\ \bottomrule \end{tabularx} \end{table} 可以插入图片,如图\ref{fig1}所示。 \begin{figure}[!h] \centering \includegraphics[width=12cm]{figs/1.jpg} \caption{这是一个示例图片} \label{fig1} \end{figure} 在其他的地方,通过输入图片的label来引用图片,就像这样:如图\ref{fig1}所示。 \section{代码} 模板中支持插入代码片段。 就像下面这些例子一样: \begin{lstlisting}[language=TypeScript,caption={src/app/app.module.ts}] import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; @NgModule({ imports: [ BrowserModule ], providers: [ Logger ], declarations: [ AppComponent ], exports: [ AppComponent ], bootstrap: [ AppComponent ] }) export class AppModule { } \end{lstlisting} \begin{lstlisting}[language=Java,caption={src/app/app.module.ts}] import org.sun.com; public class helloworld{ public static void main() { System.out.println("hello world!"); } } \end{lstlisting} \begin{lstlisting}[style=bashstyle] cd my-app ng serve --open \end{lstlisting} \begin{lstlisting}[style=bashoutputstyle] blablabla \end{lstlisting} 还可以展示linux shell命令: \begin{invertedshellbox} npm install -g @angular/cli \end{invertedshellbox} 也可以使用shell box。 \begin{shellbox} cd my-app ng serve --open \end{shellbox} 还可以展示shell执行结果: \begin{lstlisting}[style=bashoutputstyle] src app app.component.css app.component.html app.component.spec.ts app.component.ts app.module.ts assets .gitkeep environments environment.prod.ts environment.ts browserslist favicon.ico index.html ... \end{lstlisting} \section{文本框} 模板支持三中文本框,分别是titledbox、notebox和importantbox。 \begin{titledbox}{HTTP/Console 内核} HTTP 内核继承自 \verb|Illuminate\Foundation\Http\Kernel| 类,该类定义了一个 \verb|bootstrappers| 数组,这个数组中的类在请求被执行前运行,这些 \verb|bootstrappers| 配置了错误处理、日志、检测应用环境以及其它在请求被处理前需要执行的任务。 \end{titledbox} \begin{notebox} HTTP 内核继承自 \verb|Illuminate\Foundation\Http\Kernel| 类,该类定义了一个 \verb|bootstrappers| 数组,这个数组中的类在请求被执行前运行,这些 \verb|bootstrappers| 配置了错误处理、日志、检测应用环境以及其它在请求被处理前需要执行的任务。 \end{notebox} \begin{importantbox} HTTP 内核继承自 \verb|Illuminate\Foundation\Http\Kernel| 类,该类定义了一个 \verb|bootstrappers| 数组,这个数组中的类在请求被执行前运行,这些 \verb|bootstrappers| 配置了错误处理、日志、检测应用环境以及其它在请求被处理前需要执行的任务。 \end{importantbox} \section{图标} 模板还支持使用图标,图标主要来自于fontawesome。其使用说明,可以参考文件夹中的fontawesome.pdf。 \faHeart \end{document}