使用Latex排版选择题试卷
食用指南:使用python 語言實(shí)現(xiàn)了latex純文本自動(dòng)化編排
一、需求描述😗
工作原因,需要制作一張含有100多道選擇題試卷。
為了排版美觀,我找了份LaTeX選擇題模板,
手動(dòng)輸入每一道過于麻煩,便找到了對(duì)應(yīng)的自動(dòng)化模塊
最讓人尷尬的事情發(fā)生了,我發(fā)現(xiàn)編輯器自帶替換的功能,
而且支持正則表達(dá)式
二、解決方案?
1. 內(nèi)容處理
(1)文本答案挖除
將幾頁問卷復(fù)制txt文本文件中,為了把這些正確答案挖除,直接使用正則表式的替換
2. 排版處理
(1)模板在本地miktex中的編譯
為了實(shí)現(xiàn)這一步,主要注意三點(diǎn).
(確保軟件能夠啟動(dòng),更新,舊版本有一些要命的bug)
(為了能正常編譯一些宏包)
(未了正確顯示中文,確保已安裝ctex宏包,安裝可參考缺少lastpage宏包處理辦法)
(2)模板的源代碼分析
3.文本與latex的交互
把每一個(gè)題目看做是一個(gè)基本單元,對(duì)這個(gè)基本單元進(jìn)行函數(shù)封裝
然后調(diào)用100次函數(shù)就可以實(shí)現(xiàn)整篇文稿的寫作。
三、遇到的bug🤣
1. LaTeX出現(xiàn)問題
將LaTeX選擇題模板復(fù)制到TeXworks過程中,出現(xiàn)了如下報(bào)錯(cuò)。
重現(xiàn)安裝,記得選擇為所有用戶
通配符使用問題
通過參考這篇博客的方法如下:
我完美的解決了這個(gè)問題
環(huán)境問題
[已解決] LaTeX中的enumerate環(huán)境出現(xiàn)overfull box的情況
四、奇技淫巧?
##(一)復(fù)制到WPS處理(word也是一樣的,支持正版國產(chǎn))
##(二)使用word的替換序列
使用通配符替換
1.題號(hào)替換(先兩位數(shù)替換,再替換一位數(shù):至于為什么不一次性替換完,應(yīng)為我不會(huì)😅)
先看通配符的內(nèi)容:^#表示任意數(shù)字,不要忘記后面的“、”,不然可能會(huì)匹配到題干中的數(shù)字
^#^#、我想把序列直接換成latex中的item命令,因?yàn)閈item命令可以自動(dòng)生成有序列,下面是latex的源碼,對(duì)照著來看,很容易理解,替換的目標(biāo)
但是悲傷的是直接替換會(huì)報(bào)錯(cuò)的,
所以我改進(jìn)了一下
下面是我第五次替換了,} 必須要有因?yàn)槿绻麑?dǎo)入latex中,D選后面你會(huì)發(fā)現(xiàn)沒辦替換口號(hào)了,難道要手動(dòng)一個(gè)個(gè)添加嗎,后來我發(fā)現(xiàn)可以換序號(hào),只要手動(dòng)刪掉第一個(gè),給最后一個(gè)添加有括號(hào)就行了。^p換行符號(hào),不加也可以,或者跟著自己需求多加幾個(gè)。是為了讓我的latex源碼更加易讀。(latex的源碼里面,分段等于換行,應(yīng)為編譯器要吃掉一個(gè)空行才知道一行完結(jié))^092的原因不說了,~是用來當(dāng)空格使用的,在latex中,不然\item與后面的中文之間沒有間隔,會(huì)出現(xiàn)無法識(shí)別命令的情況
^#^#、 }^p^092item~##(三)題干答案挖空
直接使用
進(jìn)行選擇括號(hào)
替換成
##(四)A選項(xiàng)替換為命令
這個(gè)命令決定了選擇題我是排成一行,還是兩行,還是四行。
由于選項(xiàng)大部分較短,處于減少手動(dòng)修改的目的,選擇單行命令,
在這里插入圖片描述
當(dāng)讓修改完不要編譯,肯定不過的,應(yīng)為有一些個(gè)選項(xiàng)只有ABC沒有D, 我參考寫的單行函數(shù)比較菜,做不到自適應(yīng)三個(gè)選項(xiàng)的。
^#^#、 }^p^092item~##(五)B,CD選型替換成對(duì)應(yīng)的括號(hào)}{
^$表示任意的字母
這個(gè)就是最令人尷尬的事情了
其他參考文獻(xiàn)😎
Plot NetworkX Graph with numpy array error
AttributeError: module ‘scipy.sparse’ has no attribute ‘coo_array’
attributeError:模塊’scipy.sparse’沒有屬性’coo_array’
使用networkx畫圖時(shí),報(bào)錯(cuò):AttributeError: module ‘scipy.sparse’ has no attribute ‘coo_array’
補(bǔ)充的兩步走😎
最小可以運(yùn)行的方案
\documentclass{ctexart}% \usepackage{lineno,hyperref} \usepackage{colortbl} \usepackage{amsmath,amssymb,amsfonts} \usepackage{algorithmic} \usepackage{graphicx} \usepackage{float}\usepackage[T1]{fontenc}% \usepackage[utf8]{inputenc}% \usepackage{lmodern}% \usepackage{textcomp}%\usepackage{ctex} \usepackage{enumerate} \usepackage{geometry} \geometry{a4paper,left=2cm,right=2cm,top=2cm,bottom=2cm}\newcommand{\twolines}[4]{\\\begin{tabular}{*{2}{@{}p{8cm}}}(A)~#1 & (B)~#2\end{tabular}\\\begin{tabular}{*{2}{@{}p{8cm}}}(C)~#3 &(D)~#4\end{tabular}} %兩行四個(gè)\newcommand{\twolinesT}[3]{\\\begin{tabular}{*{2}{@{}p{8cm}}}(A)~#1 & (B)~#2\end{tabular}\\\begin{tabular}{*{2}{@{}p{8cm}}}(C)~#3\end{tabular}} %兩行四個(gè)\newcommand{\fourlines}[4]{\\(A)~#1 \\ (B)~#2 \\ (C)~#3 \\ (D)~#4} % \newcommand{\fourlinesT}[3]{\\(A)~#1 \\ (B)~#2 \\ (C)~#3} % 3行每行1個(gè)%=========================================== \begin{document}\par\section{單項(xiàng)選擇題(共90題)}\begin{enumerate}\item 食品生產(chǎn)經(jīng)營者在采購食品原料時(shí),除需要查驗(yàn)供貨者的許可證外,還應(yīng)查驗(yàn)~\underline{~~~~~~~~} \twolines{產(chǎn)品合格證明文件 }{健康證明}{培訓(xùn)證明 }{法人授權(quán)委托書}\end{enumerate}\section{多項(xiàng)選擇題(共10題)}\begin{enumerate}\item~進(jìn)口的食品添加劑應(yīng)當(dāng)有~\underline{~~~~~~~~}。 \twolines{出口國標(biāo)識(shí)}{中文標(biāo)簽}{中文說明書}{英文說明}\item~在食品安全事故調(diào)查中,任何單位或者個(gè)人不得對(duì)食品安全事故~\underline{~~~~~~~~},不得毀滅有關(guān)證據(jù)。 \twolines{隱瞞}{謊報(bào)}{向媒體報(bào)道}{緩報(bào)}\end{enumerate}\end{document}第二部:使用替換功能
這樣直接挖空也是可以的
我的括號(hào)是全角的,但是部分大小寫,個(gè)數(shù)無所謂
……092underline{~~~~~~~}
(*)
總結(jié)
以上是生活随笔為你收集整理的使用Latex排版选择题试卷的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [229]python3的request
- 下一篇: FUTURES模型 | 4. Deman