写论文时有哪些格式和绘图上的奇思技巧?(二)


接上一期的未完待续

4. 插入公式

介绍一个小插件,可能有很多人都开始用了,就是 Aurora。先来说说为什么不用其他的公式编辑器。

Word 自带了公式编辑器,其实 Word 自带的公式编辑器不用鼠标点来点去的选择各种符号,可以通过快捷键来输入各种符号,也可以利用题注给 Word 中的公式添加自动编号以及交叉引用。但是有点麻烦,这是我不推荐 Word 自带公式编辑器其中的一个原因。

MathType 用的人非常多,MathType 支持 LaTeX 的输入方式,自动编号以及交叉引用都比较方便。因为不能定义常用的宏,还不够方便。

其实我不用 Word 自带的公式编辑器或者是 MathType 的最主要的原因就是,这两个产生的公式太丑了。美丑这个东西仁者见仁,我的审美也不是最优秀的,我贴几张对比图,如果感觉 Aurora 产生的公式最漂亮,可以继续往下看,如果感觉差不多,可以跳过这一章。

下图是二次方程求根公式的三种公式编辑器的对比图,好像都还好。

下图是求和公式的三种公式编辑器的对比图,第一个 Sigma 什么鬼,而且前两个 Sigma 两边的间距太宽了。
下图是矩阵的三种公式编辑器的对比图,第一个皱巴巴的感觉,第二个括号和点都有点虚。
Aurora 插入公式也是非常的便捷,整个输入过程都不需要鼠标的参与,省去了右手在鼠标和键盘之间来回奔波。如果你的论文中有大量的重复公式,可以向 Aurora 中添加宏命令来实现快速输入。比如论文中经常出现:x_1,x_2,\cdots,x_n,你可以在 Aurora 的 Package 选项中添加以下宏定义:
作者:Qi Qi
链接:https://www.zhihu.com/question/30521304/answer/48445567
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

以后就可以利用 \xs 快速输入 x_1,x_2,\cdots,x_n 了。如果你还想输入 y_1,y_2,\cdots,y_nz_1,z_2,\cdots,z_n 的话,可以定义一个带参数的宏命令。

\newcommand{\qiqi}[1]{#1_1,#1_2,\cdots,#1_n}

你就可以通过输入 \qiqi{y} 和 \qiqi{z} 来快速输入 y_1,y_2,\cdots,y_nz_1,z_2,\cdots,z_n 了。如果你有时候还想改变上线值 n 的话,可以定义一个带两个参数的宏定义。

\newcommand{\qiqi}[2]{#1_1,#1_2,\cdots,#1_{#2}}

然后你就可以通过输入 \qiqi{a}{100} 来快速输入 a_1,a_2,\cdots,a_{100} 了。

定义宏命令还有一种用途,我在写上一篇文章的时候,有个变量 R,不知道用什么样式。是 R?是 r?还是 \it Risk?其实不用纠结这个,定义一个命令代替这个 R 就好了。

\newcommand{\risk}{\mathscr{R}}

以后如果需要改的话改一下宏命令,全文的 R 都变了,省去了一个一个改的繁琐。普通文本可以以实现类似的功能,详见 9. 符号替换

Aurora 自带个微型的 TeX 系统,原理就是将你输入的公式利用 TeX 进行编译,然后将产生的结果插入到 Word 中。所以你要用 Aurora 输入公式,需要先了解一下 LaTeX 的公式输入。关于这方面的内容可以参见《一份不太简短的 LaTeX 2ε 介绍》中的第三章。

最后说一点,利用 Aurora 编辑的公式,在没装 Aurora 的电脑上是无法编辑的,MathType 也这样。Aurora 产生的公式可以位图,也可以是矢量图。位图的优点就是到哪里看起来都一样,矢量图的优点就是可以无限放大。如果你只在你本机上编辑打印的话,推荐使用矢量图。如果你要发给别人看的话,还是保存成位图比较好,矢量图在没装 Aurora 的电脑上显示不正常。如何修改请看下图:

 

5. 插入图表
如果你需要在文章中插入图表,你至少需要以下 4 中样式:

  • 图标题
  • 表标题

插图的过程就是插入一张图片,然后点击“引用”--“插入题注”。

在弹出的对话框中选择你想要的标签,如果没有你想要的,你可以点击“新建标签”,自己添加一个标签。
然后设置编号的样式,我这里用的是 1.1 这种格式,前面的 1 是章节编号,后面的 1 是图编号。如果你不想要章节编号,就把“包含章节编号”的复选框去掉。最后在设置一下两个数字之间的符合,我用的是句点。
最后点击确定,一个题主就插好了。然后补充这个图的标题,设置好图和图标题的样式,一个图就大功告成了一半了。
但是,这样插图有个问题:前文有可能还要插入别的内容,很可能把这个图挤到页面下方,导致图和图标题分在了两页,就像这样:
\iffalse 这段去掉,方法不正确,而且太蠢了。

为了避免这个问题,我们在正文要插入图片的位置上添加一个 1\times1 的表格。然后去掉表格的边框:

然后设置表格属性,去掉“允许跨页断行”复选框。
最后将图和图标题剪切到表格中即可。

这样,图和图标题就是不可分割的一部分了。

表格的插入与图片类似,短表格不建议分页,最好和图片一样,与表标题一起放在一个 1\times1 的表格中。长表格就不能用这个方法了,因为很有可能出现页面底端由于放不下表格而大面积留白的情况。与图片类似,有可能出现这种情况:

对于这种情况我还没有特别好的解决办法。

最后发发牢骚,Word 一直不支持 LaTeX 中的浮动环境这个功能,也是比较遗憾的,希望以后的版本会支持这个功能。

\fi
% 以下是正确方法。

因为图在图表题上面,所以我们右键点击“图”样式,选择修改。

 
在弹出的对话框中选择“段落”。
点击第二个标签页,将“与下段同页”勾选。然后点击确定即可。

这样图就不会跟图标题分家了。因为表标题在表格上面,我们如法炮制,把“表标题”设置成”与下段同页“即可。

6. 交叉引用
交叉引用对应 LaTeX 的两个命令,一个是 \label{} 一个是 \ref{}。

论文中不会出现“如下图”、“如下表”等描述,因为有时候为了版面匀称,图、表和引用的地方相距甚远,“如下图”、“如下表”只会让人摸不着头脑。所以论文中都是“如图1.1”,“如表3.2”之类的。图表的编号在 5. 插入图表 中介绍过了,这里介绍如何引用这些数字。

已经有了一幅图了,现在要做的就是在光标的地方插入“图1.1”。点击“引用”--“交叉引用”。
在弹出的对话框中选择引用类型,找到我们在上一章中添加的自定义标签“图”。
下方的列表中就出现了刚刚我们插入的那幅图。引用的内容有很多种,这里我们只需要“图1.1”,也就是标签和编号。
点击插入按钮,便在当前光标位置插入了“图1.1”。
这样做的好处是,当图片的序号发生改变的时候,交叉引用的编号也会跟着改变。比如我们在这幅图前面再插入一幅图,那么这幅图的编号就自动的变成 1.2 了。
但是刚刚的引用并没有变化,还是 1.1。这是在该域,即“图1.1”上点击右键,在右键菜单中选择“更新域”。
“图1.1”就变成“图1.2”了。

但是还是有点略麻烦啊,有更简单的办法,按下 Ctrl + A,全选,然后按 F9,更新整个文档的所有的“域”,然后所有的交叉引用就都正常了。

表的引用和图类似,这里不表。说一下公式的引用。这里用 Aurora 进行说明,MathType 操作一样。

公式大体上分为三种,行内公式,行间公式和带编号的行间公式。

在你输入公式前就要决定这个公式的显示方式,如果你打算引用这个公式,就需要使用带编号的行间公式,另外两种公式无法引用。

现在我们有了两个公式,现在需要在箭头处分别插入 (1) 和 (2)。

首先将光标放在要插入编号的位置,然后点击 Aurora 菜单下的 “Insert Reference” 按钮。
光标的位置出现 (*),因为程序还不知道你要引用哪个公式。
双击你要引用的公式的编号,(*) 就变成 (1) 了。
如法炮制另一个。

这时我们删除第一个公式。
公式 (2) 的编号没变,这时候有两种办法,一种是前文介绍的 Ctrl + A 然后按 F9。另一种就是双击任意公式的编号,如上图中红色箭头指的编号。此时 Aurora 会弹出对话框,点击 OK,编号就正常了。
引用的地方全角字符和半角字符之间的空隙太小了,看的极不自然,在 (1) 的两边各添加一个不间断空格(Ctrl + Shift + 空格)就好了。

7. 图表目录
有时需要添加图目录或者表目录,这个和普通的目录插入方法类似,这里简单说一下方法。

把光标放在要插如图目录的地方,然后点击“引用”菜单栏中的目录按钮。

在下拉菜单中选择“自定义目录”。
在弹出的对话框中点击“选项”。
在弹出的对话框中去掉标题对应的数字,因为图目录只有图,其他的都不显示。
 
往下翻翻,找到图标题,然后设置目录级别为 1。
点击确定,关闭对话框。发现打印预览发生了变化,是我们预期的样子。
点击确定,插入图目录。

表目录和图目录一样。

8. 参考文献
我见过人肉排参考文献的人,极其不推荐,增删文献都会对编号造成影响,而且文献的格式也是非常复杂的,人工排参考文献是极其愚蠢的。

Word 本身是可以插入参考文献的,但是功能太弱了,不推荐使用。

插入参考文献前,你首先需要一个个人文献的数据库。如果你还没开始用参考文献管理软件的话,这一章就不用看了。先看看这个吧:诸多文献管理软件的优劣比较如何?你有哪些使用心得?

你用哪种管理软件都无所谓,基本都会提供 Word 插件,以便向 Word 中插入数据库中的文献。我用的是 JabRef。这个管理软件跨平台,支持的数据库的格式为 BibTeX。主流的数据库都支持 BibTeX 文献的导出,方便导入到 JabRef 中。JabRef 还支持文献的批量下载。但是也有很多问题,所以我正在用业余时间开发一个文献管理软件,现在还只是半成品。扯远了……

这里以 JabRef 为例,说明如何向 Word 中插入参考文献。插件使用的是 BibTeX4Word。安装后,Word 的加载项中会多出一些按钮。
第一次使用的时候插件会询问你数据库的路径。

选中你平时维护的数据库即可。

当你想在某处插入参考文献的时候,把光标放在要插入参考文献的地方,然后点击红色的加号。

插件会弹出一个输入框,这里输入的是 BibTeX Key。用 JabRef 的都知道这个东西,如果用其他软件也不要紧,这一步骤是你告诉插件到底要引用数据库中的哪篇文章。BibTeX Key 就是 JabRef 用来标记文献的。
 
填好之后点击确定,然后光标的地方就会多出一个一团乱码一样的东西。

点击插件上的第二个按钮,进行编译。

然后乱码变成了 [1],文章的最后出现了参考文献列表。
作者:Qi Qi
链接:https://www.zhihu.com/question/30521304/answer/48445567
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

9. 符号替换
写作的时候经常会出现这种情况:写作初期有些名称没有定下来,后期很可能要改。比如你文章中提出了一个算法,但是算法名字还没想好,文章中到处需要引用这个名字。与运算是用 & 还是 &&?更是有的时候遇到没节操的甲方,改来改去,改来改去,改来改去,改来改去,改来改去,改来改去……

LaTeX 解决这种问题的思路很简单,定义一个命令就好了,文章继续往下写,以后要改的话重新定义命令就好了。

\newcommand{\myalg}{NIMLE}
\newcommand{\AND}{\&{}}

...

This paper proposed a novel algorithm named \myalg. ...

0xFF \AND 0xEF ...

Word 也可以实现类似的功能。这里介绍一种利用域来实现这种符号定义的方法。关于域的介绍,详见 百度百科_Word域

Word 中有各种各样的域,其中一种域叫做 DOCVARIABLE,语法格式为:

{ DOCVARIABLE sym }

域 DOCVARIABLE 的作用就是把变量 sym 显示出来。举个建国:ICS = "工业控制系统",那么域 DOCVARIABLE 会将所有的 { DOCVARIABLE ICS } 替换成 ”工业控制系统“。

所以在 Word 中实现 LaTeX 中的宏替换功能需要以下几步:
1. 在变量集合 Variables 中添加 ICS,并给其赋值;
2. 按 Ctrl +F9 插入域,手动输入 DOCVARIABLE ICS。

相当的没有效率,被 LaTeX 甩几条街有木有。但是不用担心,Word 自有它的过人之处:VBA。下面介绍一种方法来简化这个过程。

点击菜单中的宏,如下图所示,宏名随便填,然后点击创建,如下图所示。

 
作者:Qi Qi
链接:https://www.zhihu.com/question/30521304/answer/48445567
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

删除代码框中的所有代码,然后将下列代码复制进去。

Sub UpdateVariable()
    ' Clear variables
    For Each Var In ActiveDocument.Variables
        Var.Delete
    Next

    ' Set the file path
    Dim MyFile As Object
    Set MyFile = CreateObject("Scripting.FileSystemObject")
    
    Dim FilePath As String
    FilePath = ActiveDocument.Path & "\Symbols.xlsx"
    
    ' If can't find the file, show error message and exit sub
    If Not MyFile.FileExists(FilePath) = True Then
        MsgBox "Can't find file: Symbols.xlsx", Title:="Error"
        Exit Sub
    End If
    
    ' Read the excel file "Symbols.xlsx"
    Dim ExcelObject As Object
    Set ExcelObject = GetObject(FilePath)
    Set Table = ExcelObject.Sheets(1).UsedRange()
    
    For i = 1 To Table.Rows.Count
        V1 = Table.Cells(i, 1).Text
        V2 = Table.Cells(i, 2).Text
        ActiveDocument.Variables.Add Name:=V1, Value:=V2
    Next
    
    ' Update field
    ActiveDocument.Fields.Update
    
End Sub
Sub InsertSymbol()
    ' Show inputbox
    Symbol = InputBox("Input symbol")
    ' Insert field
    Selection.Fields.Add Range:=Selection.Range, Type:=wdFieldEmpty, _
        PreserveFormatting:=False
    ' Insert parameter
    Selection.TypeText Text:="DOCVARIABLE " & Symbol
    
    ' Update field
    ActiveDocument.Fields.Update
End Sub

如下图所示

这样两个宏就创建好了,为了方便的调用,将这两个宏添加到工具栏中。打开自定义工具栏窗口。找到刚刚新建的两个宏,将他们添加到开始选项卡中(凭个人喜好,爱放哪放哪)。
然后重新设置他们的名字和图标,此步骤可省略,如下图所示。
这样这两个宏就被添加到工具栏中了,如下图所示。
为了配合这两个宏的使用,我们需要一个外部文件来储存各种变量和对应值。这里采用的是 Excel 文件。在当前 Word 文档的所在目录内,新建名为 Symbols.xlsx 文件,必须是这个名字,因为在上面的代码中被写死了,如果你想换个名字,要把这行代码一并改了。

FilePath = ActiveDocument.Path & "\Symbols.xlsx"

然后打开这个 Excel 文件,然后添加你要用到的符号,如下图所示。

左边一列是变量的名称,右面一列是变量的值。用法就是点击 Word 工具栏上的”更新符号“按钮,Word 会读取所有的变量值。如果想在某处插入作者,点击”插入符号“按钮,在弹出的对话框中填 ”AU“,然后点击确定,如下图所示。
然后就出现你事先在 Excel 中定义好的内容了,如下图所示。

如果后期想修改符号,只需要在 Excel 中统一修改,保存后点击 Word 工具栏上的”更新符号“按钮,Word 中所有的 DOCVARIABLE 域都会更新。

当然,你可以为宏添加快捷键,就不用每次都用鼠标点击了。

A. 如何优雅的凑字数
泥萌不要说这是我教泥萌的哈。60岁以下人士请在家长陪同下观看。

首先,先插入一个文本框,如下图所示。

然后里面填充些文字,不要太嚣张,我就加了 7k 个字。
现在开始伪装这个文本框。选中这个文本框,然后调整它的大小。
为毛是 0.07cm,等会儿你就知道了。然后把文本框设置成圆形。
然后把布局选项设置成嵌入型。
然后他就跑到这里了,咦,这不是句号吗?
但是还不够像。
恩这把差不多了。然后输入一段文字,把这个文本框当做句号。但是有点瑕疵,距离文字有点近,而且比正常的句号偏高。解决办法就是在“句号”和文本之间插入一个不间断空格,即同时按下 Ctrl + Shift + 空格。然后选中这个空格和这个“句号”,设置一下字体。
大功告成!惟妙惟肖,不论框选还是什么其他操作,完全看不出破绽。之前开发的版本是把这个文本框设置成白色,这样按 Ctrl + A 的时候会露馅。这个很难露出破绽,框选没有任何问题,除非用鼠标直接点这个句号。
查重的话不要复制现成的文章, 随便输入一些无规律的文字就好了。
 

最后祝大家学习愉快。

 

作者:Qi Qi
链接:https://www.zhihu.com/question/30521304/answer/48445567
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

材料牛编辑整理。
分享到