標籤:

解決類似問題,應該學VBA還是Latex?

編寫試卷時遇到的問題,需求如下:

1. 有很多重複的東西希望能不用每次手動去寫,比如「題號」以及選擇題中選項前的「ABCD」四個字母,希望每次能自動生成這些版面的東西。作為試卷的編寫者,只需要填寫真正的試題內容,而無需關心形式,如選擇題的四個選項自動加上「ABCD」四個字母,並且自動排版。

2. 又希望能自動對數據進行處理,比如在「共x道小題」、「每小題y分」中,編寫者僅需要填寫x和y的值,「本大題共xy分」可以自動計算出來,還可以自動驗證總分是否已達到100分。再如,在寫每道題的同時,不需要切換窗口,直接填寫答案,到最後可以一次性生成「試卷」、」答題紙「和「答案」三份文檔。

3. 在後期修改試卷內容時,比如某個題目的題干需要修改,僅需要一次性填寫修改內容,則會自動在「試卷」「答題紙」「答案」三份文檔中完成修改。

我是新手,兩種工具都沒有用過。考慮過用VBA,可以自己編寫類似對話框或者嚮導的形式來編寫(不知道思路是否正確)。但有一個問題需要指點,比如在編寫後期,若要修改,豈不是要把整個嚮導重新填一遍?

若使用Latex完成,在三個文檔中有很多重複的內容,是否就要重複寫三次?比如題號,又如試卷中有題干,答題紙中也要有題干,這兩個重複的內容,是否必須寫兩遍?

""""""""""""""""""""""""""""""""""""補充"""""""""""""""""""""""""""""""""""

輸出是PDF算是一個較低要求嗎?當然出Word更好,僅就本問題而言,PDF也已經滿足要求了。不過如果能夠更普遍的解決類似問題,還是以輸出Word更佳。


如果題主是那種整日與Office打交道的人的話,我覺得VBA顯然是一個更好的選擇。定義一套比較合用的樣式集,剩下的部分可以用VBA來解決。


很簡單。

首先把題目輸入到excel表格里。然後用vba轉換成word


這個在access里應該很容易實現,幾乎不需要用到什麼編程知識,並且能很方便的管理大量的試卷。

----------------

舉個簡單的例子。

建兩個這樣子的表:

我們來創建一個名為 期中考 的試卷:

輸入問題的界面可以稍微考究一點,雖然直接在表格里也可以輸入。這裡我們建一個表單:

試卷通過報表來生成,大概可以設計成這個樣子:

切換到列印預覽(請腦補格式):

要生成答案的話,在前面的QUESTION表格里再加一項比如說,CORRECT_ANS 用來填寫正確答案,然後再生成一份報答案的報表,跟生成試卷是一樣的。

需要修改內容的話,直接在QUESTIONS的表格里改了就好了,試卷會自動更新。

差不多就醬了。

------

補充一下,如果試卷里有大量公式的話,請題主忽略此答案,用LaTeX吧。


我記得 LaTeX 有個 exam 宏包,可以看一下。CTAN: tex-archive/macros/latex/contrib/exam


回去翻了一下,之前那個宏包叫colinexam,是蓋鶴麟在2004年為了排版高中試卷做的一個宏包。

還寫了一本叫做《LaTeX數學試卷排版指南》的小冊子,可以參考下怎麼用。

這個宏包似乎之後就沒再更新,不過剛搜索了一下鮑宏昌在colinexam的基礎上開發了BHCexam,

並且放在了sourceforge上,地址:BHCexam | SourceForge.net

可以嘗試一下,不過可能不能完全符合你要的功能,可能需要你自己改一下。

不過你改完之後希望能把代碼開源回饋給社區,謝謝。

下面貼上他的介紹:

This project provides a LaTeX document class, which is specially designed for High School Math Teacher in China. It is maintained by Charles Bao.

BHCexam 宏包為中國數學教師設計,提供了一個排版中學數學試卷的LATEX 文檔類,由鮑宏昌製作並負責維護。

本宏包以exam 為底層文檔類,部分源代碼來自於蓋鶴麟開發的colinexam。不知道什麼原因蓋鶴麟自2004 年就一直沒有發布更新, colinexam 仍然使用CCT 實現中文支持,而缺乏對X?TEX 的支持。2011 年7 月,作者在colinexam 的基礎上放棄了對CCT的支持而改用X?TEX實現中文支持,用doc 和docstrip 工具編寫了這個文檔,增加了一些新的功能,並把新的宏包命名為BHCexam。

本宏包延續了colinexam 和exam 的宗旨,那就是能讓一個剛剛接觸LATEX 的初學者,也能輕鬆用它來排版試卷。希望BHCexam 能提高中學教師的工作效率,並把注意力放在試卷的內容上。

通過BHCexam可以實現:

1. 自動對題目編號。
2. 自動生成試卷頁腳。
3. 自動計算簡答題各小問的和並顯示在簡答題的第一行。
4. 用一條命令生成試卷標題、考試須知。
5. 用一條命令輸出簡答題、選擇題、填空題前的提示語。
6. 用一條命令在頁左(右)生成裝訂線。
7. 可以選擇試卷的紙張。
8. 可以選擇將答案和試題排在一起。
9. 可以選擇生成計分框。
10. 同時支持xelatex和pdflatex。

BHCexam 由兩個主要文件構成:文檔類BHCexam.cls 和配置文件BHCexam.cfg 。後者定義了一些常用的參數。

===修改前內容====

LaTeX應該沒多大問題,有個教師做了個宏包,回去翻翻再補充。

最麻煩的可能是要去學LaTeX。


還是vba更方便一些。

題主想到的窗體、嚮導,思路也對。

至於後期如果要修改,是否需要重新運行一遍嚮導,那就要看你如何寫代碼了。比如,你可以在嚮導中每次點擊「下一步」,或者在控制項的change事件中寫入代碼,將之前的狀態進行保存,再次運行嚮導時,可以立即恢復之前的狀態。


如果要輸出word文件的話,那還是用VBA比較方便。


題目的數量一般是固定的。寫一個模板,以後只要改內容就行了。綜合來看,來是樓上說的Access最好,它也支持VBA


重新看了一遍題干。。。覺得後面那些東西應該latex實現困難。。。python最好,但是不知道python有沒有很好的排版插件。。。

-----------------原答案-------------

不太清楚latex有沒有自己的題號函數,可以仿照section寫一個(可以吧選項號寫進去),不會很難,然後複製粘貼就好了


學習了


題主說的這些完全用word完全滿足要求。模板加鏈接加十幾行vba代碼就行了,還可以直接輸出pdf


用HTML+ JavaScript 應該能做到吧


推薦閱讀:

TeXworks中,為什麼不能設置成中文界面?
LaTeX如何混合排版中文與日文?
LaTeX畫矢量圖相關(字體、箭頭位置、分組)?
為何大多數 LaTeX 編輯器連中英文混排時的自動換行都不支持?
如何推薦理工專業的同學使用LaTeX排版?

TAG:LaTeX | VBA |