首页 LaTeX编辑散记

LaTeX编辑散记

举报
开通vip

LaTeX编辑散记 LATEX 编辑散记 Feifei Liu E-Mail: lffjob@yahoo.com* 28 March 2012 目录 1 常见宏包基本使用以及推荐用法 3 1.1 表格 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1.1 基本表格用法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...

LaTeX编辑散记
LATEX 编辑散记 Feifei Liu E-Mail: lffjob@yahoo.com* 28 March 2012 目录 1 常见宏包基本使用以及推荐用法 3 1.1 表格 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1.1 基本表格用法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.1.2 Publication Quality Tables—booktabs宏包 . . . . . . . . . . . . . . . . . 4 1.1.3 合并行列 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.1.4 单元内换行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.2 小数点对齐—dcolumn宏包 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.3 表格跨页—longtable宏包 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 1.4 表格注解 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.4.1 ctable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.4.2 简单做法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.5 figure, subfigure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.5.1 figure跨页 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 1.5.2 subfigure的编号设置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 2 列表及引文 10 2.1 itemize, enumerate及description . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.2 Break enumerate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 2.3 quote引文 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 3 图形处理—eps, jpg, pdf… 11 3.1 Bounding box . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.2 裁剪EPS图 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 4 一些要注意的宏包问题 13 4.1 subfigure正文使用nref引用编号出错 . . . . . . . . . . . . . . . . . . . . . . . 13 4.2 amsthm与amsmath顺序问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 4.3 amsmath的subequations前后间距 . . . . . . . . . . . . . . . . . . . . . . . . . . 13 *Thanks for your reading. Any advice and any correction about this paper please feel free to contact me. 1 4.4 algorithm2e宏包问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 4.5 quotes宏包与hyphenat冲突问题 . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 5 其他一些不常见但又会见到的问题 14 5.1 四级标题 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 5.2 在caption里面换行以及添加脚注 . . . . . . . . . . . . . . . . . . . . . . . . . . 14 5.3 给multicol指定两边的margin . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 6 Tips and Tricks 15 7 寻求帮助 15 8 名种有用的链接 16 8.1 关于 LATEX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 8.2 LATEX 编辑器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 8.3 LATEX 宏包 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 2 1 常见宏包基本使用以及推荐用法 关于浮动环境, 例如像figure, table, algorithm等, 如果使用普通的h位置指定, 在当前位置 放不下时, LATEX 仍会将其“浮动”到下一页去, 并且经常也会出现在一段中间; 由于期刊要 求不可以在段落中间出现, 因此, 可以用float宏包的H位置指定, 如果当前位置排不下, 就会留 白将图挤到下一页: t Top of the page b Bottom of the page p Page of floats h Here, if possible H Here, definitely 1.1 表格 表格算是在处理稿件中比较头疼的事情的, 涉及的面比较广, 比如三线表, 合并行, 合并 列, 表格内换行, 小数点对齐, 列间距, 表格注解以及跨页表格. 接下来的部分就会分别讲到这 些. 1.1.1 基本表格用法 LATEX 里面的表格环境有两种, tabbing和tabular; tabbing用得少一些, 功能比较有限, 但 是, 它可以跨页, 通常用于一些条列式的表示; tabular大概是用得最多的, LATEX 将其看作一个 box, 因此不会跨页; 看一个基本的例子: \begin{tabular}[t]{lll} \hline column1 & column2 & column3 \\ \hline item1 & item2 & item3 \\ itemA & itemB & itemC \\ \hline \end{tabular} 其中[t]表示top, 也可以用b(bottom)或是c(center), 这要在前后有文字相并排的时候才会显现 出作用来, 一般见到的也较少; {lll} 中的lll是指定各列的对齐方式, l(left)左对齐, r(right)右对 齐, c(center)居中对齐. 在 {lll} 中加上bar(|)会画上纵线. \hline 表示在当前位置画一条横 线, \hline\hline 即两条横线. tabular中还有一些其它的栏位调整命令(不常用的命令并没有细讲): 1. p{宽度}: 这里的p指的是段落, 通常用于一小段文字, 指定宽度之后文字会自动换行, 并 且是左对齐, 文字对齐于首行; 2. @{文字, 符号或指令}: 可以用于各列, 让它们都出现某个文字, 符号或都在某个指令作 用下. 如果为空, 则会消除两列之间的间距, 通常用在首尾列, 让文字与表格切齐; 3. \cline{a-b}: 画某一部分的横线, 如\cline{2-3} 即画第二列到第三列的横线; 4. \arrayrulewidth=宽度: 调整表格线条的粗细; 3 5. \tabcolsep=单位长度: 调整两列之间的左右间距, 请住意, 这个值是两列间距值的一 半, 预设是6pt, 使用 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 \tabcolsep=4pt 或是 \setlength{\tabcolsep}{4pt} 都可以; 6. \doublerulesep=单位长度: 调整画双线时, 两线间的间距; 7. \arraystretch: 调整上下行距, 注意, 这个要是\renewcommand 来重设, 而且它是一个 倍数, 不过, 一般这个在cls文件里都定义好了, 不需要要改动, 有些作者若是修改了这个 值, 将其注释掉即可. 1.1.2 Publication Quality Tables—booktabs宏包 一般的学术期刊都会要求使用三线表, 三线表的首尾两条线会粗一些, 标题行后面 有一条横线, 并且通常不会使用竖线, 要生成这样的表格, 可以使用booktabs宏包的命令, \toprule, \midrule, \bottomrule, 还有与\cline 对应的\cmidrule, 从各自的名称就可以 看出相应的用法, 比较容易. 但这里想要说一下, \cmidrule[](){a-b}, 方括号内指定的是与下一行的间 距, 一般也用不着, 这里要说的是()内的参数, 指定trim掉的 {a-b} 两边的线长, 借一个宏包说 明文档里的例子: (lr{.75em}) gives you a default left trim and exactly 0.75 em right trim. 其 实作用有点类似@{}, 只不过是对 {a-b} 部分的线起作用. 1.1.3 合并行列 1. \multicolumn{要合并的列数}{列对齐方式}{文字内容} 合并多列, 列对齐方式与表格的一样(l c r)看个例子就明白了: \multicolumn{2}{c}{Text here} 合并两列, 合并之后居中对齐. 要注意的是, 合并后的首尾列也要记得加上@{} 切齐文 字; 2. \multirow{nrows}[bigstruts]{width}[fixup]{text}, 该命令记得要加载multirow宏 包: • nrows: 要合并的列数, 负数则向上合并; • bigstructs: 不常用, 详细说明可以见宏包文档; • width: 指定文字长度, *表示文本自然长度; 用时, 如果指定了长度, 则可以在 multirow里面用\\ 对文字分行; • fixup: is a length used for fine tuning: the text will be raised (or lowered, if fixup is negative) by that length above (below ) wherever it would otherwise have gone. 在表格标题行中合并多行时, 由于使用booktabs的命令会给表格增加额外的间距, 可以使用该命令微调一下. • text: 文字内容; 3. 如果用时既要合并行, 又要合并列的话, 记得合并行在内, 合并列在外, 例如: \begin{tabular}{@{}l c c@{}} \toprule 4 \multicolumn{2}{@{}l}{column1 and 2} & column3 \\ \midrule \multicolumn{2}{@{}c}{\multirow{2}{*}{item1,2 and item A,B}} & item3 \\ & & itemC \\ \bottomrule \end{tabular} 效果则如下图: column1 and 2 column3 item1,2 and item A,B item3itemC 4. 如果有兴趣,也可以看一下makecell宏包文档,里面有介绍相应的用于单元格换行及设 置行高等的命令。尤其是在单元格又要合并行又要合并列,同时还行换行的情况,可 以看一下这个宏包。 1.1.4 单元内换行 之后介绍过的p{} 在指定宽度之后可以使表格自动换行, 但是表格内容是左对齐的, 大部 分情况下并不能满足我们的需求. 表格内换行, 常用的方法有两种: 1. 自定义新命令: \newcommand{\tabincell}[1]{\begin{tabular}{c} #1 \end{tabular}} 其实就是放了一个小表格在里面, 并且居中对齐; 其它对齐方式修改c为l, r即可, 或者定 义时使用两个参数: \newcommand{\tabincell}[2]{\begin{tabular}{#1}#2\end{tabular}} 则\tabincell{r}{text \\ new text} 则将文本内容右对齐. 2. 重新定义一个可以指定宽度的列对齐方式 (注意这里要加载array宏包): \usepackage{array} . . . \newcommand{\PreserveBackslash}[1]{\let\temp=\\#1\let\\=\temp} \newcolumntype{C}[1]{>{\PreserveBackslash\centering}p{#1}} \newcolumntype{R}[1]{>{\PreserveBackslash\raggedleft}p{#1}} \newcolumntype{L}[1]{>{\PreserveBackslash\raggedright}p{#1}} 这样重新定义了三个列表齐方式, 使用的时候, 指定宽度并可以左, 中, 右对齐; 参数用 的是p{#1}, 这样垂直方向是与首行对齐, 如果要与单元格内文本中间垂直对齐, 改成 m{#1} 即可. 用法例如: \begin{tabular}{L{2cm} C{2.5cm} R{3cm}} \end{tabular} 5 这样, 表格总共有三列, 第一列宽度2cm, 左对齐; 第二列宽度2.5cm, 居中对齐; 第三列宽 度3cm, 右对齐. 1.2 小数点对齐—dcolumn宏包 LATEX 中实现小数点对齐主要就是通过dcolumn宏包, 宏包中定义了一个新的列对齐方式: D{}{}{} • : 是在.tex源文件中, 录入的时候用的小数点分隔符, 必须是single character, 一般为“.”或“,”; • : 输出时生成的小数点分隔符, 可以与第一个参数相同, 也可以是任意的 math-mode expression; • : 指定最大小数点位数, 实际上dcolumn将单元格右对齐, 这个 decimal place就是离右边的距离; 若为负数则小数点居中对齐; 关于 decimal place, 在v1.03中引入了一个新的用法, 可以同时指定左右两边的decimal place. 比如: D{.}{.}{5.1} 表示离左边5个小数点位置, 离右边一个小数点的位置. • 若要使用加粗的小数点对齐方式, dcolumn中提供了范例: \makeatletter \newcolumntype{E}[3]{>{\boldmath\DC@{#1}{#2}{#3}}c<{\DC@end}} \makeatother 使用时把D换成E就可以了(含@的命令是宏包专用命令, 若要在普通文档中使用, 就必须 放在\makeatletter 和\makeatother 之间). 就像之前的懒人方法一样, dcolumn定义的命令, 三个参数太长了, 可以定义一个短一点 的: \newcolumntype{d}[1]{D{.}{.}{#1}} 这个的话, 在小数点输入输出都是“.”的时候会方便很多. 1.3 表格跨页—longtable宏包 longtable设置跨页表格的话,可以自动生成表头,并根据当前位置调整,比较方便;要 注意,在有合并单元格的时候,longtable最少要跑两遍,生成的表格才会正常。 讲起来比较困难,直接看例子吧: \begin{table}[H] \centering \caption{This is the caption of the main table.\lable{tab:test}} \begin{tabular}{@{} l c @{}} \toprule First Title & Second Title \\ \midrule A & B \\ C & D \\ E & F \\ \bottomrule \end{tabular} 6 \end{table} 将其变成可以跨页的表格,首先把table环境去掉,centering也不要,因为longtable本身表格 默认是居中的: \begin{longtable}{@{} l c @{}} \caption{This is the caption of the main table.\lable{tab:test}} \\ % 注意,这两个反斜杠一定要有,不然会出错的 \toprule First Title & Second Title \\ \midrule \endfirsthead %前三行为首个表的表头 \caption{\textit{Cont}.\lable{tab:test}} \\ %续表的标题不一样 \toprule First Title & Second Title \\ \midrule \endhead % 这三行是除首个表外的表头 \bottomrule \endfoot % 表的底部都会出现的部分 A & B \\ %正常表格的正文 C & D \\ E & F \\ \end{longtable} 注意,longtable还有一个\endlastfoot, 当最后一个table的foot与其它表不一样时使用这个 命令。 同时,longtable环境,默认情况下会在表格前后(\LTpre 和\LTpost)加上glue, 距离均 为\bigskipamount,而期刊的table前后间距都已经有了,因此这个距离通常情况下都是要 去掉的: \setlength{\LTpre}{0pt} \setlength{\LTpost}{0pt} 1.4 表格注解 表格注解,较为“宏包”的用法就是用ctable;懒一点的做法则直接把文字放到表格下 面,把字号弄小一点就可以了。 1.4.1 ctable ctable直接使用一个命令来生成table, 包含一个可选参数和三个必选参数: \ctable[options] % key=value ,... {coldefs} % 表格列对齐方式, l, c, r {foottable} % zero or more \tnote commands {table rows} % 表格正文部分 [options]部分主要是放置对齐选项,标题,标题设置等方面。 第三个参数放置note,要注意,\tnote 只能用于table正文,在caption用要加上note的 话,使用\tmark,然后在该位置用\tnote{note text} 加上note。 比较懒,下面是直接从宏包里粘出来的例子(ctable文档,page 5) 7 \ctable[ cap = The Skewing Angles, caption = The Skewing Angles ($\beta$) for $\fam0 Mu(H)+X_2$ and $\fam0 Mu(H)+HX$~\tmark, label = nowidth, pos = h ]{rlcc} {%表格注解部分 \tnote{for the abstraction reaction, $\fam0 Mu+HX \rightarrow MuH+X$.} \tnote[b]{1 degree${} = \pi/180$ radians.} \tnote[c]{this is a particularly long note, showing that footnotes are set in raggedright mode as we don't like hyphenation in table footnotes.} } {%表格正文 \FL & & $\fam0 H(Mu)+F_2$ & $\fam0 H(Mu)+Cl_2$ \ML &$\beta$(H) & $80.9^\circ$\tmark[b] & $83.2^\circ$ \NN &$\beta$(Mu) & $86.7^\circ$ & $87.7^\circ$ \LL } 1.4.2 简单做法 简单一点的做法就是直接在现成的表格后面再放一个表格,并且设置列宽为两边缩进 0.39in(即\textwidth-0.68in,如果是单行的话,直接居中就可以了),表格正文的上标则 使用\textsuperscript{a} 这样形式加上,用第7页的例子稍微改一下: \begin{table}[H] \centering \begin{tabular}{@{} l c@{}} \toprule First Title & Second Title \\ \midrule A~\textsuperscript{a} & B \\ C & D \\ E & F~\textsuperscript{b} \\ \bottomrule \end{tabular} \begin{tabular}{@{}cc@{}} %用于放置注解的表格 \multicolumn{1}{p{\textwidth -.68in}}{\small long long long long long long long long long long long long long long long long long long table note.} \end{tabular} \end{table} 可以看一下效果: 8 First Title Second Title A a B C D E F b long long long long long long long long long long long long long long long long long long table note. 1.5 figure, subfigure 1.5.1 figure跨页 关于figure的浮动问题,可以看第3页讲的使用float宏包的介绍。 figure的跨页要比table跨页简单多了,不过要手动给分页;所谓的跨页也只是共享一个 figure的编号(当然还有相应的label),这里要用到caption宏包的\ContinuedFloat,用于共 享前一个figure环境的编号: \begin{figure}[H] \centering \includegraphics[width=.6\textwidth]{example1.pdf} \caption{The caption of the figure.\label{fig:ex}} \end{figure} \begin{figure}[H]\ContinuedFloat \centering \includegraphics[width=.6\textwidth]{example2.pdf} \caption{\textit{Cont}.\label{fig:ex}}%这里标题是不一样的 \end{figure} 不过,一般做跨页的figure都是有subfigure的,直接用上面的例子的话,continued的figure中 的子图是重新从0开始计数的,这时,需要重设一下subfigure计数器的值,在continued的那 个figure环境中加上: \setcounter{subfigure}{} 1.5.2 subfigure的编号设置 期刊要求的subfigure编号格式是括号不粗,里面粗,如果作者使用的是subfigure宏包的 话,直接用下面的命令就可以达到这个目的了: \makeatletter \renewcommand{\@thesubfigure}{\normalsize(\textbf{\alph{subfigure}})} \makeatother 将其放在导言区即可,同时,该命令并不影响 \ref 引用产生的编号格式,换句话说,如果 使用Figure~\ref{fig:ex1} 进行引用,生成的是Figure 1(a)而不是Figure 1(a). subfig宏包是subfigure宏包的升级版,按说设置方面应该方便一些,不过subfig宏包文档 60多页,到现在也没耐心看完,一般看到使用subfig的,都是直接用subfigure换掉。 9 2 列表及引文 2.1 itemize, enumerate及description 一般常见的罗列环境是itemize, enumerate, description; itemize是项目式罗列环境, 一 级列表的项目符号是bullet; enumerate则是列举式条列环境, 一级列表的项目符号是arabic number; description是叙述式条列环境, 使用简短的文字作为项目开头. 这三个环境都可以分别设定, 不过这里推荐使用enumitem宏包作统一的设置: \setenumerate{parsep=0pt,itemsep=0pt,leftmargin=.4in} \setitemize{parsep=0pt,itemsep=0pt,leftmargin=.4in} \setdescription{parsep=0pt,itemsep=0pt,leftmargin=.4in} 如果项目符号比较长, 可以把leftmargin放长一些. 2.2 Break enumerate 有的时候会需要在条列环境中插入一段话, 作些解释说明, 稍后再恢复条列环境, 这种用 法比较少见, 方法是使用mdwlist宏包. \begin{enumerate} \item This is an item. \item This is another. \suspend{enumerate} %- - suspend - - Some more commentry text. \resume{enumerate} % - - resume - - \item Another item. \end{enumerate} 效果如下: 1. This is an item. 2. This is another. Some more commentry text. 3. Another item. 2.3 quote引文 当引用别人的话时, 多半会用一个quote环境, 将该段话单独列出, 不过, LATEX 默认的 quote环境可能不大适合期刊要求, 这里将其修改为左右均缩进0.2in, 首行不缩进, 字体为 italic, 将整个quote环境重新定义: \renewenvironment{quote}{\begin{list}{} {\setlength{\leftmargin}{.2in} \setlength{\rightmargin}{\leftmargin} \setlength{\itemsep}{0pt} \setlength{\parsep}{0pt}} \itshape\item[]} {\end{list}} 10 3 图形处理—eps, jpg, pdf… 这里要先提醒一下, 若使用CTEX 套装, 它的pdflatex只能处理pdf, jpg, png的图, 不能处 理eps的图; 而latex只能处理eps的图, 因此, 如果一篇文档中既有eps又有jpg的话, 在CTEX 处 理起来就会有点麻烦了, 要么把图都转成eps, 要么都转成pdflatex能处理的. TEXLive套装下的pdflatex倒是可以直接处理eps的图, 它会将图自动转化成pdf格式, 但是 这种处理方式生成的图是一种“on the fly”的状态的, 由于没有使用 规范 编程规范下载gsp规范下载钢格栅规范下载警徽规范下载建设厅规范下载 的latex-dvipdfm, 有些 时候仍会出问题. 3.1 Bounding box EPS格式(Encapsulated PostScript, PostScript语言的子集)图片, 是 LATEX 中支持最好的 图片格式. LATEX 通过读取EPS文件中的BoundingBox行来决定为EPS图形保留多大的空间, 当然, 如果在图形插入命令中给定了BoundingBox的值, LATEX 将不会从EPS文件读取它的 BoundingBox行. 一般地, PostScript文件的第一行是标明该文件的类型, 接下来的几行是被称为 Header或 preamble的注释行, 这些注释中的一行就定义了BoundingBox. BoundingBox这一行有四个参 数, 分别代表左下角的x坐标, 左下角的y坐标, 右上角的x坐标, 右上角的y坐标. 下面是一个 由gnuplot生成的EPS文件的前六行: %!PS-Adobe -2.0 %%Title: sin.eps %%Creator: gnuplot 4.6 patchlevel 0 %%CreationDate: Thu Mar 22 17:13:26 2012 %%DocumentFonts: (atend) %%BoundingBox: 50 50 554 770 这个EPS图形左下角的坐标是(50,50), 右上角的坐标是(554,770). 坐标单位是PostScript point(=1/72 in). 一般在引入图形时, 可以通过修改BoundingBox来控制图形显示的部分, 使用的是 nincludegraphics中的参数bb: \includegraphics[bb=50 50 500 700, width=.8\textwidth]{fig1.eps} 不过手动定位BoundingBox还是很麻烦的, 因此一般也不使用这个选项, 但它在EPS文件中的 BoundingBox丢失或出错时还是很有用的. 也可以通过指定各边需要裁掉的长度, 这时使用trim选项, 它同样有四个参数, 分别为左, 下, 右, 上四个方向切掉的长度, 注意, 要同时使用clip选项, 阻止显示示图以外的图形部分, 下 例将图形的上方切掉50pt: \includegraphics[trim=0 0 0 50, clip, width=.8\textwidth]{fig1.eps} 非EPS的图形会阻碍 LATEX 获取图形大小的信息, 这时, 可能需要手动给非EPS图形 加上一个BoundingBox文件. dvipdfm下有一个小工具—ebb, 可用于计算非EPS图形文件的 BoundingBox, 例如一个fig1.jpg(路径在F:\figure\)的文件, 在windows中运行cmd, 调出命令 行: cd /d F:\figure 将路径指向到图形所在文件夹% 11 ebb fig1.jpg 这样就会生成一个fig1.bb的BoundingBox文件. 关于插图的更多信息, 可以看王磊所写的“LATEX2"插图指南”. 3.2 裁剪EPS图 使用pdflatex运行文件, 要比latex-dvipdfm要快许多(第一次运行生成pdf图时除外), 这 样也会比较有利于处理稿件的速度. 而且, eps图的白边其实很不好弄, 目前在windows下还 没找到合适的裁剪eps图的工具, 多半的作法都是使用它的BoundingBox. 不过说实话, 定位 BoundingBox也是一个麻烦事, 最近找到一种算是间接裁图的方法, 虽然有点曲折, 也算是达 成目的了. 1. 将eps图都转成pdf格式, 可以利用epstopdf工具, 假设图片仍在F:\figure\ 里: cd /d F:\figure 将路径指向到图形所在文件夹% epstopdf fig1.eps 处理单张图片时% for %1 in (*.eps) do epstopdf %1 第二行是处理单张图片时的用法, 每三行则是一个windows下的批处理命令, 对文件夹中 的每一个eps文件执行第二行的命令. 2. 再利用pdfcrop切掉图形的白边, 直接使用pdfcrop的话, 会在生成的pdf文件后加上-crop 字样. 由于我们只要原文件名即可, 因此, 在该文件夹下新建一个crop文件夹, 用于保存 裁剪好的pdf: pdfcrop fig1.pdf 处理单张图片时% for %1 in (*.pdf) do pdfcrop --margin "0.5" %1 crop/%1 第二行同样是一个批处理, 这里用了pdfcrop的一个margin参数, 指定留白的部分, “left top right bottom”, 单位为bp, 如果只有一个参数, 则用于四边的margin. 因为有些图的 边线太细了, 如果不带margin参数的话, 最后的图可能要放大到一定程度才能看见边线. 3. 将crop文件夹的pdf图放到F:\figure\ 下(事实上, 到这一步时, 把.tex文档中的图形后 缀去掉, 已经可以直接用pdflatex快速运行文档了), 覆盖掉未处理过的pdf图, 同时把eps 图删掉(或者放到别的文件夹里), 不然同样会被覆盖掉: %pdftops -eps fig1.pdf 转化单张图片时% for %1 in (*.pdf) do pdftops -eps %1 pdftops的-eps参数指明生成的是eps图. 最终生成的eps图, 有些可能比原eps图还大, 不过没有关系, LATEX 导入eps图与文件大小 没有很大关系, 最终用latex-dvipdfm运行出来的文档通常都不会很大. 正如前面所说, pdflatex处理文档时, 运行速度会快很多, 不过, 裁剪掉的白边其实还在, 所以, 用pdflatex运行出的文件, 都会比latex-dvipdfm出来的大得多. 因此, 这里pdf图只是用 于编辑稿件时用, 如果是最后发表, 还是用回latex-dvipdfm的好. 12 4 一些要注意的宏包问题 4.1 subfigure正文使用nref引用编号出错 subfigure 宏包有一个问题, 不知道算不算是bug (table和figure的效果完全一样): \begin{table}[H] \centering \caption{The caption of the table} \subtable[subcaption one]{% \fbox{\color{white}\rule{3cm}{2cm}}\label{tab:comp1}} \subtable[subcaption two]{% \fbox{\color{white}\rule{3cm}{2cm}}\label{tab:comp2}} \end{table} 上面的这段代码, 如果引用ref{tab:comp1}, 正常的话它应该是出现为Figure 1(a) (这里假设它是第一张图), 但是实际上, 运行结果是Figure 2(a), 虽然仍然可以跳转到正 确的位置, 但是, 这并不是我们想要的; 解决的方法很简单, 只要把ncaption移到最后一个nsubfigure后面就行, 原因不明. 4.2 amsthm与amsmath顺序问题 在amsthm的宏包manual里面, 提到一句话: If the amsthm package is used with a non-AMS document class and with the amsmath package, amsthm must be loaded after amsmath, not before. 否则, 会出现类似下面这样的错误(一开始不懂这个, 仍记得当初每次一看到 amsthm 就把它改成 ntheorem 惨痛经历): ! Paragraph ended before \@tempa was complete. \par l.396 \newenvironment{proof}[1][\proofname]{\par 4.3 amsmath的subequations前后间距 像下面这样的一段公式: \begin{subequations} \begin{align} x+y & = 2 \\ f(x) & = exp^{2\alpha+1} \end{align} \label{eq:test} \end{subequations} 放在一个.tex文件中运行, 上下均没有空行的情况下, 下一段却缩进了一个字符, 这里因为 subequations环境并没有消除\label{eq:test} 后面的空白(好像是这么说的), 解决方法是 在\label{eq:test} 后面加上一注释符号%注释掉后面的空白, 或者是将\label{eq:test} 13 放到\begin{subequations} 的后面就可以了. 同时, subequations环境和align(或其它数 学环境之间)也不要留空行. 4.4 algorithm2e宏包问题 事实上,这个宏包在TEXLive2011中没有什么问题,不过,因为编辑部里有好多人用的 是CTEX 套装,里面的algorithm2e的宏包有些旧了。有些作者如果用这个宏包的话,会提示 Undefined Control Sequence之类的问题,就是该宏包的最新版本中有一些新的命令,因 此,用旧版宏包的话会出问题,在这里提出来一下。 4.5 quotes宏包与hyphenat冲突问题 在某些文章里会有这个问题, 当然, 也有可能是新cls文件的问题。因为也只遇到过一 次,只是在这里提提醒一下。 5 其他一些不常见但又会见到的问题 5.1 四级标题 LATEX 中并没有subsubsubsection, 在subsubsection 下面就是\paragraph 了. 要使用 四级标题话, 可以将\paragraph 重新定义一下: \makeatletter \renewcommand{\paragraph}{\@startsection{paragraph}{4}{0ex}% {6pt}% {6pt}% {\normalfont\rmfamily}} \makeatother \stepcounter{secnumdepth} %设置编号深度到命令paragraph 5.2 在caption里面换行以及添加脚注 \caption 属于一个脆弱命令, 如果在caption里使用\linebreak 或是\footnote, 会 报错: ! Argument of \@caption has an extra }. \par 解决的方法是使用在前面加上\protect, 变成: \protect\linebreak 或者 \protect\footnote 5.3 给multicol指定两边的margin 使用adjmulticol宏包提供的adjmulticols环境,它有三个参数,第一个是栏数,第二 个为左边距,第三个参数为右边距(因为期刊是单面的): 14 \begin{adjmulticols}{col-num}{inner-margin}{outer-margin} \end{adjmulticols} 看一个例子: \begin{adjmulticols}{2}{.39in}{.39in}\centering \begin{tabbing} Format year \= volume page---All \\ Format year \> volume page---All \\ Format year \> volume page---All \\ Format year \> volume page---All \\ Format year \> volume page---All \\ Format year \> volume page---All \\ Format year \> volume page---All \\ Format year \> volume page---All \\ \end{tabbing} \end{adjmulticols} 6 Tips and Tricks 1. 浮动环境(figure, table, algorithm, etc.)尽量使用[H]位置指定, 以免它们出现 在段落中间; 2. 在使用居中时, 在figure和table环境中尽量不要用center环境, 该环境其实是一个平 凡列表(trivlist), 使用时会加上列表本身的前后间距, 直接使用\centering 就可以 了. 7 寻求帮助 事实上, 一般的 LATEX 发行套装中都带有大量的帮助文档, 尤其是宏包文档, 是最为官 方的解释, 毕竟, 如此大量的宏包, 加上开源软件本身更新就很快, 要全部掌握它们的用 法, 几乎是不可能的. 因此, 如何快速地查找帮助信息也是很重要的方面。 1. 宏包文档:在windows系统下需要使用命令行,按下win(windows徽标键,左手带圈的 那个)+R,调出“运行”对话框,输入cmd, 就是windows下面的命令行了。 比如,要查找longtable的宏包文档,输入: texdoc longtable 取决于电脑的配置,一般1 s之内就会弹出longtable的pdf文档了。 稍微解释一下texdoc的用法: texdoc
本文档为【LaTeX编辑散记】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_506848
暂无简介~
格式:pdf
大小:275KB
软件:PDF阅读器
页数:18
分类:互联网
上传时间:2012-05-15
浏览量:103