xeCJK和ctexart介绍
中英文混排问题一直是latex的核心问题,现在比较好的方式是使用CTex宏包,ctexart是Ctex宏包中的文档类,使用xelatex编译时,ctexart文档类会调用xeCJK宏包,自动处理汉字与其他符号之间的距离,下面这段就是成功中英文混排的好例子
\documentclass[UTF8]{ctexart}
\begin{document}
你好,world!
\end{document}
在linux上一般是安装texlive的,没有ctex宏包,可以使用xeCJK宏包来处理中英文混排,发现现在的texlive都有ctex了,厉害了
\documentclass{article}
\usepackage{xeCJK} %调用 xeCJK 宏包
\setCJKmainfont{SimSun} %设置 CJK 主字体为 SimSun (宋体)
\begin{document}
你好,world!
\end{document}
这里的字体是系统里的,像ubuntu里就没有宋体等等。
可以通过
fc-list :lang=zh-cn
来查看有的中文字体,出来的格式如下所示:
<字体文件路径>: <字体标示名1>, <字体表示名2>:Style=<字体类型>
标题作者和日期
我们来加上作者标题和日期
\documentclass[UTF8]{ctexart}
% 导言区
\title{你好,world!}
\author{Liam}
\date{\today}
% 正文
\begin{document}
\maketitle
你好,world!
\end{document}
\maketitle 类似于执行语句,将导言区定义的一些内容按照预定的格式展现出来,可以使用titling宏包来修改
段落和目录
常用结构
\section{勾股定理在古代}
\subsection{勾股1.1}
\subsubsection{勾股1.1.1}
范例
\documentclass[UTF8]{ctexart}
% 导言区
\title{你好,world!}
\author{Liam}
\date{\today}
% 正文
\begin{document}
\maketitle
% \setcounter{tocdepth}{2} 设定目录深度
\tableofcontents
\section{勾股定理}
\subsection{勾股定理1.1}
\subsubsection{勾股定理1.1.1}
\end{document}
我们可以用 \tableofcontents 命令来生成目录。系统会自动设定目录
包含的章节层次,用户也可以显式指定目录层次深度。比如下面的命令指
定目录深度为 2,也就是只显示 subsection 及以上层次的目录。注意设定目
录深度命令要放在\tableofcontents命令的前面。
\setcounter{tocdepth}{2} %设定目录深度
如果我们不想让某些层次的标题出现在目录里,则可以加上星号。
\section*{...}
\subsection *{...}
\subsubsection *{...}
数学公式
amsmath宏包优化了数学公式,在导言区加上
\usepackage{amsmath}
使用 $ ... $ 可以插入行内公式,需要编号的行间公式
\begin{equation}
...
\end{equation}
不需要编号的行间公式
\begin{equation*}
...
\end{equation*}
不推荐使用$$ $$,会改变行文的默认间距,此外行内公式的标点,应该放在数学模式的限定符之外,而行间公式则应该放在数学模式限定符之内。
![](http://www.forkosh.com/mathtex.cgi? \Large x=\frac{-b\pm\sqrt{b^2-4ac}}{2a})
公式大小调整
有四个命令控制公式大小
\displaystyle D 行间公式的基本尺寸
\textstyle T 行内公式的基本尺寸大小
\scriptstyle S 一级角标的尺寸
\scriptscirptstyle SS 二级角标的尺寸大小
例
$\frac{1}{a + b}$ % 小公式
$\displaystyle\frac{1}{a + b}$ % 大公式
公式显示方式调整
行内公式有些符号的位置和行间公式不一样,不过我们可以通过\limits和\nolimits两个命令来调整
行内显示的行间公式:$\sum\limits_{i=1}^{n} \int\limits_{0}^{\infty}$\\
行间显示的行内公式:$$\sum\nolimits_{i=1}^{n} \int\nolimits_{0}^{\infty}$$
插入图片
首先在导言区
\usepackage{graphicx}
然后在正文
\begin{figure}
\centering
\includegraphics[width=.6\textwidth]{fig5.jpg}
\caption{发生事故时车流饱和状态图示}
\label{fig:myphoto} %后文可以引用
\end{figure}
这里我缩放为0.6倍以避免图片过大。
图标标题格式宏包caption
\usepackage[format=hang,font=small,textfont=it]{caption}
页面尺寸
纸张的长度设置为 20cm、宽度设置为 15cm、左边距 1cm、右边距 2cm、上边距 3cm、下边距 4cm
\usepackage{geometry}
\geometry{papersize={20cm,15cm}}
\geometry{left=1cm,right=2cm,top=3cm,bottom=4cm}
设计页面尺寸 a6大小,居中,长宽占页面的0.8
\usepackage{geometry}
\geometry{a6paper,centering,scale=0.8}
页眉页脚设置
latex共有四种风格,默认是empty
- empyt没有页眉页脚
- plain没有页面,页脚是页码居中
- headings 没有页脚,页眉是章节名称和页码
- myheadings 没有页脚,页眉是页码和自定义内容。
可以使用\pagestyle{}设置整体风格,也可以用\thispagestyle{}设置当前页的风格。提倡用fancyhdr宏包,fancyhdr宏包对页眉页脚的控制非常freestyle。
例:在页眉左边写上我的名字,中间写上今天的日期,右边写上我的电话;页脚的正中写上页码;页眉和正文之间有一道宽为 0.4pt 的横线分割
\usepackage{fancyhdr}
\pagestyle{fancy}
\lhead{\author}
\chead{\zihao{-5}\songti 武汉理工大学《信息处理课群综合训练与设计》报告}
\rhead{152xxxxxxxx}
\lfoot{}
\cfoot{\thepage}
\rfoot{}
\renewcommand{\headrulewidth}{0.4pt}
\renewcommand{\headwidth}{\textwidth}
\renewcommand{\footrulewidth}{0pt}
例2: 双线页眉,以及页眉上写两行字
\pagestyle{fancy} % 设置页眉
\lhead{page \thepage\ of \pageref{LastPage}}
\chead{页眉中间\\换行(两行中文)}
\rhead{\small\leftmark}
%===============
%双线页眉的设置
\makeatletter %双线页眉
\def\headrule{{\if@fancyplain\let\headrulewidth\plainheadrulewidth\fi%
\hrule\@height 1.0pt \@width\headwidth\vskip1pt%上面线为1pt粗
\hrule\@height 0.5pt\@width\headwidth %下面0.5pt粗
\vskip-2\headrulewidth\vskip-1pt} %两条线的距离1pt
\vspace{6mm}} %双线与下面正文之间的垂直间距
\makeatother
%===============
行间距
虽然可以\linespread{1.25} 1.25倍行间距,但\linespread 命令不仅会改变正文行距,同时也把目录、脚注、图表、标题等的行距给改了;setspace宏包只会改变正文间距
\usepackage{setspace}
\singlespacing %单倍行距
\onehalfspacing %一倍半行距
\doublespacing %双倍行距
\setstretch {1.25} %任意行距
字体
宋体 ⿊体 仿宋 ⾪书 楷书
\songti \heiti \fangsong \lishu \kaishu
空格与换行
空行分段,段前不用空格,会自动缩进
汉字后面空格会自动省略,其他符号后面的空格会保留
单个换行相当于一个空格
首行缩进两个中文字符
\setlength{\parindent}{\ccwd}
脚注与引用
\footnote{这里是脚注}
\begin{quote}
\zihao{-5}\kaishu 这里是引用
\end{quote}
自定义引用环境
% 导言区
\newenvironment{myquote}{\begin{quote}\kaishu\zihao{-5}}{\end{quote}}
% 正文
\begin{myquote}
新的引用
\end{myquote}
摘要
\begin{abstract}
这里是摘要
\end{abstract}
定理
% 导言区
\newtheorem{thm}{我的定理}
% 正文
\begin{thm}[勾股定理]
这里是定理
\end{thm}
1997--2001 起讫年份 用--
公式和图表的引用
在公式和图标的环境中加上\label,引用时用\ref
\label{fig:xiantu} \ref{fig:xiantu}
\label{eq:gougu} \ref{eq:gougu}
目录设置宏包tocbibind
\usepackage[nottoc]{tocbibind}
列表
无序列表
\begin{itemize}
\item C++
\item Java
\item Python
\end{itemize}
有序列表
\begin{enumerate}
\item C++
\item Java
\item Python
\end{enumerate}
超链接
使用hyperref宏包
- 在正文中显示超链接的完整地址并且可以点击访问
% 导言区
\usepackage[colorlinks,linkcolor=red]{hyperref}
% 正文
\url{http:www.baidu.com}
- 在正文中出现链接地址的话,而想用文字或其他字体显示链接
% 正文
\href{http:www.baidu.com}{百度}
删除多余文件
发现编译后会生成除了.tex和.pdf之外很多无用的文件
find ./ -name "*.out" -delete
find ./ -name "*.aux" -delete
find ./ -name "*.log" -delete
find ./ -name "*.synctex.gz" -delete
做成.sh脚本,或者直接复制我这段在terminal里运行
插入python代码
需要在github上下个宏包
% 导言区
\usepackage{pythonhighlight}
% 正文
\begin{python}
...此处省略代码
\end{python}
我的latex模板
\documentclass[UTF8]{ctexart}
% 超链接
\usepackage[colorlinks,linkcolor=red]{hyperref}
% 页面尺寸设置
\usepackage{geometry}
\geometry{left=1cm,right=1cm,top=3cm,bottom=4cm}
\CTEXsetup[format={\Large\bfseries}]{section}
\usepackage{fancyhdr}
\pagestyle{empty}
\usepackage{pythonhighlight}
\begin{document}
\section{参考}
\begin{enumerate}
\item
\end{enumerate}
\section{正文}
\end{document}