日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用Latex排版选择题试卷

發布時間:2023/12/15 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Latex排版选择题试卷 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

食用指南:使用python 語言實現了latex純文本自動化編排


一、需求描述😗

工作原因,需要制作一張含有100多道選擇題試卷。
為了排版美觀,我找了份LaTeX選擇題模板,
手動輸入每一道過于麻煩,便找到了對應的自動化模塊


最讓人尷尬的事情發生了,我發現編輯器自帶替換的功能,
而且支持正則表達式

二、解決方案?

1. 內容處理

(1)文本答案挖除

將幾頁問卷復制txt文本文件中,為了把這些正確答案挖除,直接使用正則表式的替換

2. 排版處理

(1)模板在本地miktex中的編譯

為了實現這一步,主要注意三點.

  • 安裝miktex選擇為所有用戶安裝
    (確保軟件能夠啟動,更新,舊版本有一些要命的bug)
  • 使用xelatex編譯
    (為了能正常編譯一些宏包)
  • 使用ctex宏包中的ctexart文檔類
    (未了正確顯示中文,確保已安裝ctex宏包,安裝可參考缺少lastpage宏包處理辦法)
  • (2)模板的源代碼分析

    3.文本與latex的交互

    把每一個題目看做是一個基本單元,對這個基本單元進行函數封裝
    然后調用100次函數就可以實現整篇文稿的寫作。

    三、遇到的bug🤣

    1. LaTeX出現問題

    將LaTeX選擇題模板復制到TeXworks過程中,出現了如下報錯。

    重現安裝,記得選擇為所有用戶

    通配符使用問題


    通過參考這篇博客的方法如下:

    我完美的解決了這個問題

    環境問題

    [已解決] LaTeX中的enumerate環境出現overfull box的情況

    四、奇技淫巧?

    ##(一)復制到WPS處理(word也是一樣的,支持正版國產)

    ##(二)使用word的替換序列
    使用通配符替換
    1.題號替換(先兩位數替換,再替換一位數:至于為什么不一次性替換完,應為我不會😅)

    先看通配符的內容:^#表示任意數字,不要忘記后面的“、”,不然可能會匹配到題干中的數字

    ^#^#、

    我想把序列直接換成latex中的item命令,因為\item命令可以自動生成有序列,下面是latex的源碼,對照著來看,很容易理解,替換的目標

    但是悲傷的是直接替換會報錯的,

    所以我改進了一下

    下面是我第五次替換了,} 必須要有因為如果導入latex中,D選后面你會發現沒辦替換口號了,難道要手動一個個添加嗎,后來我發現可以換序號,只要手動刪掉第一個,給最后一個添加有括號就行了。^p換行符號,不加也可以,或者跟著自己需求多加幾個。是為了讓我的latex源碼更加易讀。(latex的源碼里面,分段等于換行,應為編譯器要吃掉一個空行才知道一行完結)^092的原因不說了,~是用來當空格使用的,在latex中,不然\item與后面的中文之間沒有間隔,會出現無法識別命令的情況

    ^#^#、 }^p^092item~

    ##(三)題干答案挖空
    直接使用

    ( )

    進行選擇括號
    替換成

    ~^092underline{~~~~~~~~}

    ##(四)A選項替換為命令
    這個命令決定了選擇題我是排成一行,還是兩行,還是四行。
    由于選項大部分較短,處于減少手動修改的目的,選擇單行命令,
    在這里插入圖片描述

    當讓修改完不要編譯,肯定不過的,應為有一些個選項只有ABC沒有D, 我參考寫的單行函數比較菜,做不到自適應三個選項的。

    ^#^#、 }^p^092item~

    ##(五)B,CD選型替換成對應的括號}{
    ^$表示任意的字母

    這個就是最令人尷尬的事情了

    其他參考文獻😎

  • Plot NetworkX Graph with numpy array error

  • AttributeError: module ‘scipy.sparse’ has no attribute ‘coo_array’

  • attributeError:模塊’scipy.sparse’沒有屬性’coo_array’

  • 使用networkx畫圖時,報錯:AttributeError: module ‘scipy.sparse’ has no attribute ‘coo_array’

  • 補充的兩步走😎

    最小可以運行的方案

    \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}} %兩行四個\newcommand{\twolinesT}[3]{\\\begin{tabular}{*{2}{@{}p{8cm}}}(A)~#1 & (B)~#2\end{tabular}\\\begin{tabular}{*{2}{@{}p{8cm}}}(C)~#3\end{tabular}} %兩行四個\newcommand{\fourlines}[4]{\\(A)~#1 \\ (B)~#2 \\ (C)~#3 \\ (D)~#4} % \newcommand{\fourlinesT}[3]{\\(A)~#1 \\ (B)~#2 \\ (C)~#3} % 3行每行1個%=========================================== \begin{document}\par\section{單項選擇題(90)}\begin{enumerate}\item 食品生產經營者在采購食品原料時,除需要查驗供貨者的許可證外,還應查驗~\underline{~~~~~~~~} \twolines{產品合格證明文件 }{健康證明}{培訓證明 }{法人授權委托書}\end{enumerate}\section{多項選擇題(10)}\begin{enumerate}\item~進口的食品添加劑應當有~\underline{~~~~~~~~}\twolines{出口國標識}{中文標簽}{中文說明書}{英文說明}\item~在食品安全事故調查中,任何單位或者個人不得對食品安全事故~\underline{~~~~~~~~},不得毀滅有關證據。 \twolines{隱瞞}{謊報}{向媒體報道}{緩報}\end{enumerate}\end{document}

    第二部:使用替換功能
    這樣直接挖空也是可以的


    我的括號是全角的,但是部分大小寫,個數無所謂
    ……092underline{~~~~~~~}
    (*)

    總結

    以上是生活随笔為你收集整理的使用Latex排版选择题试卷的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。