Who am I

我的照片
Hefei, Anhui, China
Research Fields: Satellite Geodesy

2012年9月26日星期三

latex 使用子目录

当需要大量的图形文件时,你可能希望将它们存放到一个子目录下。例如放到 子目录 images 下,这时你试图用如下的命令来插入图形 file.eps。
\includegraphics{images/file.eps}


这种做法存在以下问题:

  1. 效率不高,当打开大量的文件时,给出子目录名增加了文件名的长度,占用内存;
  2. 文件名中包括子目录会使文件依赖于操作系统;
对于图形文件存在于子目录下的情形,有两种办法:
  1. 将子目录加到TeX搜索路径中
  2. 用\graphicspath指明所用的子目录。
首先,介绍第一种方法:
用如下语句设置环境变量“TEXINPUTS”:TEXINPUTS=“/dir1:/dir2:”;export TEXINPUTS
当LaTeX在TeX搜索文件时,首先寻找目录dir1和dir2,然后再搜索默认路径。所以,可以将图形所在的子目录先加到环境变量中,然后直接:\includegraphics[]{aa}即可

第二种方法:
\graphicspath{{dir1/}{dir2}}告诉LaTeX从目录dir1/和dir2/下寻找图形文件。
然后在插入图形命令中:\includegraphics[]{aa}


补充:
在使用文件名时,尽量给出文件名的全称(包括扩展名),因为如果在没给出扩展名时,系统尝试打开多种格式的文件,如:
\includegraphics{file}
将使 \includegraphics 命令试图打开下列文件: file.eps file.ps file.eps.gz file.ps.gz file.eps.Z


2012年9月24日星期一

beamercolorbox环境

beamercolorbox环境可以在文本周围绘制一个矩形的frame.

用法:
\begin{beamercolorbox}[options]{beamer color}
contents
\end{beamercolorbox}

举例:
\setbeamercolor{postit}{fg=black,bg=yellow}
\begin{beamercolorbox}[sep=1em,wd=5cm]{postit}
      Place me somewhere!
\end{beamercolorbox}

常用的选项:
  • wd=width设定box的width
  • dp=depth 设定box的depth
  • ht=height 设定box的height
  • left 设定box中的文本左对齐
  • right 设定box中的文本右对齐
  • center 设定box中的文本居中对齐
  • leftskip=xx, 在box里设定leftskip
  • rightskip=xx,在box里设定rightskip
  • sep=xx, 设定文本周围extra space的size
  • colsep=xx, 设定文本周围extra color separation space
  • shadow=<true or false>, 在box背后绘制shadow
  • rounded=<true or false>, box的边界是rounded 
  • ignorebg 忽略背景色
  • vmode  vertical mode when the box starts,默认是hmode

2012年9月21日星期五

win7系统 麦克设置

偶然遇到,突然间QQ语音都没有声音,用win7自带的录音,也没有声音。

确定是驱动都安装正确,肯定是麦克风没设置好。

按如下步骤设置麦克风:
控制面板——硬件和声音——声音——管理音频设备——录制——外接麦克风(同时禁用其它麦克风)——属性(级别,麦克风)——配置——设置麦克风——耳机式麦克风

WIN+R, 输入soundrecorder,录音测试

\rule \hrule, \hfill, \hrulefill

\rule命令的用法:\rule[depth]{width}{height},详细见链接:
http://en.wikibooks.org/wiki/LaTeX/Rules_and_Struts
\rule一个很常见的用法是在一个box命令中加\rule{0pt}{height},绘制一个最小高度为height的柱子。

\hrule:绘制一条水平的rule(尺子),rule包含三个参数(width, length, depth)

举例:
\hrule    可以得到一条水平直线(默认宽度为0.4pt,length适应周围环境)
\hrule width2pt length 2cm depth2pt  可以得到一条定制的直线

同样,也有\vrule命令,绘制一条竖直的rule。如果\hrule和\vrule参数一致,得到的结果也相同。

\hfill: 水平空白,弹性长度填充。

举例:
This \hfill is a text.     This将会左对齐,is a text将会右对齐,中间就是\hfill填充。之所以是弹性长度,是根据内容来填充空白。

\hrulefill:一行剩余的空白用rule填充。
该命令与\hrule的不同在于:两者生成的直线上下空白不同,且\hrulefill是填充剩下的空白,而\hrule在该行下重新绘制一条直线。

\vspace和\vskip命令的区别

在编写latex文档时,\vspace和\vskip命令都能产生一个垂直距离。然而两者有什么区别呢?

1. \vspace是latex命令,\vskip是tex命令。

2. 使用方法:
\vspace{1cm};
\vskip 1cm;

3. 效果的区别
\vspace命令是在命令出现的当前行输出完后,才生成垂直间距;生成间距后,继续之前段落的内容(逻辑上还是相同的一段);

\vskip命令是在命令出现时立马生成垂直间距;生成间距后,开始一个新的段落(逻辑上分段)。

2012年9月20日星期四

vim批注的快捷方式

这里不介绍常用的visual模式下方法,也不给出常用命令的替换方式,而是给出一种映射方式。
当然,NERD_comment.vim插件也提供了快捷注释的功能,这里也不多述。

这里的注释符号以‘%’为例,在vimrc文件中加入如下语句:
" F4 for comment

vmap <F4> :s=^\(\)=\%=g<cr>:noh<cr>                 % visual 模式下
nmap <F4> :s=^\(\)=\%=g<cr>:noh<cr>                 % normal 模式下
imap <F4> <ESC>:s=^\(\)=\%=g<cr>:noh<cr>      % insert模式下

" F6 for uncomment
vmap <F6> :s=^\(%\)==g<cr>:noh<cr>
nmap <F6> :s=^\(%\)==g<cr>:noh<cr>
imap <F6> <ESC>:s=^\(%\)==g<cr>:noh<cr>

本质也是vim的替换命令。
:noh表示nohlsearch命令。

重新打开一个新的terminal后,F4和F6就可以用来添加注释和取消注释了。

2012年9月13日星期四

octave 默认编辑器修改

octave的默认编辑器是emacs,如何将其修改为vim或gedit呢?

首先,新建~/.octaverc文件;

然后,在文件中添加如下语句:
edit editor "vim %s"                                                #使用gvim作为编辑器
edit editor "gnome-terminal -e \"vim %s\""         #在gnome-terminal中打开vim作为编辑器
edit editor "gedit %s"                                             #使用gedit作为编辑器


其中,前两句修改成vim,后一句修改成gedit,根据情况自己选择其中一种吧。

2012年9月11日星期二

latex 数学粗体符号

数学符号通常要求是斜体,如何获得斜体粗体符号呢?

latex中,通常有以下三种主要方式获得粗体符号:
  1. latex自身提供的\mathbf命令
  2. "amsmath"宏包提供的\boldsymbol和\boldmath命令;
  3. "bm"宏包提供的\bm命令.
以上三种方式又有哪些区别呢?

首先介绍\mathbf命令
  • 用法:$\mathbf{abc}$
  • 该命令可以得到粗体字母,但是是直立罗马的粗体,并非斜体;
  • 该命令只对普通字母a-z,A-Z起作用;
接下来介绍\boldsymbol
  • 用法:$\boldsymbol{abc}$
  • 该命令可以得到斜体粗体字母;
  • 该命令即可以对普通字母起作用,也可以对希腊字母起作用.
\boldmath命令
  • 用法:\boldmath    $abc$   \unboldmath
  • 该命令可以得到\boldsymbol命令的结果
  • 该命令是对整个数学公式起作用(包括数学公式中的标点符号等),而其它几个命令都是对公式中的部分符号起作用。
\bm命令
  • 用法:\bm{abc}
  • 该命令与\boldsymbol命令结果相同
举例:

$\mathbf{\sigma}$ \qquad $\mathbf{abc}$ \qquad $abc$ \\
$\bm{\sigma}$ \qquad $\bm{abc}$ \qquad $abc$ \\
$\boldsymbol{\sigma}$ \qquad $\boldsymbol{abc}$ \qquad $abc$ \\
\boldmath
$\sigma$ \qquad $abc$ \qquad abc
\unboldmath

以上代码,可以得到如下结果:
因此,在输入数学公式中,如果希望得到粗体符号,建议用\bm和\boldsymbol命令。

2012年9月10日星期一

latex-suite技巧总结

1. 输入模式下, F5插入环境
  • 在空白行,按下F5后,会给出一些环境选项,如果没有你想要的环境名,可以直接输入。
  • 如果一行中有个word,按下F5后,该word即作为环境名;
  • 选中一些文本后,按下F5,选择或者输入环境名后,选中的文本即可作为该环境的内容。
  • SHIFT+F5,更换环境名
2. F7与F5作用类似,不同的是F7插入的是命令。SHIFT+F7, 更换命令名。
3.输入((,{{,[[之类的符号可自动替换成\left\right类型
4.三个大写字母,快速插入环境
  • EFA ----->   flushleft                   
  • EFR ----->   flushright
  • EEA ----->   equarray
  • EEQ ----->   equation
  • EQE ----->   quote
  • EQN ----->   quotation
  • ELI   ----->   list
  • EDE  ----->  description
  • EEN  ----->  enumerate
  • EIT   ------> itemize
  • ETE   -----> table
  • ETR   -----> tabular
5.双引号可自动替换成``或'',而且是自动左右匹配
6. 设置编译命令
打开.tex文件,normal模式下,输入\ll命令,可以编译文件;\lv命令可以查看编译结果;但通常情况下默认的编译命令对应的是latex, 查看结果对应的是dvi.
现在希望使用pdflatex命令,用evince查看pdf文档,修改~/.vim/ftplugin/latex-suite/texrc文件:
第一处(91行左右,不同版本位置稍有不同),
88 if has('macunix')
89   TexLet g:Tex_DefaultTargetFormat = 'pdf'
90 else
91  TexLet g:Tex_DefaultTargetFormat = 'pdf'
92 endif

让tex总是被编译成pdf

第二处(147行左右),
144  elseif has('macunix')
145  "Let the system pick. If you want, you can override the choice here.
146  TexLet g:Tex_ViewRule_ps = ''
147  TexLet g:Tex_ViewRule_pdf = 'evince'

指定用evince程序打开pdf文档。

重启VIM后,以上修改即可生效。
:TTarget命令可以 修改默认的文件格式。
7. 一些快捷键设置(在~/.vim/ftplugin/tex.vim中修改):
nmap   <Tab>  <C-j> 用Tab键代替Ctrl-j跳转
imap   <Tab>  <C-j>
vmap   <Tab>  <C-j>
map    <F2>   <ESC>:w<CR>\ll   "F2保存并编译(如果maplead改成了",",该命令变为,ll)
imap   <F2>   <ESC>:w<CR>\ll
map    <F3>   <ESC>\lv               "F3查看
imap   <F3>   <ESC>\lv

8. 临时取消快捷键定义,比如你想输入双引号,可是一打出"就自动变成``,那么要怎么禁止自动替换,直接输出"呢?记住 <Ctrl-v> 即可!如:
<Ctrl-v>"            得到 "
SS<Ctrl-v>S      得到 SSS
~<Ctrl-v>~         得到 ~~


latex插入多种格式的图片

latex撰写文档的时候,通常要处理多种格式的图片,如何正确处理呢?

首先,简单介绍一下常见的几种图片格式:

  • eps    矢量图形,latex能较好处理该格式图片
  • jpg    位图,通常照片的格式
  • png   位图,方便网络传输的图片格式
  • tiff     位图,有压缩和非压缩格式
  • pdf    (pdf格式的图片兼容性应该很好,因为最后的文档格式也是pdf格式)
然后,介绍常用的latex编译命令,及其能处理的图片格式:

     1.   latex+dvipdfmx (等价与latex+dvips+ps2pdf)
          该命令只能处理eps格式的图形文件
     2.   pdflatex
          该命令能够处理jpg, png, jpeg, pdf格式
     3.   xelatex
          该命令能够处理eps和jpg格式的图片

那么,如果需要同时插入eps和png等其它图片格式,该怎么做的?

解决思路有两种:
  1. 将所有的图片格式转成eps,然后用组合命令latex+dvipdfmx处理;也可以将eps转成其它格式处理(推荐转成pdf),然后用pdflatex处理;
  2. 修改命令方式或第三方宏包来进行处理,而不需要对图片进行转换。
利用第一种思路,涉及到图片格式的转换,以下简单介绍转换方法。
  • png  ----->  eps                ImageMagick/netpbm命令
  • jpeg ----->  eps                ImageMagick/netpbm命令
  • tiff   ----->  eps                ImageMagick/netpbm命令
  • eps  ----->  pdf                epstopdf命令
  • tiff   ----->  png               ImageMagick/netpbm命令
  • tiff   ------> pdf                tif2eps+epstopdf命令
此外,还有convert 命令(可以用脚本实现批处理),ImageMagick/mogrigy命令(可以批处理)。

注:ImageMagick是linux系统下一款图形格式转换软件。

利用第二种思路,实现pdflatex编译命令能够处理eps图片

方法一:将eps图片转成pdf格式,\includegraphics{pic},pdflatex自动调用相应的pdf文件;

方法二:加载epstopdf宏包,\usepackage{epstopdf}, 编译时命令需要带上参数,如下:                  pdflatex -shell-escape filename.tex   (如要生成索引,该命令需要执行两次)