使用Latex排版选择题试卷

本文档介绍了如何使用Python和LaTeX自动化编排包含100多道选择题的试卷。通过正则表达式处理文本答案,利用LaTeX模板和编辑器的替换功能进行排版。在处理过程中,遇到LaTeX错误和过满框问题,通过重新安装和调整编译器设置得以解决。此外,还分享了在WPS或Word中使用替换序列的技巧,以及如何挖空题干答案和替换选项。最后给出了一个可运行的LaTeX代码示例。
摘要由CSDN通过智能技术生成

食用指南:使用python 语言实现了latex纯文本自动化编排


一、需求描述😗

工作原因,需要制作一张含有100多道选择题试卷
为了排版美观,我找了份LaTeX选择题模板
手动输入每一道过于麻烦,便找到了对应的自动化模块


最让人尴尬的事情发生了,我发现编辑器自带替换的功能,
而且支持正则表达式

二、解决方案✅

1. 内容处理

(1)文本答案挖除

将几页问卷复制txt文本文件中,为了把这些正确答案挖除,直接使用正则表式的替换

在这里插入图片描述

2. 排版处理

(1)模板在本地miktex中的编译

为了实现这一步,主要注意三点.

  1. 安装miktex选择为所有用户安装
    (确保软件能够启动,更新,旧版本有一些要命的bug)
  2. 使用xelatex编译
    (为了能正常编译一些宏包)
  3. 使用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选型替换成对应的括号}{
^$表示任意的字母

这个就是最令人尴尬的事情了

在这里插入图片描述

其他参考文献😎

  1. Plot NetworkX Graph with numpy array error

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

  3. attributeError:模块’scipy.sparse’没有属性’coo_array’

  4. 使用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{~~~~~~~}
(*)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
LaTeX是一种专业的排版系统,非常适合用于排版数学试卷。下面是一些介绍latex排版数学试卷的步骤: 1. 首先,你需要安装LaTeX系统。LaTeX有多个发行版可供选择,比如TeX Live、MiKTeX等。你可以根据自己的操作系统选择合适的发行版进行安装。 2. 创建一个新的LaTeX文档。你可以使用任何文本编辑器来创建LaTeX文档,比如TeXworks、TeXstudio等。在文档的开头,使用\documentclass命令指定文档类型为exam,例如:\documentclass{exam}。 3. 在文档的导言区(preamble)中,你可以设置试卷的标题、作者、日期等信息。例如,使用\title命令设置试卷标题,使用\author命令设置作者,使用\date命令设置日期。 4. 在文档的正文部分,你可以使用LaTeX提供的丰富的数学排版功能来编写数学题目。LaTeX支持各种数学符号、公式、矩阵等。你可以使用\(\)或者\[ \]来插入行内或者独立的数学公式。 5. 使用题目环境来创建题目。LaTeX提供了多个题目环境,比如question、parts、subparts等。你可以根据试卷的需要选择合适的题目环境,并在其中编写题目内容。 6. 使用LaTeX提供的数学环境来排版数学公式。LaTeX提供了多个数学环境,比如equation、align、matrix等。你可以使用这些环境来编写数学公式,并使用编号或者对齐功能。 7. 使用LaTeX提供的命令来设置试卷的格式。你可以使用\pointsinmargin命令将分数显示在页边,使用\qformat命令设置题目的格式,使用\bonuspoint命令设置奖励分数等。 8. 编译LaTeX文档。你可以使用LaTeX编译器将LaTeX源文件编译成PDF文件。通常需要多次编译才能正确生成目标文件。 以上是一些基本的步骤,你可以根据自己的需求和LaTeX的语法规则进行更详细的排版。希望对你有所帮助!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值