寫論文時有哪些格式和繪圖上的奇思技巧?(二)


接上一期的未完待續

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
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

材料牛編輯整理。
分享到