摘 要:當(dāng)今高校使用word作為論文排版模板效率較低,容易產(chǎn)生排版錯誤。為此,本文提出了一種基于Latex的自動論文排版系統(tǒng)。該系統(tǒng)采用B/S架構(gòu),用戶只要能夠連接互聯(lián)網(wǎng)和擁有瀏覽器就能使用本系統(tǒng)。首先,通過Latex語句生成一個論文模板,將模板中需要用戶添加的部分使用預(yù)留字占位。其次,提示用戶輸入相應(yīng)的內(nèi)容,將這些內(nèi)容與模板中的預(yù)留字進(jìn)行替換。最后,服務(wù)器通過調(diào)用外部Latex命令將Latex模板轉(zhuǎn)換成PDF文檔。結(jié)果表明,通過Latex模板生成論文文檔效率更高,格式出錯率更低。
關(guān)鍵詞:自動排版 Latex應(yīng)用 B/S
中圖分類號:G642 文獻(xiàn)標(biāo)識碼:A 文章編號:1673-9795(2013)09(b)-0189-02
當(dāng)今有兩大類論文編輯工具比較常用:一類是類似于Microsoft word的所見即所得的文本編輯器;另一類是類似于Latex的標(biāo)記式的文本編輯器。所見即所得的文本編輯器的優(yōu)勢在于它能與用戶更好的交互,能把排版的樣式第一時間反饋給用戶,方便用戶查看與修改。并且相關(guān)的功能使用簡單,方便易懂,使用門檻較低,只要多使用幾次就能很快的熟悉一些簡單的、常用的操作,而且它的用戶量比較大,出現(xiàn)問題方便用戶之間互相溝通學(xué)習(xí),通用性比較強(qiáng)[1]。但是,對于畢業(yè)論文中經(jīng)常使用的功能優(yōu)化不夠,比如,數(shù)學(xué)公式,交叉索引等功能。基于Latex的標(biāo)記式的文本編輯器在交叉索引技術(shù)上有著卓越的表現(xiàn),并且擁有著強(qiáng)大的數(shù)學(xué)公式排版功能,它更能起到鎖定論文排版格式的作用[2]。但是由于它需要相應(yīng)的Latex的語法知識,相對比較復(fù)雜不易被掌握,所以不能被廣大用戶所接受,一般用戶想通過它來編輯一篇畢業(yè)論文是比較困難的。基于以上情況,本系統(tǒng)要做好用戶與Latex的橋梁,通過Web網(wǎng)站的方式,使用戶在自己熟悉的環(huán)境中在完全不了解Latex的情況下編輯出高質(zhì)量的、符合畢業(yè)論文規(guī)范的PDF文檔來[3]。
1 相關(guān)技術(shù)介紹
1.1 Latex介紹
Tex是一個用于文章和數(shù)學(xué)公式排版的功能非常強(qiáng)大的工具,它是由著名的計算機(jī)專家和數(shù)學(xué)家美國斯坦福大學(xué)Donald E.Knuth教授編寫的計算機(jī)程序[4]。Tex系統(tǒng)由1977年開始組織搭建程序,并在1982年正式出品最初的版本,在此之后又陸續(xù)的有幾次版本上的升級,它用圓周率無理數(shù)π作為它的版本號,每更新一個新版本就在無理數(shù)后面添加一位數(shù)字。Tex的內(nèi)核非常的穩(wěn)定,在推出3.14159版本之后很長的一段時間都沒有更新過版本,直到時隔很長時間才更新到下一版本[5]。當(dāng)前版本的Tex系統(tǒng)已經(jīng)非常穩(wěn)定而且?guī)缀鯖]有漏洞。Tex作為一款開源的工具,可以排版大多數(shù)的文章與科技文獻(xiàn),并且它卓越的數(shù)學(xué)公式處理能力也被認(rèn)為是各排版工具當(dāng)中最好的。雖然Tex功能強(qiáng)大,但是它將近900條的命令是一般用戶和初學(xué)者所不能接受的,所以,當(dāng)Tex推出不久之后Latex就誕生了。Latex以Tex為基礎(chǔ),作為一個宏集它提供了大量的簡單并且易于學(xué)習(xí)的命令,簡化了Tex復(fù)雜的命令與操作,讓普通用戶和初學(xué)者只需通過一些好記易懂的命令就能排版出他們想要的文章。因此,Latex比Tex更容易被人們所接受,擁有更廣泛的應(yīng)用前景,通過多次的版本優(yōu)化,現(xiàn)在的Latex已經(jīng)基本可以用簡單的命令來實現(xiàn)所有的Tex命令了,并且在排版一些專業(yè)的文章,如論文、書籍、期刊等時有著非常良好的效果。尤為值得高興的是,現(xiàn)在的Latex已經(jīng)能夠很好的支持中文文章的編輯,為我們之后的應(yīng)用與推廣打下了堅實的基礎(chǔ)。
1.2 B/S結(jié)構(gòu)介紹
由B/S結(jié)構(gòu)即瀏覽器和服務(wù)器結(jié)構(gòu),隨著互聯(lián)網(wǎng)的不斷的發(fā)展B/S結(jié)構(gòu)已經(jīng)逐漸的替代了C/S結(jié)構(gòu)[6]。在這種結(jié)構(gòu)下,用戶的使用界面通過瀏覽器界面實現(xiàn),很少的功能與邏輯部分出現(xiàn)在前臺客戶機(jī)上,而是把幾乎所有的邏輯運(yùn)算或者復(fù)雜的功能放在網(wǎng)絡(luò)服務(wù)器上實現(xiàn),這樣可以減輕客戶端的壓力,只需要用戶能夠運(yùn)行瀏覽器就能使用到網(wǎng)頁上的所有功能。同時在程序的維護(hù)更新方面,只需更新或者更改服務(wù)器端的配置,無需更新客戶端,這樣能夠減少運(yùn)營維護(hù)費(fèi)用,降低系統(tǒng)開發(fā)、維護(hù)費(fèi)用。瀏覽器通過Web Server同數(shù)據(jù)庫進(jìn)行數(shù)據(jù)交互。這樣就大大簡化了客戶端電腦載荷,減輕了系統(tǒng)維護(hù)與升級的成本和工作量,降低了用戶的總體成本(TCO)。
如果本系統(tǒng)采用C/S結(jié)構(gòu),將會在每個客戶機(jī)上安裝一個龐大的系統(tǒng)運(yùn)行環(huán)境安裝包,出于用戶體驗和成本考慮,綜合上述的優(yōu)點(diǎn),本系統(tǒng)將采用B/S結(jié)構(gòu)進(jìn)行程序的開發(fā)與設(shè)計。
1.3 PHP介紹
PHP是當(dāng)下流行的一種動態(tài)網(wǎng)頁編輯語言,PHP是英文超文本預(yù)處理語言Hypertext Preprocessor的縮寫,它是一種嵌入到Html中執(zhí)行的腳本語言,它具有運(yùn)行速度快、安全性高、函數(shù)豐富、廠商支持多、跨平臺等特點(diǎn)。它的語言風(fēng)格類似于C語言,混合了C、Java、Perl的語法并且有一些自己的語法。它學(xué)習(xí)起來非常的簡單,許多細(xì)節(jié)得到了簡化,比如使用變量時可以隨用隨申請,不需要提前的定義,而且不需要說明變量的格式,這在靈活性上與其它語言相比就有很大的提升。由于PHP是嵌入到Html中執(zhí)行的,所以與其它動態(tài)網(wǎng)頁編輯語言相比,速度要快的多。而且它還支持幾乎所有流行的數(shù)據(jù)庫以及操作系統(tǒng)。
PHP的應(yīng)用比較廣泛而且開源,方便以后系統(tǒng)的更新和維護(hù)。它的函數(shù)比較豐富,許多比較常用或者比較實用的函數(shù)可以直接使用,不需要自己編寫,提高了工作效率。它在連接數(shù)據(jù)庫和文件的讀寫方面比較簡單直觀,可以實現(xiàn)PHP代碼與Html代碼的混合編寫效率較高。綜合考慮本系統(tǒng)使用PHP代碼編寫。
2 系統(tǒng)概要設(shè)計
本系統(tǒng)是為了方便各高校的學(xué)生排版畢業(yè)論文而開發(fā)的系統(tǒng),所以設(shè)計原則要符合整理論文的原則。在劃分模塊的過程當(dāng)中,將絕大多數(shù)文字類的功能與內(nèi)容放在了一起作為向?qū)K,它不僅符合一般人整理論文的習(xí)慣,而且可以引導(dǎo)初次使用本系統(tǒng)的用戶進(jìn)行操作。根據(jù)向?qū)K的一步一步的提示與轉(zhuǎn)變將帶領(lǐng)用戶全面的完成論文模版的使用。當(dāng)論文的文字部分都錄入到系統(tǒng)之后,圖片處理模塊和表格處理模塊就開始發(fā)揮作用,用戶可以運(yùn)用這些模塊的功能,將論文中缺少的圖片與表格內(nèi)容添加到已經(jīng)編輯好的論文中。在這些工作都完成后,用戶就能借助查看代碼模塊來查看之前操作所形成的Latex源代碼,同時,可以根據(jù)自己的實際需要來修改這些代碼。當(dāng)所有的修改工作都完成后,可以通過生成PDF模塊來預(yù)覽最終的結(jié)果,如果有需要修改的地方可以回到查看代碼模塊進(jìn)行下一步的修改,如此反復(fù)直到能夠得到用戶滿意的PDF文檔。最后,通過PDF模塊的下載功能,將生成好的PDF文檔下載到用戶本地。系統(tǒng)各模塊與功能之間的組織結(jié)構(gòu)如圖1所示。
3 詳細(xì)設(shè)計與實現(xiàn)
3.1 正文設(shè)計思路
正文部分是向?qū)K設(shè)計中最關(guān)鍵也是最復(fù)雜的部分,由于Latex的特點(diǎn)正文中的章、節(jié)、小節(jié)的區(qū)分并不直觀,所以在頁面中要充分的考慮到這個問題,不然用戶在輸入大量的章節(jié)的時候容易忘記自己輸入的章節(jié)編號,造成文章結(jié)構(gòu)混亂。
本系統(tǒng)中通過章節(jié)標(biāo)題和章節(jié)內(nèi)容分離,并且添加3個選擇按鈕的形式來解決這個問題。標(biāo)題和內(nèi)容的分離不僅讓用戶感覺更加的直觀,更清楚自己輸入的是論文的哪個章節(jié)。3個按鈕分別從章、節(jié)、小節(jié)三個層次上提示用戶輸入的內(nèi)容。當(dāng)用戶輸入完相應(yīng)的章節(jié)時,選擇相應(yīng)的按鈕,系統(tǒng)就能正確的添加Latex標(biāo)簽。這就要求這三個按鈕的內(nèi)容要隨著用戶的輸入而改變,為了達(dá)到這個要求,系統(tǒng)中采用設(shè)置3個計數(shù)器的形式來實現(xiàn)。這三個計數(shù)器分別代表著當(dāng)前輸入的章號、節(jié)號、小節(jié)號,通過計數(shù)器加1的形式來提示用戶的輸入,如圖2所示,此時用戶剛剛輸入完2.1.1的內(nèi)容,章計數(shù)器為1,節(jié)計數(shù)器為1,小節(jié)計數(shù)器為1。
3.2 其他部分設(shè)計思路
用戶在使用這部分功能時大多是直接復(fù)制粘貼現(xiàn)成的文本文檔。在這部分需要注意的主要就是Web中的編輯框讀取空格和回車上與文本字符的不同,要把這些Html的字符轉(zhuǎn)化為文本文檔的字符,這樣才能正確的現(xiàn)實信息。采用的方法是讀取文件,逐行匹配,替換文本的方法,將全部文檔以“.TEX”結(jié)尾保存。需要注意的是,由于Latex性質(zhì)的原因,只通過一次編譯無法得到最終的結(jié)果,而是需要通過2~3次的編譯才能生成所有Latex代碼所包含的內(nèi)容。所以在程序的后臺中通過循環(huán)語句自動執(zhí)行了3次編譯語句,而這個過程用戶是無法察覺的。當(dāng)3次編譯工作結(jié)束以后,就可以把生成好的PDF文檔連接顯示在頁面上,供用戶預(yù)覽或者下載。程序中最后效果如圖3所示。
4 結(jié)論
作為一個Web端的功能性系統(tǒng),這種網(wǎng)頁與功能工具相結(jié)合的形式隨著網(wǎng)絡(luò)的普及和服務(wù)器技術(shù)的完善以及服務(wù)器運(yùn)算性能的增強(qiáng)必定會成為主流的開發(fā)形式。實驗表明,本系統(tǒng)以研究為目的的設(shè)計獲得了很好的效果,不僅開發(fā)出了一款具有實用性的網(wǎng)站,而且讓更多的人認(rèn)識Latex,嘗試著用Latex編輯文章,這對一款不太流行的工具來說是一種進(jìn)步。相信以后更多的高性能、實用但很少被人們使用的工具,都會以類似的形式進(jìn)行組織設(shè)計,逐漸的被用戶所接受。
參考文獻(xiàn)
[1]Donald E.Knuth.The TEXBook[M].Massachusetts:Addison-Wesley,1986:7-9.
[2]陳志杰,趙書欽,萬福永.LATEX入門與提高[M].北京:高等教育出版社,2002:5-8.
[3]Ethan Cerami.Web Services Essentials[M].O’Reilly,2007:20-21.
[4]Tobias Oetiker,Hubert Partl,Irene Hyna.The Not So Short Introduction to LaTeX2e[M].Cambridge:Free Software Foundation,2006:8-11.