LaTeX的知识

Bisheng Du 杜碧升 

杜碧升 Bisheng Du, PhD, Professor

Department of Management Science & Engineering
Business School, Ningbo University, Zhejiang, China

Homepage www.dubisheng.com
Email \(\tt {dubisheng@nbu.edu.cn}\)

LaTeX的综合在线网站

LaTeX的模板网站

LaTeX的表格

LaTeX的公式

LaTeX的个人网页

LaTeX的文档

投稿系统或模板

字体下载

画图链接

XeLaTeX的字体问题

LaTeX中的空的占字符
\phantom{字}
XeLaTeX中的XeCJK的字体配置
\usepackage{xeCJK}
\setmainfont{Times New Roman}    % 缺省字体
\setCJKmainfont[BoldFont={Adobe Heiti Std},ItalicFont={Adobe Kaiti Std}]{Adobe Song Std}
\setCJKsansfont{Adobe Heiti Std}
\setCJKmonofont{Adobe Kaiti Std}
\setCJKfamilyfont{song}{Adobe Song Std}
\setCJKfamilyfont{hei}{Adobe Heiti Std}
\setCJKfamilyfont{kai}{Adobe Kaiti Std}
\setCJKfamilyfont{fs}{Adobe Fangsong Std}
%\setCJKfamilyfont{li}{LiSu}
%\setCJKfamilyfont{you}{YouYuan}
%\setCJKfamilyfont{yahei}{Microsoft YaHei}
%\setCJKfamilyfont{xingkai}{STXingkai}
%\setCJKfamilyfont{xinwei}{STXinwei}
%\setCJKfamilyfont{fzyao}{FZYaoTi}
%\setCJKfamilyfont{fzshu}{FZShuTi}
%-------------------------------------------------------------------
\newCJKfontfamily\song{Adobe Song Std}
\newCJKfontfamily\hei{Adobe Heiti Std}
\newCJKfontfamily\kai{Adobe Kaiti Std}
\newCJKfontfamily\fs{Adobe Fangsong Std}
%\newCJKfontfamily\li{LiSu}
%\newCJKfontfamily\you{YouYuan}
%\newCJKfontfamily\yahei{Microsoft YaHei}
%\newCJKfontfamily\xingkai{STXingkai}
%\newCJKfontfamily\xinwei{STXinwei}
%\newCJKfontfamily\fzyao{FZYaoTi}
%\newCJKfontfamily\fzshu{FZShuTi}

\XeTeXlinebreaklocale "zh"
\XeTeXlinebreakskip = 0pt plus 1pt minus 0.1pt
中文大小写配置
命令	说明
\MakeCapital{a small book of {SUN} rhyme}	一个句子中首字母大写,其字母不变
\MakeSentenceCase{a small book of {SUN} rhyme}	一个句子中除首字母大写外其它全部小写
\MakeTitlecase{a small book of {SUN} rhyme}	一个句子各单词首字母均大写
\MakeUppercase{a small book of {SUN} rhyme}	一个句子全部大写
\MakeLowercase{a small book of {SUN} rhyme}	一个句子全部小写
\MakeSmallcaps{a small book of {SUN} rhyme}	一个句子中除首字母大写外其它全部用smallcap字母

中文配置

简易中文文档配置

\documentclass[14pt,a4paper]{article}
\usepackage{fontspec}
\setmainfont[BoldFont=AdobeHeitiStd-Regular]{AdobeHeitiStd-Regular}
\setsansfont[BoldFont=AdobeHeitiStd-Regular]{AdobeHeitiStd-Regular}
\setmonofont{Times New Roman}
\begin{document}
\title{随手笔记}
\author{作者}
\date{\today}
\maketitle

\end{document}
日期的两种中文表示
%第一种格式\\
\renewcommand{\today}{\number\year 年 \number\month 月 \number\day 日}
%\today\\
%第二种格式\\
%\renewcommand{\today}{\CJKnumber\year 年 \CJKnumber\month 月 \CJKnumber\day 日}
%\today

LaTeX的文本编辑

输入下划线,双下划线,波浪线,删除线,斜删除线的方法
\usepackage{ulem}
....

\uline{这里是文字编辑}  下划线
\uuline{这里是文字编辑}  双下划线

\uwave{这里是文字编辑} 波浪线
\sout{这里是文字编辑} 删除线
\xout{这里是文字编辑} 斜删除线
一些文本编辑常见命令
1.设置行间距的方法:
 %\setlength{\baselineskip}{15pt}
\renewcommand{\baselinestretch}{1}

2.去掉容差报警的方法:
 \hbadness=10000 \tolerance=10000 \hfuzz=150pt

 3.更改子级item,enumerate的图标的方法:
 \renewcommand{\labelenumii}{(\arabic{enumii}).}
\renewcommand{\labelenumiii}{[\arabic{enumiii}]}
\renewcommand{\labelenumiv}{<\arabic{enumiv}>}

\renewcommand{\labelitemi}{\PlusCenterOpen }
\renewcommand{\labelitemii}{\Checkmark }
\renewcommand{\labelitemiii}{\ding {43} }
\renewcommand{\labelitemiv}{$\clubsuit$}

4.使用下划线,删除线的方法:
\usepackage{ulem}
\uwave  \sout \uwave{.....}  \sout{...}

如果用中文,应该是 CJKulem.sty 包, 不然不会正确分行。 如:
\usepackage{CJKulem}  LaTex会自动给CJKulem加上.sty的后缀

\d a  给文字a下面加点,如下: \d G \d P \d I \d I \d O

\xout:斜删除线
\sout :水平删除线
\uwave:波浪线

\uline,\uuline:下划线,双下划线

\renewcommand{\baselinestretch}{1.3}

\renewcommand{\ULdepth} 可以手工修改下划线离基线的距离。

5.高亮,加行号源代码的方法:
\usepackage{color}
\definecolor{gray}{rgb}{0.8,0.8,0.8}
\usepackage{listings}
\lstset{numbers=left} \lstset{language=C++} \lstset{breaklines}
\lstset{extendedchars=false} \lstset{backgroundcolor=\color{gray}}
\lstset{keywordstyle=\color{blue}\bfseries} \lstset{frame=none}
\lstset{tabsize=4} \lstset{commentstyle=\color{red}}
\lstset{stringstyle=\emph}

6.制表位画简单表:
\begin{tabbing}
..........\=............\=..........\\
....\>  .........\>.........\\
.....\>..........\>.........\\
...........\>........\>....
\end{tabbing}

7.盒子:
 \mbox{看什么看,死鸟} \fbox{看什么看,死鸟}
 \fbox 有一个外框

 \framebox[宽度][位置]{.....}
位置:l:左对齐  r:右对齐   s:伸展文本
 \framebox[2.5cm][l]{.........}
 \framebox[3cm][s]{XXX \dotfill XXX}

 8.点填充:
 \dotfill
  \framebox[3cm][s]{XXX \dotfill XXX}

 9.对单个字母加上斜划线的方法:
 \makebox[0pt][l]{/}S

 10.给文本加上边注:
............... \marginpar{这是边注一个}.........

.............\marginpar{...\\....\\....}.........

加上竖线作边注:
\marginpar{\rule[Y轴方向坐标:+向上,-向下]{竖线宽度}{竖线长度}}
\marginpar{\rule[-17.5mm]{10mm}{20mm}}

11.verbatim:
\begin{verbatim}...........\end{verbatim}

\begin{verbatim}* ...........\end{verbatim*}将空格也显示也来。

12.画表有关知识:

1)63:42
  32:44
  要将num1:num2这样的表项中的:予以对齐,则可用:...r@{:}l...
2)合并多列写为一个表项: \multicolumn{10}{c|}{\itshape ........}

13.块注释:
 \iffalse %块注释命令开始
....................
\fi     %块注释命令结束

14.多个宏包的包含法:
%一般情形下的必用宏包
\usepackage{textcomp}
\usepackage{latexsym,amssymb,amsmath}
\usepackage{CJK,CJKnumb}

15.宏包的使用说明的查询:
%可以把\...\MiKTeX\TeXMF\doc文件夹移到另外的地方以方便查阅下面各种宏包的使用说明

16.特殊的宏包:
%\usepackage{ifpdf}            %切换latex和pdflatex命令编译
%\usepackage{china2e}          %特殊的汉字字符

17.有关宏包的说明:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*
%可以把\...\MiKTeX\TeXMF\doc文件夹移到另外的地方以方便查阅下面各种宏包的使用说明
%宏包的兼容性与宏包的顺序有关,一般不应改动下面宏包的前后顺序

%一般情形下的必用宏包
\usepackage{textcomp}
\usepackage{latexsym,amssymb,amsmath}
\usepackage{CJK,CJKnumb}     %其中CJKnumb用在fancyhdr宏包时,CJK 这个环境可以在preamble里使用,
%但要记得在\begin{document}之前关掉之后可以再另外打开一个新的 CJK 环境.

%其他 miktex 自带选用宏包, 包括: 图形宏包, 公式宏包, 表格宏包, 页面设置宏包, 特殊文本元素宏包
%\usepackage{ifpdf}            %切换latex和pdflatex命令编译
%\usepackage{china2e}          %特殊的汉字字符
\usepackage{makeidx}\makeindex %产生方式是用命令(pdf)latex,(pdf)latex,texify,(pdf)latex

%图形宏包
\ifx\pdfoutput\undefined      %即可用latex或pdflatex编译
\usepackage[dvips]{graphicx}
\else
\usepackage[pdftex]{graphicx}
\fi%将eps或pdf都放在当前目录的figures子目录下, 在文中用\graphicspath{{figures/}}
\usepackage[centerlast]{caption2}%图形宏包, 下面的设置在我这儿有一点冲突, 所以弃用
%\usepackage[subfigure,caption2]{ccaption}%构造连续标题,无标题,双语标题或匿名标题
\usepackage{color}%彩色文本、底色、文本框等等色彩支持(这个宏包只能放在这里,否则通不过编译)
\definecolor{lightgray}{gray}{.80}%\colorbox{lightgray}{\vbox{}}
%\usepackage{epic}
%\usepackage[all]{xy}
\usepackage{floatflt}%可把图表和文字混排, 其中[p]可选
%\begin{floatingfigure}[p]{40mm}\centering\caption{}\end{floatingfigure}
%\begin{floatingtable}[p]{\begin{tabular}\end{tabular}}\caption{}\end{floatingtable}
%\usepackage{overpic}%将LaTeX对象放置在图上
%\usepackage{pstricks}%Posts cript macrosfor Generic TeX(我没用过,据说很强),在pdf下要用pdftricks
%\usepackage{Picins}%图形放在正文行中
\usepackage{bez123,fancybox}%latexcad/mytexcad所需要的宏包
\usepackage{mytexcad}%%mytexcad是修改latexcad后的非Miktex宏包,也可用自带的latexcad.
%我想在latex和pdflatex下都能正常显示编译结果,这时把它换成bez123宏包中的相应命令即可.
%另外,改动一下latexcad.sty内的宏命令,把\drawpath 命令中的\path 改为\lbezier.
%建议把latexcad图中的内容复制过来,并在\begin{picture}前加\centering\setlength{\unitlength}{1mm}
%\usepackage{picinpar}%图表和文字混排宏包
%\usepackage[verbose]{wrapfig} %图表和文字混排宏包
%\usepackage{pspicture}%绘制任意角度和粗细的线段以及不限大小的圆,在PDF下不能用
%\usepackage{eso-pic}%向文档的所有页或部分页加n副图形, 可实现水印效果
%\usepackage{eepic}%扩展的绘图支持
%\usepackage{curves}%绘制复杂曲线
%\usepackage{texdraw}%增强的绘图工具
%\usepackage{treedoc}%树形图绘制
%\usepackage{pictex}可以画任意的图形
%公式宏包
\usepackage[amsmath,thmmarks]{ntheorem}%定理类环境宏包,其中amsmath选项用来兼容AMS LaTeX的宏包
\usepackage{cases}%\begin{numcases}{|x|=}x,&for$x\geq0$\\-x,&for$x<0$\end{numcases}
\usepackage{subeqnarray}%多个子方程\begin{subeqnarray}\label{eqw}\slabel{eq0}\\ \slabel{eq1}\end{subeqnarray}
%\usepackage{bm}%处理数学公式中的黑斜体
\usepackage{pmat}%分块矩阵的虚线,非miktex宏包,兼容性很好
\iffalse \begin{pmat}[{.|}]
    a_{11} & a_{12} & b_{11} \cr
    a_{21} & a_{22} & b_{21} \cr\-
    c_{11} & c_{12} & d_{11} \cr
  \end{pmat}\fi
\usepackage{blkarray}%另一种分块矩阵

%表格宏包
\usepackage{threeparttable}%表格内的脚注, 用法为
\iffalse% \begin{table}\centering
\begin{threeparttable}\caption{...}
\begin{tabular}{ll}% or {tabular*}
    ...\tnote{1}&....
    ...   \end{tabular}
   \begin{tablenotes}
    \item [1] the first note
    ...   \end{tablenotes}  \end{threeparttable} \end{table}\fi%
\usepackage{rotating}%用法\begin{sidewaystable}....\end{sidewaystable}即可旋转表格
\usepackage{longtable}%,不推荐用这个,而推荐用下面这一个
\usepackage{supertabular}
\usepackage{tabls}
\usepackage{hhline}%在表格中用 \hhline 得到的结果就如同\hline 或%\hline\hline,当然在和垂直线的交叉处会有所不同.
\usepackage{slashbox}% 可在表格的单元格中画上一斜线.
\newcommand{\centpcol}{\leftskip\fill \rightskip\fill}%制表使可用p{ncm}设置栏宽,还使本栏居中
%举例\multicolumn{1}{p{3.5cm}|}{\centpcol Same as previous response}
%\usepackage{colortbl}%彩色表格
%\usepackage{dcolumn}%让表格中将小数点对齐
\usepackage{bigstrut,bigdelim,multirow}%表格多行合并, 矩阵的边注
\newcommand{\myminitab}[2][l]{\begin{tabular}{#1}#2\end{tabular}}
%比如两行合并可分为以下几种情况
%\multirow{2}{1in}{Common g text}%行之间无横线,但要指列的定宽度;
%\multirow{2}[4]*{Common g text}%行之间有横线;
%\multirow{2}[4]{1in}{Common g text}%行之间有横线,但要指列的定宽度;
%\multirow{2}*{\myminitab[c]{Common \\ g text}}%合并的文本要手动断行

%页面设置宏包
\usepackage{geometry}%可以自定义页面设置
\usepackage{titlesec,titletoc}%配合命令在后面,章节标题设置
\usepackage{multicol,multienum}%多栏结构在文中用\begin{multicols}{2}\end{multicols}
%多列编号用法为(可嵌套使用):
%\begin{multienumerate}
%\mitemxxxx{Not}{Linear}{Not}{Quadratic}
%\mitemxxxo{Not}{Linear}{No; if $x=3$, then $y=-2$.}
%\mitemxx{$(x_1,x_2)=(2+\dfrac{1}{3}t,t)$ or
%$(s,3s-6)$}{$(x_1,x_2,x_3)=(2+\dfrac{5}{2}s-3t,s,t)$}
%\end{multienumerate}
\usepackage[perpage,stable]{footmisc}   %让脚注在每一页重新编号和在章节、标题上加脚注
%\usepackage[perpage,symbol*]{footmisc} %把脚注(footnote)的编号去掉
\usepackage{indentfirst}%indent every new paragraph
\usepackage{fancyhdr}% Modify the page headings of book
\usepackage{fancyvrb}
\usepackage{pageno}%章首页的页眉处理, 可以改为自己想要的形式
%\usepackage{pifont} %有很漂亮的带圈的各种数字符号使用,也可用\textcircled{}命令,参考如下命令:
%\Large{\textcircled{\small{12}}},\textcircled{九},\textcircled{}不需要任何宏包即可使用,推荐
\usepackage{atbeginend}%非Miktex宏包,可以注掉,能解决比如itemize,enumerate等列表中\item之间的控制
%\AfterBegin{itemize}{\addtolength{\itemsep}{-0.5\baselineskip}}
%\AfterBegin{enumerate}{\addtolength{\itemsep}{-0.5\baselineskip}}
%\AfterBegin{description}{\addtolength{\itemsep}{-0.5\baselineskip}}
%\usepackage{appendix}%附录宏包

%特殊文本元素宏包
\usepackage{everb}
\usepackage{ulem,CJKulem}%比如\uwave{wave ne}等命令,注意会改写\em命令
%超级链接宏包, 以下设置可去掉链接的下划线形式
\usepackage[draft=false,colorlinks=true,CJKbookmarks=true,
linkcolor=black,citecolor=black,urlcolor=black]{hyperref}%这是印刷的需要,平时就改black为blue
\usepackage[numbers,sort&compress]{natbib}
\usepackage{hypernat}
\makeatletter
\newcommand{\ucite}[1]{$^{\mbox{\scriptsize \cite{#1}}}$}%参考文献的引用为上标形式的自定义
%\providecommand*{\toclevel@defn}{0}%去掉一些无关紧要的警告信息
\makeatother
%用以下四个宏包之一能使(pdf)latex自动不嵌入相应的系列字体,减少PDF或DVI文件的大小并提高pdf的效果
%其中times宏包还能自由定义字号大小
\usepackage{times}     %-- Times Roman + Helvetica + Courier
%\usepackage{palatino} %-- Palatino + Helvetica + Courier
%\usepackage{newcent}  %-- New Century Schoolbook + Avant Garde + Courier
%\usepackage{bookman}  %-- Bookman + Avant Garde + Courier
\usepackage{balance}   %balance the last two columns in twocolumn mode(命令为\balance)
\usepackage{delarray}%使array环境的[t]或者[b]选项生效,并可解决表格中的文字上下位置不对的问题
%由于重新定义array,所以须放在array后面,使用方法为$$a\begin{array}[t][{c}]b\\d\end{array}c$$
\usepackage{mdwlist}%用{itemize*}等来减少竖直距离a

Beamer

颜色设置
\definecolor{Red}{rgb}{1,0,0}
\definecolor{Blue}{rgb}{0,0,1}
\definecolor{Green}{rgb}{0,1,0}
\definecolor{magenta}{rgb}{1,0,.6}
\definecolor{lightblue}{rgb}{0,.5,1}
\definecolor{lightpurple}{rgb}{.6,.4,1}
\definecolor{gold}{rgb}{.6,.5,0}
\definecolor{orange}{rgb}{1,0.4,0}
\definecolor{hotpink}{rgb}{1,0,0.5}
\definecolor{newcolor2}{rgb}{.5,.3,.5}
\definecolor{newcolor}{rgb}{0,.3,1}
\definecolor{newcolor3}{rgb}{1,0,.35}
\definecolor{darkgreen1}{rgb}{0, .35, 0}
\definecolor{darkgreen}{rgb}{0, .6, 0}
\definecolor{darkred}{rgb}{.75,0,0}

\xdefinecolor{olive}{cmyk}{0.64,0,0.95,0.4}
\xdefinecolor{purpleish}{cmyk}{0.75,0.75,0,0}
背景图设置
Global Setting of Background:

In the preamble of your TEX file write the command
\usebackgroundtemplate{\includegraphics[width=\paperwidth,height=\paperheight,keepaspectratio]{<file_name>}


Individual Setting of Background:

For a individual setting, write the same line as above just before the \begin{frame} command

of the frame you want to edit, and then wrap it all with braces.
{
\usebackgroundtemplate{\includegraphics[width=\paperwidth,height=\paperheight,keepaspectratio]{<file_name>
\begin{frame}
    \titlepage
\end{frame}
}
半透明的背景图
\usepackage{tikz}

\usebackgroundtemplate{%
\tikz\node[opacity=0.13,inner sep=0] {\includegraphics[height=\paperheight,width=\paperwidth,keepaspectratio]{image_name}};}
Beamer的大小比例
\documentclass[aspectratio=1610]{beamer}
%Sets aspect ratio to 16:10, and frame size to 160mm by 100mm.
\documentclass[aspectratio=169]{beamer}
%Sets aspect ratio to 16:9, and frame size to 160mm by 90mm.
\documentclass[aspectratio=149]{beamer}
%Sets aspect ratio to 14:9, and frame size to 140mm by 90mm.
\documentclass[aspectratio=141]{beamer}
%Sets aspect ratio to 1.41:1, and frame size to 148.5mm by 105mm.
\documentclass[aspectratio=54]{beamer}
%Sets aspect ratio to 5:4, and frame size to 125mm by 100mm.
\documentclass[aspectratio=43]{beamer}
%The default aspect ratio and frame size. You need not specify this option.
\documentclass[aspectratio=32]{beamer}
%Sets aspect ratio to 3:2, and frame size to 135mm by 90mm.
用Tikz在插入的图片上画图(出处)
\documentclass{beamer}
\usepackage{tikz}

\begin{document}

\begin{frame}

\begin{tikzpicture}[nodes={inner sep=0}]
% 插图
\node (a)
  {\includegraphics[width=3cm]{example-image-a}};
\node (b) at (5,0)
  {\includegraphics[width=3cm]{example-image-b}};
% 画图
\draw[->,red,line width=2mm] (a) -- (b);
\draw[<-,blue,line width=2mm] (a) -- ++ (-1,-3);
\draw[green,line width=1mm] (b.center) circle (1.5cm);
\end{tikzpicture}

\end{frame}

\end{document}

参考文献

文中author-year引用文后排序给出(出处)
\documentclass{article}
\usepackage[numbers]{natbib}
\bibliographystyle{plainnat}
\renewcommand\cite[1]{\citeauthor{#1} (\citeyear{#1})}
\begin{document}
\cite{Knuth:BAMSN-1-337}

\bibliography{texbook1}
\end{document}