在写论文的过程中,我们通常心情烦躁,以至于非常不愿意为了排版而耗费精力查资料,更糟糕的是,网上有些解决方案存在各种bug。
延续上次《Part I》的内容,希望能够为大家提供快捷可靠的解决方案。
(目录略有更改)
摘要:
本文主要介绍了作者在写(shui)论文过程中使用的生产力工具和一些常见问题的解决方案。读者可根据自身需要选择有帮助的内容进行阅读,或收藏以便后续查阅。如果读者发现本文毫无帮助,很正常,因为作者也很菜。
目录:
规避语法错误
使用语料库
TexStudio语法检查插件
快速公式搬运
Word公式与LaTeX互转
MathType与LaTeX互转
LaTeX排版
表格划分
图片排布
Word排版
自定义EndNote输出格式
脚注参考文献异常←新增项目
公式居中+编号右对齐
Matlab与排版
实现多组图例
会议论文字体嵌入问题
显示LaTeX公式←新增项目
III LaTeX排版
B. 图片排布
根据具体的情况我们需要不同的图片排布,这里总结三种最常见的情况,并附上代码以供直接取用:
1. 子图竖排(n×1) 2. 子图横排(1×n) 3. 多图横排 (不要问我为什么不介绍多图竖排,动动脑啊亲) 熟悉了这三种情况,最后我们总结原理,推广至2×2甚至不同行有不同图片数的情况。情况1:子图竖排
图12: 子图竖排结果
图12给出了2张子图竖排的结果,排版代码如图13所示。
图13: 子图竖排代码
细节说明:
这里子图说明命令\subcaption{}放空不是必须的,如果宁所投刊物允许对每个子图进行说明,则里面可以填写相应的内容,这里放空的结果是每个子图下方除了标识“(a)”以外,没有其他内容。
{minipage}环境后的参数是排版的关键,它代表了我们为图片提供的框架在宽度上占页面的可用总宽度的比例。通常子图竖排是针对双栏期刊,我们只排在一边,因此图13中设置“子图框架占文档宽度比例”是略小于0.5的,即略小于页面宽度的一半。如果宁是单栏模板或者通过把最外层环境改为{figure*}使得整个{figure}环境横跨双栏,那么“子图框架占文档宽度比例”可以设置为0.99这样接近1的数。
如果宁希望实现三张子图竖排,只需要再复制一段{minipage}环境即可。
直取直用:
\usepackage{graphicx}\usepackage{epstopdf}\usepackage{subcaption}%以上宏包在后文中不再重复\begin{figure}[htp] \centering \begin{minipage}[t]{0.49\textwidth} \centering \includegraphics[scale=0.17]{HPMT.eps} \subcaption{} \end{minipage} \begin{minipage}[t]{0.49\textwidth} \centering \includegraphics[scale=0.14]{DMT.eps} \subcaption{} \end{minipage} \caption{My bro: (a) House pearl milk tea, (b) Dirty milk tea.} \label{Full sugar and less ice, please} \end{figure}
情况2:子图横排
图14: 子图横排结果
图14给出了3张子图横排的结果,排版代码如图15所示。
图15: 子图横排代码
细节说明:
把竖排变成横排的方法就是修改{minipage}的宽度,使得各个{minipage}足够苗条。
这里由于我是双栏模板,为横跨整个页面把3张子图摆放在同一行,需改最外层环境为{figure*}。此时三张图每张可以分得1/3=0.3333的框架比例,因此我都设置为0.33。如果使用的是{figure}环境,即将3张子图放在双栏中的一栏中,那么各子图的框架比例应当设置为小于0.5/3=0.1666的值。
直取直用:
\begin{figure*}[htp] \begin{minipage}[t]{0.33\linewidth} \centering \includegraphics[scale=0.17]{HPMT.eps} \subcaption{} \end{minipage} \begin{minipage}[t]{0.33\linewidth} \centering \includegraphics[scale=0.14]{DMT.eps} \subcaption{} \end{minipage} \begin{minipage}[t]{0.33\linewidth} \centering \includegraphics[scale=0.17]{PMF.eps} \subcaption{} \end{minipage} \caption{My bro: (a) House pearl milk tea, (b) Dirty milk tea, (c) Panda Milk Foam.} \label{Full sugar and less ice, please}\end{figure*}
情况3:多图横排
图16: 多图横排结果
图16给出了3张相互独立的图片横排的结果,排版代码如图17所示。
图17: 多图横排代码
细节说明:
由于作者也不知道的原因,这里虽然图片也是3张,但是如果框架比例都设置为0.33,第三张图会被挤到第二行。
同样是一行三张图,由子图改为独立图片,只需要将每个{minipage}环境中的\subcaption{}改为\caption{},并去掉总的\caption{}命令。
直取直用:
\begin{figure*}[htp] \centering \begin{minipage}[t]{0.325\textwidth} \centering \includegraphics[scale=0.17]{HPMT.eps} \caption{House pearl milk tea.} \label{HPMT} \end{minipage} \begin{minipage}[t]{0.325\textwidth} \centering \includegraphics[scale=0.14]{DMT.eps} \caption{Dirty milk tea.} \label{DMT} \end{minipage} \begin{minipage}[t]{0.325\textwidth} \centering \includegraphics[scale=0.17]{PMF.eps} \caption{Panda Milk Foam.} \label{PMF} \end{minipage}\end{figure*}
总结:
多个{minipage}环境,塞不下时会换行,塞得下时会在同一行。基于这一原理,可以实现2×2,3×3等等花样排版,甚至不同行可以有不同图片数。例如,如果我们要在双栏模板中的一栏实现第一行2张子图,第二行1张子图,共3张子图,那么前两个{minipage}的宽度的和应该小于0.5,而第三个{minipage}可以达到0.5(半张纸)。
IV Word排版
A. 自定义EndNote输出格式
EndNote自带了许多参考文献的输出格式(output style),不巧的是我们总能发现期刊的需求和其中一个格式很像,但又略有不同。比如:引用处是上标还是正常字体,文献列表中不同信息的显示顺序,会议名前面要不要加“Proc.”。其实,只需要简单修改现有输出格式设置,并将其保存为新的输出格式,就可以实现我们的需要。
步骤:
a.在主界面选择一个与我们的需求较为吻合的输出格式。
b.在主菜单选择Edit-Output Styles-Edit"IEEE"(由于上图中选择的是IEEE,所以这里是IEEE)。
c.根据需要完成修改后(随后详细介绍),在主菜单选择"File-Close Style",随后会自动弹出窗口让宁保存新的输出格式。
d.在word中选用宁修改好的输出格式,开始享受科技的力量。
举例说明:假设我们想要修改IEEE模板,使得参考文献列表中,Conference Proceedings类文献的会议名前面的"in"变为"Proc.",同时去掉会议的举办年份,同时我们想把出版社地点放在最后。(我就是奇怪的甲方爸爸)
步骤:
a.在前面打开修改界面的基础上,在Bibligography一栏中选择Templates。
b.找到Conference Proceedings这一类,将
修改为
B. 脚注参考文献异常
在Word中使用EndNote在脚注位置插入参考文献时,很多EndNote自带输出格式除了在文档末尾正常输出一个条目,在引用位置也输出了一个条目,如图18所示。(显然这不是甲方爸爸想看到的)
图18: 脚注参考文献异常
解决方案:参照上文IV-A中给出的方法,打开输出格式修改界面,在"Footnotes-Templates"中将"Format citations in footnotes"设置为"Same as citations",保存并使用修改后的输出格式。
C. 公式居中+编号右对齐
图19: 应用"MTDisplayEquation"样式
如图19所示,通常我们希望行间公式居中,编号靠右对齐,如果宁使用MathType编辑公式,简单几步即可实现:
a. 按下"Alt+Ctrl+Shift+S"(放心,按下去电脑不会爆炸)
b. 鼠标移动到"MTDisplayEquation",打开下拉菜单,选择添加到样式库(如果当前样式库中已有该样式,则a和b两步可跳过)
c. 单击MathType公式所在行,在开始菜单的样式库中选择样式"MT Display Equation"(图19)
d. 在公式前敲下Tag,在公式后(编号前)再敲下Tag
然而,如果宁使用Word自带公式编辑器,上述方法就不靠谱了,因为当Word公式作为行间公式时,同行不可以有其他字符,但这也有解决方案,如图20所示,我们画一个1×3的表格,在表格中间放公式,右边放编号(可以结合插入题注功能实现自动编号),再把表格边框设置为白色即可。
图20: 将公式与编号放入表格
V Matlab与排版
(作者不会用Python)
A. 实现多组图例
有的时候曲线很多以至于图例很多,如果按照传统方法生成图例,必然会挡住曲线,因此我们想达到图21所示的效果。
图21: 多图例示例
实现代码如图22所示。需要注意的是,该代码生成的三组图例会叠加在一起,需要通过“编辑-图形属性”手动拖动把不同图例组分开,或在生成图例的时候就使用“Location/Position”指令调整各组图例位置。
图22: 代码实现多组图例
直取直用:
L1=legend([pp1,pp2,pp3,pp4],'NC','CR,\lambda_g=1','CR,\lambda_g=0.5','CR,\lambda_g=0.1');set(gca,'Fontsize',12)set(L1,'Fontsize',12)ah=axes('position',get(gca,'position'),'visible','off');L2=legend(ah,[qq1,qq2,qq3],'IR,\lambda_g=1','IR,\lambda_g=0.5','IR,\lambda_g=0.1');set(L2,'Fontsize',12)ah=axes('position',get(gca,'position'),'visible','off');L3=legend(ah,[qq4,qq5,qq6],'BC,\lambda_g=1','BC,\lambda_g=0.5','BC,\lambda_g=0.1');set(L3,'Fontsize',12)
B. 会议论文字体嵌入问题
Matlab生成的eps格式图片包含Helvetica字体,在用LaTeX生成PDF文档时该字体不会自动嵌入到PDF文档中,而一些会议论文的接收系统要求PDF文档嵌入所有字体。
网传一种解决方案是用虚拟打印输出,但是打印输出会导致页边距改变,在一些情况下还会导致色彩变淡。这里推荐一种解决方案:用UltraEdit或其它文本编辑软件打开eps图片,搜索Helvetica并全部替换为Arial,然后以修改后的eps图片为基础,用LaTeX编辑器重新生成PDF文档。
C. 显示LaTeX公式
我们倒回去看图21,可以看到图中"\lambda_g"显示出来不太好看,一点都没有Nature的水准,其实Matlab自带LaTeX解释器,对各种关于字符的对象都适用,如横轴xlabel(),纵轴ylable(),图例legend()等。可以通过set(handle,'Interpreter','latex')实现,其中handle为对象的句柄,效果如图23所示。
图23: 经由LaTeX解释器生成的图例
然而,这个方法有一个bug,就是生成的字符的颜色偏淡,有知道解决方案的小伙伴欢迎在文末留言。
怕什么真理无穷,进一寸有一寸的欢喜。即使开了一辆老掉牙的破车,只要在前行就好,偶尔吹点小风,这就是幸福。
——胡适