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脚本

Leequangang /
Published under (CC) BY-NC-SA

Categories :   tech  ·   Tags :   Latex  ·   eps  ·   cmd  ·   matlab  ·   嵌入字体  ·  

Hidden Comments »