Begin

检验安装

tex -v
latex -v
xelatex -v

更新

tlmgr update --all

编译

latex test.tex
生成.dvi
dvipdfmx test.dvi
转换.pdf

xelatex test.tex
直接生成.pdf

使用中文

  1. .tex保存为UTF-8编码存储。
  2. 引入宏包\usepackage{ctex}
  3. XeTeX 原生支持 Unicode,并且可以方便地调用系统字体。

常用宏包

宏包作用
amsmath数学符号与公式宏包
amsfonts数学符号与字体
Ctex支持中文的排版
gaphicx插图处理
Xcolor颜色处理
Geometry版面尺寸
graphicx图像
Subfigure并排放置俩个图片
Fancyhdr自定义页眉页脚
Pdfpages插入首页
Verbatim用于注释
lastpage计算文档页数
booktabs三线表格制作

基本结构




% 导言区
\documentclass{article}
% book,report,letter
% ctexart,ctexbook,ctexrep,ctexbeamer

\usepackage{ctex}

\title{标题}
\author{作者}
\date{\today}


% 正文区
% 一个tex文件有且只能有一个document
\begin{document}
    \maketitle
    文本模式:嘤嘤嘤,\LaTeX 。
    
    数学模式:$f(x)=3x^2+2x+5$
    % 双$符号表示行间公式,单$表示行内公式
\end{document}

自带帮助文档

CTEX

texdoc ctex

简短介绍

texdoc lshort-zh

字体设置

\documentclass[10pt]{article}
% 设置normalsize 一般10-12pt
\usepackage{ctex}

% 定义新命令myfont
\newcommand{\myfont}{\textbf{\textsf{Fancy Text}}}

% 正文区
\begin{document}
    % 字体族设置(罗马字体、无衬线字体、打字机字体)
    
    \textrm{Roman Family} \textsf{Scan Serif Family}\texttt{Typewriter Family}
    % \textrm等是字体命令,大括号里是作用到的文字
    
    {\rmfamily Roman Family} {\sffamily Scan Serif Family}{\ttfamily Typewriter Family}
    % \rmfamily是字体声明,后面的文字是作用到的文字
    
    {\sffamily Who are you?you find self on everyone around.take you as the same as others!}
    {\ttfamily Are you aiser than others?}
    
    % 字体系列设置(粗细、宽度)
    \textmd{Medium Series} \textbf{Boldface Series}
    {\mdseries Medium Series} {\bfseries Boldface Series}
    
    
    % 字体形状(直立、斜体、伪斜体、小型大写)
    \textup{Upright Shape} \textit{Italic Shape} 
    \textsl{Slanted Shape} \textsc{Small Caps Shape}
    
    {\upshape Upright Shape} {\itshape Italic Shape }
    {\slshape Slanted Shape} {\scshape Small Caps Shape}
    
    % 中文字体
    {\songti 宋体} \quad{\heiti 黑体}\quad{\fangsong 仿宋}\quad {\kaishu 楷书}
    % \quad表示空格
    
    中文字体的\textbf{粗体}与\textit{斜体}
    
    % 字体大小
    {\tiny  Hello }\\
    {\scriptsize  Hello }\\
    {\footnotesize  Hello }\\
    {\small  Hello }\\
    {\normalsize  Hello }\\
    {\large  Hello }\\
    {\Large  Hello }\\
    {\LARGE  Hello }\\
    {\huge  Hello }\\ 
    {\Huge  Hello }\\ 
    
    % \\表示换行
    
    % 中文字号设置
    \zihao{5}你好!
    
    % 使用新命令,格式与内容分离
    \myfont
    
    
\end{document}

组织文章

章节和段落

在文档类 article/ctexart 中,定义了五个控制序列来调整行文组织结构。

% 小节
\section{·}
% 子小节
\subsection{·}
% 子子小节
\subsubsection{·}
\paragraph{·}
\subparagraph{·}

% \par   换行缩进
% \\     只换行

report/ctexrep中,还有\chapter{·};在文档类book/ctexbook中,还定义了\part{·}

插入目录

插入控制序列 \tableofcontents

ctexset

内容和格式分离。

\ctexset {⟨键值列表⟩}是CTEX 宏集的通用控制命令,用来在宏包载入后控制宏包的各项功能。\ctexset 的参数是
一个键值列表,以通用的接口完成各项设置。
\ctexset 的参数是一组由逗号分隔的选项列表,列表中的选项通常是一个⟨key⟩=⟨value⟩

特殊字符

  1. 空行分段,多个空行等同于1个。
  2. 自动缩进,不能使用空格代替。
  3. 英文中多个空格等同于1个,中文中空格被忽略。
  4. 汉字与其他字符的间距由XeLaTeX自动处理。
  5. 禁止使用中文全角空格。
\documentclass[10pt]{article}
% 设置normalsize 一般10-12pt
\usepackage{ctex}

% 正文区
\begin{document}
    \section{空格的输入}
    % 1em的空白
    a\quad b
    
    % 2em空白
    a\qquad b
    
    % 1/6em空白
    a\,b
    
    a\thinspace b
    
    % 1/2空白
    a\enspace b
    
    % 空格
    a\ b
    
    % 硬空格(不可分割)
    a~b
    
    
    
    % 1pc = 12pt = 4.218mm
    a\kern 1pc b
    
    a\kern -1em b
    
    a\hskip 1em b
    
    a\hspace{35pt}b
    
    % 占位宽度
    a\hphantom{xyz}b
    
    % 弹性长度
    a\hfill b
    
    \section{\ LaTex 控制符}
    \# \$ \% \{  \} \~{} \_{} \^{} \textbackslash \&
    
    \section{排版符号}
    \S \P \dag \ddag \copyright \pounds
    
    \section{\ Tex 标志符号}
    \ TeX{} \ LaTeX{}  \ LaTeXe{}
    
    \section{引号}
    `' 
    `` 
    ''   
    ``测试'' 
    % `表示左单引号,'表示右单引号。
    
    \section{连字符}
    - -- ---
    
    \section{非英文字符}
    \oe \OE \ae \AE \aa \AA \o \O \l \L \ss \SS !` ?`
    
    \section{重音符号}
    \`o \'o \^o \''o \~o \=o \.o \u{o} \v{o} \H{o} \r{o} \t{o} \b{o} \c{o} \d{o}

\end{document}


定界符

各种括号用 (), [], \{\}, \langle\rangle 等命令表示,注意花括号通常用来输入命令和环境的参数,所以在数学公式中它们前面要加 。因为 LaTeX 中 |\| 的应用过于随意,amsmath 宏包推荐用 \lvert\rvert\lVert\rVert 取而代之。

为了调整这些定界符的大小,amsmath 宏包推荐使用 \big, \Big, \bigg, \Bigg 等一系列命令放在上述括号前面调整大小。

\documentclass[10pt]{article}
\usepackage{ctex}
\usepackage{amsmath}
\begin{document}
    \[ \Biggl(\biggl(\Bigl(\bigl((x)\bigr)\Bigr)\biggr)\Biggr) \]
    \[ \Biggl[\biggl[\Bigl[\bigl[[x]\bigr]\Bigr]\biggr]\Biggr] \]
    \[ \Biggl \{\biggl \{\Bigl \{\bigl \{\{x\}\bigr \}\Bigr \}\biggr \}\Biggr\} \]
    \[ \Biggl\langle\biggl\langle\Bigl\langle\bigl\langle\langle x
    \rangle\bigr\rangle\Bigr\rangle\biggr\rangle\Biggr\rangle \]
    \[ \Biggl\lvert\biggl\lvert\Bigl\lvert\bigl\lvert\lvert x
    \rvert\bigr\rvert\Bigr\rvert\biggr\rvert\Biggr\rvert \]
    \[ \Biggl\lVert\biggl\lVert\Bigl\lVert\bigl\lVert\lVert x
    \rVert\bigr\rVert\Bigr\rVert\biggr\rVert\Biggr\rVert \]
\end{document}

插图

  1. 导言区:\usepackage{graphicx}
  2. 语法:\includegraphics[选项]{<文件名>}
\documentclass{ctexart}
\usepackage{graphicx}

\graphicspath{{img/}}

\begin{document}
    \includegraphics{pic}
    
    % 页面宽度的80% 
    \includegraphics[width = .3\textwidth]{pic}
    % 页面高度的80% 
    \includegraphics[height= .3\textwidth]{pic}
    % 缩放因子
    \includegraphics[scale=.3]{pic}
    % 固定宽度
    \includegraphics[width=2cm]{pic}
    % 固定高度
    \includegraphics[height=2cm]{pic}
    
    % 多个参数
    \includegraphics[angle=45, width=5cm]{pic}
\end{document}

更多参数在帮助文档中查看texdoc graphicx

表格

符号作用
\\表示换行
&表示不同的列
l左对齐
c居中对齐
r右对齐
p{<宽>}宽度固定,自动换行
\documentclass{ctexart}

\begin{document}
    \begin{tabular}{l | c || p{2cm} | r |}
        姓名 & 语文 & 数学 & 备注 \\
        张三 & 34  & 23 & 23 \\
    \end{tabular}


    \begin{tabular}{l c c r}
    姓名 & 语文 & 数学 & 备注 \\
    张三 & 34  & 23 & 23 \\
    \end{tabular}

    \begin{tabular}{l c c r}
        \hline
        \hline
        姓名 & 语文 & 数学 & 备注 \\
        \hline
        张三 & 34  & 23 & 23 \\
        \hline
    \end{tabular}
\end{document}


\begin{tabular}[<垂直对齐方式>]{<列格式说明>}
    <表项> & <表项> & ... & <表项> \\
    ...
\end{tabular}

更多表格在帮助文档中查看texdoc booktabtexdoc longtabtexdoc tabu

浮动体

实现灵活分页,给图标添加标题,交叉引用。
figure环境(和table环境类似):

\begin{figure}[<允许位置>]
    <任意内容>
\end{figure}


htbp 选项用来指定插图的理想位置,这几个字母分别代表 here, top, bottom, float page,也就是就这里、页顶、页尾、浮动页(专门放浮动体的单独页面或分栏)。\centering 用来使插图居中;\caption 命令设置插图标题,LaTeX 会自动给浮动体的标题加上编号。注意 \label 应该放在标题命令之后。

\documentclass{ctexart}
\usepackage{graphicx}

\graphicspath{{img/}}

\begin{document}
    % 交叉引用
    看不见我如图\ref{fig-pic}
    \begin{figure}[htbp]
        \centering
        \includegraphics{pic}
        \caption{我是标题}
        \label{fig-pic}
    \end{figure}

    \begin{table}
        \centering
        \caption{我是表格}
        \begin{tabular}{l c c r}
            \hline
            \hline
            姓名 & 语文 & 数学 & 备注 \\
            \hline
            张三 & 34  & 23 & 23 \\
            \hline
        \end{tabular}
    \end{table}
\end{document}

数学公式

常用语法

LaTeX 的数学模式有两种:行内模式 (inline) 和行间模式 (display)。前者在正文的行文中,插入数学公式;后者独立排列单独成行,并自动居中。

\documentclass{article}

\usepackage{ctex}
\usepackage{amsmath}
\begin{document}
    \section{行内公式}
    \subsection{美元符号}
    交换律$a+b=b+a$,如$1+2=2+1$
    \subsection{小括号}
    交换律\(a+b=b+a\),如\(1+2=2+1\)
    \subsection{math环境}
    交换律
    \begin{math}
        a+b=b+a
    \end{math}
    \section{上下标}
    \subsection{上标}
    $2x^2+3x+5=6$
    \subsection{下标}
    $a_0,a_1,a_{100}$
    \section{希腊字母}
    $\alpha$
    $\beta$
    $\gamma$
    $\epsilon$
    $\pi$
    $\omega$
    
    $\Gamma$
    $\Delta$
    $\Theta$
    $\Pi$
    $\Omega$
    
    $\alpha^3 + \beta^2 + \gamma = 0$
    \section{数学函数}
    $\log$
    $\sin$
    $\cos$
    $\arccos$
    $\arcsin$
    $\ln$
    
    $\sin^2x+\cos^2x=1$
    
    $\sqrt{2}$
    $\sqrt{x^2+y^2}$
    $\sqrt{2+\sqrt{2}}$
    $\sqrt[4]{x}$
    \section{分式}
    大约是原体积的$3/4$
    大约是原体积的$\frac{3}{4}$
    
    \section{行间公式}
    \subsection{双\$}
    $$2x^2+5x+3=6$$    
    \subsection{中括号}
    \[a+b=b+a\]
    \subsection{displayment}
    \begin{displaymath}
        2x^2+5x+3=6    
    \end{displaymath}
    \subsection{自动编号公式}
    交换律见式\ref{eq:commutative}
    \begin{equation}
        a+b=b+a \label{eq:commutative}
    \end{equation}
    \subsection{不带自动编号公式}
    \begin{equation*}% 需要使用\usepackage{amsmath}
        a+b=b+a
    \end{equation*}
    
\end{document}


多行公式

\documentclass{ctexart}

%\usepackage{ctex}
\usepackage{amsmath}
\usepackage{amssymb}

\begin{document}
    % gather 和 gather* 环境 (可以使用\\换行)
    
    % 带编号
    \begin{gather}
        a + b = b + a \\
        ab ba
    \end{gather}
    
    % 不带编号
    \begin{gather*}
        3+5 = 5+3 = 8 \\
        3 \times 5 = 5 \times 3
    \end{gather*}
    
    % 在\\前使用\notag 阻止编号
    \begin{gather}
        3^2 + 4^2 = 5^2 \notag \\
        5^2 + 12^2 = 13^2 \notag \\
        a^2 + b^2 = c^2 
    \end{gather}
    
    % align 和 align* 环境 (用 & 进行对齐)
    % 带编号
    \begin{align}
        x &= t + \cos t + 1 \\
        y &= 2\sin t
    \end{align}
    % 不带编号
    \begin{align*}
        x &= t & x &= \cos t & x &= t \\
        y &= 2t & y &= \sin(t+1) & y &= \sin t 
    \end{align*}
    
    % split 环境(对齐采用 align 环境的方式,编号在中间)
    \begin{equation}
        \begin{split}
            \cos 2x &= \cos^2 x - \sin^2 x \\
            &= 2\cos^2 x - 1
        \end{split}
    \end{equation}
    
    % cases 环境
    % 每行公式中使用 & 分隔为两部分,
    % 通常表示值和后面的条件
    \begin{equation}
        D(x) = \begin{cases}
            1, & \text{如果 } x \in \mathbb{Q}; \\ 
            %\in 用于输出属于符号 mathbb用于输出花体字符 \text{} 用于在数学模式中输入中文
            0, & \text{如果 } x \in \mathbb{R}\setminus\mathbb{Q}.
        \end{cases}
    \end{equation} 
\end{document}

矩阵

\documentclass{ctexart}
% \usepackage{ctex}
\usepackage{amsmath}

\begin{document}
    % 矩阵环境,用&分隔列,用\\分隔行
    \[
    \begin{matrix}
        0 & 1\\
        1 & 0
    \end{matrix} \qquad
    % pmatrix环境 加小括号
    \begin{pmatrix}
        0 & -i\\
        i & 0
    \end{pmatrix} \qquad
    % bmatrix环境 加中括号
    \begin{bmatrix}
        0 & -i\\
        i & 0
    \end{bmatrix} \qquad
    % Bmatrix环境 加大括号
    \begin{Bmatrix}
        0 & -i\\
        i & 0
    \end{Bmatrix} \qquad
    % vmatrix环境 加单竖线
    \begin{vmatrix}
        0 & -i\\
        i & 0
    \end{vmatrix} \qquad
    % Vmatrix环境 加双竖线
    \begin{Vmatrix}
        0 & -i\\
        i & 0
    \end{Vmatrix} 
    \]
    
    % 可以使用上下标
    \[
    A = \begin{pmatrix}
        a_{11}^2 & a_{12}^2 & a_{13}^2 \\
        0 & a_{22} & a_{23} \\
        0 & 0 & a_{33}
    \end{pmatrix}
    \]
    
    % 常用省略号:\dots,\vdots,\ddots
    \[
    A = \begin{pmatrix}
        a_{11} & \dots & a_{1n} \\
        & \ddots & \vdots \\
        0 & & a_{mn}
    \end{pmatrix}_{n \times n}
    % 数学模式中times命令排版乘号
    \]
    
    % 分块矩阵(矩阵嵌套)
    % text命令在数学模式中临时切换到文本模式
    \[\begin{pmatrix}
        \begin{matrix}
            1&0\\0&1
        \end{matrix}
        & \text{\Large 0}\\
        \text{\Large 0}&\begin{matrix}
            1&0\\0&1
        \end{matrix}
    \end{pmatrix}
    \]
    
    % 三角矩阵
    % multicolumn合并多列
    % raisebox调整高度
    \[\begin{pmatrix}
        a_{11}&a_{12}&\cdots&a_{ln}\\
        &a_{22}&\cdots&a_{2n}\\
        &        &\dots &\vdots \\
        \multicolumn{2}{c}{\raisebox{1.3ex}[0pt]{\Huge 0}}
        &        &a_{nn}
    \end{pmatrix}
    \]
    
    % 跨列省略号:\hdotsfor{<列数>}
    \[
    \begin{pmatrix}
        1&\frac 12 &\dots &\frac ln \\
        \hdotsfor{4}\\
        m&\frac m2& \dots &\frac mn
    \end{pmatrix}
    \]
    
    % 行内小矩阵(smallmatrix)环境
    复数$z=(x,y)$也可以用矩阵
    \begin{math}
        \left(% 需手动加上左括号
        \begin{smallmatrix}
            x & -y \\ y & x
        \end{smallmatrix}
        \right)% 需手动加上右括号
    \end{math}来表示。
    
    % array环境(类似表格环境tabular)
    \[
    \begin{array}{r|r}
        \frac 12&0\\
        % 或者\frac {1}{2}来区分分子分母
        \hline
        0 & -\frac abc\\
    \end{array}
    \]
    
    % 用array环境构造复杂矩阵
    % 省略
\end{document}

化学式

代码

引用代码

代码高亮

算法结构

参考文献排版

BibTex

一次管理一次使用

\documentclass{ctexart}
%\usepackage{ctex}
\bibliographystyle{plain}
% 指定排版样式 如plain unsrt alpha abbrv

\begin{document}

    引用一篇文章\cite{article1},引用一本书\cite{book1}
    \begin{thebibliography}{99}
        \bibitem{article1}马化腾,雷军,李彦宏,张一鸣.\emph{基于LaTex的Web数学公式提取方法研究}[J].计算机科学.2014(06)
        \bibitem{book1}Andy H,Bob,Cat,\emph{what does the fox say}
    \end{thebibliography}    

\end{document}

一次管理多次使用

  1. 在构建中设置默认文献工具为BibTex。
  2. 在谷歌学术中点击引用链接获取BibTex格式的引用数据。
  3. 新建.bib后缀的文件,复制到该参考文献数据库中。
\documentclass{ctexart}
%\usepackage{ctex}
\bibliographystyle{plain}
% 指定排版样式 如plain unsrt alpha abbrv

\begin{document}
    这是一个参考文献的引用:\cite{scott1988social}
    \bibliography{t}
\end{document}

t.bib文件:

  @article{scott1988social,
  title={Social network analysis},
  author={Scott, John},
  journal={Sociology},
  volume={22},
  number={1},
  pages={109--127},
  year={1988},
  publisher={British Sociological Association Publications Limited}
}

  • 更多参考文献排版可以使用natbib宏包。
  • 对于参考文献数据库文件,可以使用JabRef软件进行可视化管理。

BibLaTeX

BibLaTeX和biber宏包是新的TeX参考文献排版引擎。
参考文献样式文件.bbx
引用样式文件.cbx

自定义命令和环境

\documentclass{ctexart}

% \newcommand{cmd}{def}定义命令
% 命令只能由字母组成,不能以\end 开头
% \newcommand{命令}[参数个数][首字母默认值]{具体定义}

% \newcommand可以是简单字符串替代,例如:
% 使用\PRC 相当于 People's Republic of \emph{China} 这一串内容
\newcommand\PRC{People's Republic of \emph{China}}%\emph{text}表示强调

% \newcommand也可以使用参数
% 参数个数可以从1到9,使用时用 #1,#2,……,#9 表示
\newcommand\loves[2]{#1 喜欢 #2}
\newcommand\hatedby[2]{#2 不受 #1 喜欢}

% \newcommand的参数也可以有默认值
% 指定参数个数的同时指定了首个参数的默认值,那么这个命令的
% 第一个参数就成为可选的参数(要使用中括号指定)
\newcommand\love[3][喜欢]{#2#1#3}

% \renewcommand重定义命令
% 与\newcommand命令作用和用法相同,但只能用于已有命令
% \renewcommand<命令>[<参数个数>][<首参数默认值>]{<具体定义>}
\renewcommand\abstractname{内容简介}

% 定义和重定义环境
% \newenvironment{<环境名称>}[<参数个数>][<首参数默认值>]
                 {<环境前定义>}
                 {<环境后定义>}
% \renewenvironment{<环境名称>}[<参数个数>][<首参数默认值>]
                      {<环境前定义>}
                   {<环境后定义>}

% 为 book 类中定义摘要(abstract) 环境
\newenvironment{myabstract}[1][摘要]%
{\small
    \begin{center}\bfseries #1\end{center}%
    \begin{quotation}}%
    {    
    \end{quotation}
}

\begin{document}
    \PRC
    
    \loves{猫儿}{鱼}
    
    \hatedby{猫儿}{萝卜}
    
    \love{猫儿}{鱼}
    
    \love[最爱]{猫儿}{鱼}
    
    \begin{abstract}
        这是一段摘要...
    \end{abstract}
    
    \begin{myabstract}[我的摘要]
        这是一段自定义格式的摘要...
    \end{myabstract}
    
\end{document}

数据与排版分离

使用datatool宏包读取CSV数据,booktabs宏包绘制三线表,databar绘制统计图。

版面设置

页边距

设置页边距,推荐使用 geometry 宏包。

将纸张的长度设置为 20cm、宽度设置为 15cm、左边距 1cm、右边距 2cm、上边距 3cm、下边距 4cm,可以在导言区加上这样几行:

\usepackage{geometry}
\geometry{papersize={20cm,15cm}}
\geometry{left=1cm,right=2cm,top=3cm,bottom=4cm}

页眉页脚

在页眉左边写上作者,中间写上今天的日期,右边写上电话;页脚的正中写上页码;页眉和正文之间有一道宽为 0.4pt 的横线分割,可以在导言区加上如下几行:

\usepackage{fancyhdr}
\pagestyle{fancy}
\lhead{\author}
\chead{\date}
\rhead{152xxxxxxxx}
\lfoot{}
\cfoot{\thepage}
\rfoot{}
\renewcommand{\headrulewidth}{0.4pt}
\renewcommand{\headwidth}{\textwidth}
\renewcommand{\footrulewidth}{0pt}

首行缩进

CTeX 宏集已经处理好了首行缩进的问题(自然段前空两格汉字宽度)。

行间距

通过 setspace 宏包提供的命令来调整行间距。比如在导言区添加如下内容,将行距设置为字号的 1.5 倍:

\usepackage{setspace}
\onehalfspacing

段间距

通过修改长度 \parskip 的值来调整段间距。例如在导言区添加以下内容:

\addtolength{\parskip}{.4em}

分页断行

导言区单独设置格式


参考链接:




扫一扫在手机打开当前页