【LaTeX】E喵的LaTeX新手入门教程(4)图表

时间:2021-04-28 06:11:04

这里说的不是用LaTeX画图,而是插入已经画好的图片。。想看画图可以把滚动条拉到底。前情回顾【LaTeX】E喵的LaTeX新手入门教程(1)准备篇 
【LaTeX】E喵的LaTeX新手入门教程(2)基础排版 
【LaTeX】E喵的LaTeX新手入门教程(3)数学公式
图片的插入A picture says more than a thousand words. — Shakespeare
没图你说个××。 ——莎士比亚
LaTeX支持的图片格式由于在前面的教程中建议大家使用XeLaTeX,因此在图形格式的支持上相比于其他引擎有着一些天然的优势。XeLaTeX所支持的图形格式有:bmpjpegpngepspdf如果你是使用Mac的壕,那么XeLaTeX还会支持GIFPICTPSDSGATGATIFF格式。。。这里主要说一下epspdf两种格式。eps是一种在TeX中很常用的矢量绘图格式,主流的科技绘图软件基本上都支持eps格式的导出。比如MATLAB在图形窗口中可以直接把图形保存成eps格式。pdf格式嘛。。(谁告诉你pdf只有A4那么大的。。)就是一个小块大小的pdf文档,里面到底有啥谁也管不着了。。矢量绘图格式的好处在于,放大多少倍都不会失真,打印在纸上也不会出现坑坑洼洼的锯齿什么的,是写作科技论文、书籍的必备佳品。支持导出eps格式的绘图软件包括:MS Visio、OOO Draw、MATLAB、Mathematica、GNUPlot、Asymptote等。必备宏包之graphicx插图就用它。。为啥?大家都用。。→_→\usepackage{graphicx}插入图片在正文当中插入一张图片很简单,使用\includegraphics{文件名}就可以了。A picture like
\includegraphics{hit300.png}
【LaTeX】E喵的LaTeX新手入门教程(4)图表我们可以看到图片就被插入到正文当中了。有的时候插入的图片比较大。。比如现在这种情况。。我们就可以为\includegraphics添加一些选项来对图片进行缩放。A picture like
\includegraphics[height=15pt]{hit300.png}
【LaTeX】E喵的LaTeX新手入门教程(4)图表\includegraphics的常用选项有:

  • height,指定插入图片的高度
  • width,指定插入图片的宽度
  • scale,指定插入图片的放大倍数
  • angle,指定插入图片的旋转角度,顺时针方向为正
  • draft,变为草稿模式,此时不读取图片,最终的输出结果只有一个和图片大小一样的框框,可以加快编译速度。可以在终稿之前使用\usepackage[draft]{graphicx}来加快编译速度,终稿时去掉这个选项。

height和width如果指定其一,则另一个则按比例缩放。如果都指定了就变形了→_→至于长度单位,可以用mm/cm/pt/em/ex/in等长度单位。(em指当前字号下大写字母M的宽度,ex指当前字号下小写字母x的宽度。大家可以直接用cm。。。)图形环境单纯使用\includegraphics插入的图形没有编号,也没有办法引用什么的,比较麻烦。因此LaTeX提供了figure环境,使用它插入的图会自动编号,并且可以被交叉引用。figure环境的用法如下:\begin{figure}[选项]
\centering % 使后面的内容居中
\includegraphics{..}
\caption{图标题}
\label{供引用的标签}
\end{figure}
figure环境会产生一个浮动的图形对象,LaTeX会自动地将它放置到美观的位置上。在选项中可以指定LaTeX放置浮动图片的位置优先次序。其中h表示here,表示放置在插入处。t表示top,页面的顶端。b表示bottom,页面的底端。p表示page,单独的图片页。默认的选项是[tbp],不过大家写文章的时候都比较愿意用[htbp]meowmeow meow..
\begin{figure}[htbp]
\centering
\includegraphics[width=.8\textwidth]{hit300.png}
\caption{A 300 Hit!}
\label{fig:300}
\end{figure}

figure \ref{fig:300} will show when you make an accurate hit in osu!.
【LaTeX】E喵的LaTeX新手入门教程(4)图表由于以上代码存在交叉引用,所以需要编译两遍这里用到了一个比较有意思的长度,就是\textwidth,它指的是页面中正文文本的总宽度,前面还可以乘一个系数,当然不用写乘号。。。。这样当你改变页面设置时,图片会自动随着页面宽度缩放,这效果很炫哟。怎么样。。插图很简单吧。。其实figure环境就是个框架,你在里面用两个\includegraphics也没问题的。。。但是要分别为它们写标题的话。。大家可以去看宏包subfig的文档,这里就不详细说明了。表格的插入简单表格LaTeX内置了tabular表格环境,用法和array环境很类似。\begin{tabular}{对齐方式}
第一行。。\\
第二行。。\\
....
最后一行。。。
\end{tabular}
举个栗子。\begin{tabular}{|r||l|}
    \hline
    $x$ & $x^2$ \\
    \hline \hline
    1 & 1  \\ \hline
    2 & 4  \\ \cline{1-1}
    3 & 9  \\ \hline
    4 & 16 \\ \hline
\end{tabular}
【LaTeX】E喵的LaTeX新手入门教程(4)图表除了\hline可以插入一条水平线之外,\cline{起始列-结束列}可以插入仅包含部分单元格的水平线。浮动表格环境浮动表格环境跟浮动图形环境类似,也是自动编号并且自动排版的表格环境。它的用法也跟浮动图形环境类似,把figure换成table\includegraphics换成tabular环境就可以了。\begin{table}[htbp]
\centering
\begin{tabular}{|r||l|}
    \hline
    $x$ & $x^2$ \\
    \hline \hline
    1 & 1  \\ \hline
    2 & 4  \\ \cline{1-1}
    3 & 9  \\ \hline
    4 & 16 \\ \hline
\end{tabular}
\caption{Value of $x^2$}
\label{tbl:square}
\end{table}
Table \ref{tbl:square} is of nonsense....
【LaTeX】E喵的LaTeX新手入门教程(4)图表跨行、跨列表格跨列表格使用\multicolumn可以生成一个跨列单元格。用法如下:\multicolumn{列数}{对齐方式}{单元格内容}

\begin{tabular}{|r||l|}
    \hline
    $x$ & $x^2$ \\
    \hline \hline
    1 & 1  \\ \hline
    2 & 4  \\ \cline{1-1}
    3 & 9  \\ \hline
    4 & 16 \\ \hline
    \multicolumn{2}{|c|}{...}\\ \hline
\end{tabular}
【LaTeX】E喵的LaTeX新手入门教程(4)图表跨行表格要做出跨行表格,需要使用multirow宏包。\usepakcage{multirow}multirow宏包提供了\multirow产生跨行单元格。\multirow{列数}{宽度}{文本}宽度可以写成*使得自动适应,也可指定长度使其中文本得以折行。\begin{tabular}{|r||l|}
    \hline
    $x$ & $x^2$ \\
    \hline \hline
    $-1$ & \multirow{2}{*}{1} \\ \cline{1-1}
    1 & \\ \hline
    2 & 4  \\ \cline{1-1}
    3 & 9  \\ \hline
    4 & 16 \\ \hline
    \multicolumn{2}{|c|}{...}\\ \hline
\end{tabular}
【LaTeX】E喵的LaTeX新手入门教程(4)图表此外multirow还有相当多的选项,读者可以自己查阅这个宏包的文档。又跨行又跨列的表格。。你有完没完。。结合着用上面的东西就可以了。但是,只能是\multirow放在\multicolumn里面,放反了会出错。定宽表格前面提到的表格环境中,单元格的宽度都是根据其中内容的宽度而改变的。如果想让表格整体指定宽度或某一列指定宽度的话。。大家可以去读读tabularx宏包的文档。本喵偷了个懒。。。。跨页表格使用tabular环境生成的表格是一个不可分割的整体,要弄出长长的跨页表格用它肯定是不行的了。因此这里再介绍一下longtable宏包。\usepackage{longtable}它提供了longtable环境,在使用长表的时候代替tabular环境。用法比较复杂:\begin{longtable}{对齐方式}
\caption{标题}\label{标签}\\ % ←爱写不写
表头\\
可有可无的分隔线\hline什么的。。。
\endfirsthead
续表表头\\
可有可无的分隔线\hline什么的。。。
\endhead
表格末尾的分隔线什么的。。。
\endfoot
长长的表格内容。。
\end{longtable}
具体效果如何。。那么长还截个毛线图。。大家回去试好了0w0科技文献三线表使用booktabs宏包,可以生成三线表所需的线。\toprule\midrule\bottomrule看名字就知道该放哪儿了。斜线表头使用diagbox宏包可以绘制表格左上角带有斜线的表头单元格,用法巨简单。\diagbox{左下角的东西}{右上角的东西}
\diagbox{左下角的东西}{左上角的东西}{右上角的东西}
想要修改斜线方向等高级选项,参阅diagbox宏包文档。用LaTeX画图。。比较好用的画图包是TikZ。去看tikz宏包的文档吧,实在是太厚了。但是画图效果真不是盖的。注:使用XeLaTeX引擎可能会使TikZ的一些填充效果变得很糟糕。建议的方法是使用pdfLaTeX进行绘图,使用standalone文档类生成一个pdf图片供XeLaTeX插入。下期预告参考文献的引用和自动生成参考文献列表
from: http://blog.renren.com/blog/339175058/894000790?bfrom=01020110200