其它 > 编辑论文
创建时间:2024-10-10
更新时间:2026-01-04

MS Word论文编辑经验

插入高清图片


矢量图

适用条件:

  1. 需要PDF中图清晰度高:输出成PDF效果最好。
  2. 不限制输出的PDF文件大小:有的矢量图内容过多会导致输出的PDF文件也很大,但是包含矢量图的PDF文件不好压缩,就不好控制输出PDF文件的大小。

从PPT中复制图片到Word中的步骤:

  1. Word文件-选项-高级-图像大小和质量-选中不压缩文件中的图像,同时默认分辨率设置为高保真;
  2. PPT中ctrl+a全选,并ctrl+c复制(要求PPT中的图片本来就是矢量图);
  3. Word中左上角开始-粘贴-选择性粘贴,粘贴为"增强型图元文件"
  4. 2-3步也可以先保存为emf矢量图文件,再复制进Word;
    • PPT输出emf格式图片方法:选中要输入的图,然后右键另存为图片emf;
  5. 输出成PDF:文件-打印,打印机选择Microsoft print to pdf,打印;
  6. 即可保证图片中的矢量部分仍为矢量,且包含的位图部分的清晰度也最高。

缺点

位图

适用条件:

  1. 需要控制PDF文件大小

从PPT中复制图片到Word中的步骤:

  1. Word文件-选项-高级-图像大小和质量-选中不压缩文件中的图像,同时默认分辨率设置为高保真;
  2. 修改注册表使PPT导出图片分辨率为600或以上
    • 搜索打开注册表
    • 找到 HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\PowerPoint\Options
    • 右键新建一个 DWORD 值名为 ExportBitmapResolution,选择十进制,分辨率数值为600
    • 确定
  3. PPT中,文件-导出-更改文件类型-选择为jpg-另存为-仅保存当前幻灯片;
  4. 右键属性检查输出的jpg图片,详细信息-图像水平分辨率,分辨率确定600,并裁剪掉空白区域;
  5. 复制图片进Word;
  6. 输出成PDF:文件-打印,打印机选择Microsoft print to pdf,打印;
  7. 压缩PDF:如果PDF大小不满足要求,再用acrobat压缩(工具-优化pdf-高级优化-选择分辨率-输出)。

缺点:

Word导出PDF文件


有几种常见方法:

  1. 微软自带的打印机Microsoft Print to PDF。
    • 优点:
      • 能较好地兼顾矢量图和位图的清晰度:位图像素稍微有点低而且没法控制像素,矢量图没问题。
    • 缺点:
      • 没有目录和书签功能,需要后期用其他软件添加(例如PDFdir)。
      • 没有交叉引用超链接
  2. Adobe PDF打印机。
    • 优点:有目录和书签功能,交叉引用有超链接。
    • 缺点:矢量图有时显示不出来。
  3. 文件-导出-创建PDF/XPS文档。
    • 缺点:排版可能会变。
  4. 文件-另存为-PDF。
    • 缺点:位图像素非常低,矢量图有时也会出问题。

也可以用其他PDF输出软件,比如PDFCreator,可以控制图片像素,把jpg压缩因子设置为1。

交叉引用超链接的颜色


通过创建和运行如下宏,可以设置交叉引用和文献引用的颜色。

Sub CitingColor_my()
For i = 1 To ActiveDocument.Fields.Count '遍历文档所有域
If Left(ActiveDocument.Fields(i).Code, 4) = " REF" Or Left(ActiveDocument.Fields(i).Code, 14) = " ADDIN EN.CITE" Or Left(ActiveDocument.Fields(i).Code, 31) = " ADDIN ZOTERO_ITEM CSL_CITATION" Then 'Word自带的交叉引用的域代码起始4位是" REF"(注意空格),EndNote插入的引用域代码的起始14位是" ADDIN EN.CITE",Zotero插入的引用域代码的起始31位是" ADDIN ZOTERO_ITEM CSL_CITATION"。根据需求可添加其他类型。
ActiveDocument.Fields(i).Select '选中上述几类域
Dim hlColor As Long
Selection.Font.Color = ActiveDocument.Styles(wdStyleHyperlink).Font.Color
End If
Next
End Sub

给Zotero文献引用添加超链接


Public Sub ZoteroLinkCitation_yt()

' get selected area (if applicable)
Dim nStart&, nEnd&
nStart = Selection.Start
nEnd = Selection.End

' toggle screen updating
Application.ScreenUpdating = False

' define variables
Dim title As String
Dim titleAnchor As String
Dim style As String
Dim fieldCode As String
Dim numOrYear As String
Dim pos&, n1&, n2&, n3&

ActiveWindow.View.ShowFieldCodes = True
Selection.Find.ClearFormatting

' find the Zotero bibliography
With Selection.Find
.Text = "^d ADDIN ZOTERO_BIBL"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute

' add bookmark for the Zotero bibliography
With ActiveDocument.Bookmarks
.Add Range:=Selection.Range, Name:="Zotero_Bibliography"
.DefaultSorting = wdSortByName
.ShowHidden = True
End With

' loop through each field in the document
For Each aField In ActiveDocument.Fields
' check if the field is a Zotero in-text reference
'##################################################
If InStr(aField.Code, "ADDIN ZOTERO_ITEM") > 0 Then
fieldCode = aField.Code
'#############
' Prepare
' Plain citation== Format of Textfield shown
' must be in Brackets
Dim plain_Cit As String
plCitStrBeg = """plainCitation"":""["
plCitStrEnd = "]"""
n1 = InStr(fieldCode, plCitStrBeg)
n1 = n1 + Len(plCitStrBeg)
n2 = InStr(Mid(fieldCode, n1, Len(fieldCode) - n1), plCitStrEnd) - 1 + n1
plain_Cit = Mid$(fieldCode, n1 - 1, n2 - n1 + 2)
'Reference 'as shown' in word as a string

'Title array in fieldCode (all referenced Titles within this field)
Dim array_RefTitle(32) As String
i = 0
Do While InStr(fieldCode, """title"":""") > 0
n1 = InStr(fieldCode, """title"":""") + Len("""title"":""")
n2 = InStr(Mid(fieldCode, n1, Len(fieldCode) - n1), """,""") - 1 + n1
If n2 < n1 Then 'Exception the type 'Article'
n2 = InStr(Mid(fieldCode, n1, Len(fieldCode) - n1), "}") - 1 + n1 - 1
End If
array_RefTitle(i) = Mid(fieldCode, n1, n2 - n1)
fieldCode = Mid(fieldCode, n2 + 1, Len(fieldCode) - n2 - 1)
i = i + 1
Loop
Titles_in_Cit = i

'Number array with References shown in PlainCit
'Numer is equal or less than Titels, depending on the type
'[3], [8]-[10]; [2]-[4]; [2], [4], [5]
' All citations have to be in Brackets each! [3], [8] not [3, 8]
' This doesnt work otherwise!
' --> treatment of other delimiters could be implemented here
Dim RefNumber(32) As String
i = 0
Do While (InStr(plain_Cit, "]") Or InStr(plain_Cit, "[")) > 0
n1 = InStr(plain_Cit, "[")
n2 = InStr(plain_Cit, "]")
RefNumber(i) = Mid(plain_Cit, n1 + 1, n2 - (n1 + 1))
plain_Cit = Mid(plain_Cit, n2 + 1, Len(plain_Cit) - (n2 + 1) + 1)
i = i + 1
Loop
Refs_in_Cit = i
'treat only the shown references (skip the rest)
'[3], [8]-[10] --> skip [9]
'Order of titles given from fieldcode, not checked!
If Titles_in_Cit > Refs_in_Cit Then
array_RefTitle(Refs_in_Cit - 1) = array_RefTitle(Titles_in_Cit - 1)
i = 1
Do While Refs_in_Cit + i <= Titles_in_Cit
array_RefTitle(Refs_in_Cit + i - 1) = ""
i = i + 1
Loop
End If

'#############
'Make the links
For Refs = 0 To Refs_in_Cit - 1 Step 1
title = array_RefTitle(Refs)
array_RefTitle(Refs) = ""
' make title a valid bookmark name
titleAnchor = title
titleAnchor = MakeValidBMName(titleAnchor)

ActiveWindow.View.ShowFieldCodes = False
Selection.GoTo What:=wdGoToBookmark, Name:="Zotero_Bibliography"

'' locate the corresponding reference in the bibliography
'' by searching for its title
Selection.Find.ClearFormatting
With Selection.Find
.Text = Left(title, 255)
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute

' select the whole caption (for mouseover tooltip)
Selection.MoveStartUntil ("["), Count:=wdBackward
Selection.MoveEndUntil (vbBack)
lnkcap = "[" & Selection.Text
lnkcap = Left(lnkcap, 70)

' add bookmark for the reference within the bibliography
Selection.Shrink
With ActiveDocument.Bookmarks
.Add Range:=Selection.Range, Name:=titleAnchor
.DefaultSorting = wdSortByName
.ShowHidden = True
End With

' jump back to the field
aField.Select
' find and select the numeric part of the field which will become the hyperlink
Selection.Find.ClearFormatting
With Selection.Find
.Text = RefNumber(Refs)
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute

numOrYear = Selection.Range.Text & ""

' store current style
style = Selection.style
' Generate the Hyperlink -->Forward!
ActiveDocument.Hyperlinks.Add Anchor:=Selection.Range, Address:="", SubAddress:=titleAnchor, ScreenTip:=lnkcap, TextToDisplay:="" & numOrYear
' reset the style

' comment if you want standard link style
aField.Select
With Selection.Font
.Underline = wdUnderlineNone
.ColorIndex = wdBlack
End With

Next Refs 'References in Cit

End If 'If Zotero-Field
'#########################

Next aField ' next field

' go back to original range selected
ActiveWindow.View.ShowFieldCodes = False
ActiveDocument.Range(nStart, nEnd).Select

End Sub
Function MakeValidBMName(strIn As String)
Dim pFirstChr As String
Dim i As Long
Dim tempStr As String
strIn = Trim(strIn)
pFirstChr = Left(strIn, 1)
If Not pFirstChr Like "[A-Za-z]" Then
strIn = "A_" & strIn
End If
For i = 1 To Len(strIn)
Select Case Asc(Mid$(strIn, i, 1))
Case 49 To 57, 65 To 90, 97 To 122
tempStr = tempStr & Mid$(strIn, i, 1)
Case Else
tempStr = tempStr & "_"
End Select
Next i
tempStr = Replace(tempStr, " ", " ")
MakeValidBMName = Left(tempStr, 40)
End Function

章节标题编号


  1. 定义多级列表:开始-段落-多级列表-定义新的多级列表,然后修改样子,主要是修改对齐位置(即1.1左边的位置,可以统一设置为0)和文本缩进位置(即标题如果太长,第二行往右缩进的距离);
    多级列表
  2. 点击更多,将级别链接到样式,逐个将级别1链接到"标题1",级别2链接到"标题2",这样后面只需要修改文字的样式,就能自动生成编好了。

内置公式编辑器自动编号和交叉引用


正文公式编号

内置公式编辑器方法:

  1. 插入表格,一个作为放公式,一个放编号,并且把表格的边框取消显示;
  2. 新建题注:
    • 引用-插入题注-新建标签,标签名字为"公式",选中从题注中排除标签;
    • 点击编号,包含章节号,分隔符选句号,即得到类似 1.1 的编号;
    • 把生成的题注剪切进表格单元格中,同时添加括号;
  3. 后面要引用此公式,引用-题注-交叉引用,引用类型为"公式",选择此公式的编号即可。

或者使用Mathtype,但是是收费软件。

附录公式重新编号

附录公式重新编号:

  1. 附录的标题级别设置为标题7(即一个正文不会使用的级别);
  2. 标题7定义新的多级列表,把7级列表设置为附录A的格式,并链接到标题7,这时就能显示附录A了;
  3. 定义新的标注样式为"附录公式",并且设置引用格式的章节为7级标题而不是1级。

其他注意事项