Latex bib 使用及编译、Matlab图片导出
注:写论文下个Tex模板,学习下使用,备忘
Latex模版
以IEEEtran模版为例,基本上需要以下4个文档
模版文档有
- IEEEtran.cls 论文模版
- IEEEtran.bst 参考文献模版
自己编写的文档有
- lqg.tex 论文
- lqg.bib 参考文献
在lqg.tex的\end{document}
前面添加语句引入.bst模版和.bib文件
\bibliographystyle{IEEEtran}
\bibliography{lqg}
如果要用到IEEE的期刊缩写则把最后一句改成\bibliography{IEEEabrv,lqg}
来引入缩写定义文件IEEEabrv.bib
bib例子(各词段间的顺序没关系),然后\cite{Kahale07}
来引用
@article{Kahale07,
author = "N. Kahale and R. Urbanke",
title = "On the Minimum Distance of Parallel and Serially
Concatenated Codes",
journal = "{IEEE} Trans. Inf. Technol. Biomed.",
volume = {20(4)},
year = "submitted for publication",
pages = "464-472",
note = "(in English)"
}
bib的类型
@article An article from a journal or magazine
@book A book with an explicit publisher
@booklet A work that is printed and bound, but without a named publisher or sponsoring institution
@conference The same as inproceedings
@inbook A part of a book, which may be a chapter (or section or whatever) and/or a range of pages
@incollection A part of a book having its own title
@inproceedings An article in a conference proceedings
@manual Technical documentation
@mastersthesis A Master's thesis
@misc Use this type when nothing else fits
@phdthesis A PhD thesis
@proceedings The proceedings of a conference
@techreport A report published by a school or other institution, usually numbered within a series
@unpublished A document having an author and title, but not formally published
@collection Not a standard entry type. Use proceedings instead.
@patent Not a standard entry type.
单独的bib文件处理参考文献与在tex中嵌入以下代码的方式相比而言,bib可以重复利用参考文献,并且文献引用格式可以后期定制。
\begin{thebibliography}{10}
\bibitem xxxx
\bibitem xxxx
\end{thebibliography}
可以使用 jabref 来维护自己的.bib文档
编译
tex和bib都设置好之后,就可以来编译了,编译分4步:
1、latex lqg.tex 编译tex文件,没错误的话会生成aux文件,aux文件包含了引用这些的信息。
2、bibtex lqg.aux 根据aux文件中记录的信息来检测bib文件中的相关文献,此时也会检测bib中相关的书写有无错误。
有错会提示,上面说的修改错误的时候就在这个时候来检测。没有错误的话会生成bbl文件,你可以打开bbl文件看下就明白了,bbl里面其实就是用上文的这种形式。
3、latex lqg.tex 再次编译,把参考文献编译进文档中。
4、latex lqg.tex 三次编译,把交叉引用编译正确。
5、dvipdfm lqg.dvi 编译dvi为pdf文件。
Windows的cmd下可以新建txt,贴入以下命令,重命名为.bat 编译时双击即可(该.bat的存放路径就是cmd的执行路径)
latex lqg.tex
bibtex lqg.aux
latex lqg.tex
latex lqg.tex
dvipdfm lqg.dvi
注意
Matlab将图片保存为eps,但是在使用过程中发现生成的dvi文件是正常的,而dvipdfm生成的pdf文件中图片的左侧不显示,各种不显示~~~原因不详!
网上给的办法是:
1、(我用的此方法)将dvi转成ps,再将ps转成pdf,也就是将.bat
文件中的dvipdfm lqg.dvi
替换成
dvips lqg.dvi
ps2pdf lqg.ps
2、另种方法是将eps文件转成pdf,然后再转成eps(未测试)
3、将eps转成pdf用pdflatex编译,由于pdflatex不支持eps格式,可以添加\usepackage{epstopdf}
来用pdflatex
注意
如果 Matlab 导出的 eps 图片在 GSview 中显示不完整的话,就在 GSview 的 Options菜单下,先选中 Auto Redisplay ,再选中 EPS Clip (裁剪),就可以看到正常的EPS图形了。
matlab中标签对中文支持不好,eps中会有中文乱码,可以现在 file - print preview 中设置以下画布大小,让图片全部显示出来,然后用虚拟打印机打印成 pdf 图片,在对其进行裁剪周边的白边。
裁剪工具有很多,一般 tex 中会带各一个小工具 pdfcorp , 不过需要先安装以下 perl 才能用;开源的工具还有一个
Briss 挺方便可以试一下
Matlab图片的导出
File -> Export setup ->
1、Size: width通常是3.5 inches; height可以自调也可以auto; expand axes to fill figure选中后通常没有白边,不过即使有白边可以在GSview中打开 eps ,菜单栏 options–show bounding boxs 选中,在 file -> ps2eps 中不选择 Automatically calculate Bounding Box, 然后剪裁去掉白边即可
2、Rendering: colorspace要是彩色图片就选RGB color,灰色的就选black and white,grayscale不知道什么用;Resolution(dpi)即图像分辨率(每英寸像素点数)600dpi就很高了;其他默认
3、Fonts:字体及大小,改两处:with minimun of 20 points,最小20磅这样3.5inches的图像插入文章后字体就可看清;Custom name 可用Time New Roman,默认的Helvetica也可
4、Lines 默认
设置好后点 Apply to Figure
,然后Export
为eps图片即可;要想重新设置先点Restore Figure
还原。
eps图片嵌入字体问题
用GhostScript来转成pdf再转成嵌入字体的eps。
1、通过gs命令打印lqg.eps到temp.pdf文件:
gswin32c.exe -dNOPAUSE -dBATCH -dEPSCrop -q -sDEVICE=pdfwrite -dCompatibilityLevel#1.3 -dPDFSETTINGS=/prepress -dSubsetFonts=true -dEmbedAllFonts=true -sOutputFile=temp.pdf lqg.eps
2、再通过gs命令从temp.pdf转换到嵌入字体的lqg.eps
gswin32c.exe -q -dNOPAUSE -dBATCH -dNOCACHE -sDEVICE=epswrite -sOutputFile=lqg.eps temp.pdf
最终方案是转成嵌入字体的eps,然后用pdflatex来编译
检查pdf是否已嵌入字体:可以 打开pdf-文件-属性-字体 看是否embedded
;另外在Linux中自带检查工具pdffonts lqg.pdf
,emb选项为no,表示没有嵌入,emb列全为yes即已嵌入。
Code:用Matlab写了个简单的脚本,用法 epsfont(‘eps文件名’),输出一个后缀为’_NEW.eps’的文件已嵌入字体。注意要把脚本跟eps文件放到一起,把里面的gswin32c.exe的路径改成自己的,只能一个图一个图的转,懒得升级了,反正用不几次…
References
[1] BibTeX的使用方法
[2] matlab脚本