% !TeX root = ../exam-zh-doc-basic.tex \section{常见场景} 本章介绍实际使用中的常见需求和解决方案。 \subsection{答案控制方案} \subsubsection{生成学生版和教师版} 最常见的需求是生成两个版本的试卷: \textbf{学生版(默认):} 什么都不设置,默认就是学生版,所有答案都隐藏。 \textbf{教师版:} 在文档开头添加: \begin{latexcode} \examsetup{ question/show-answer = true, % 显示选择题和填空题答案 solution/show-solution = show-stay, % 显示解答题答案 question/show-points = true % 显示分值(可选) } \end{latexcode} \begin{tcolorbox}[colback=green!5!white, colframe=green!75!black, title=\textbf{最佳实践:版本切换方法对比}] \textbf{方法一:注释法(推荐新手)} 适合场景:偶尔切换版本,手动编译 \begin{latexcode} % 生成学生版:注释掉下面的代码 % 生成教师版:取消注释 % \examsetup{ % question/show-answer = true, % solution/show-solution = show-stay % } \end{latexcode} \textbf{方法二:条件编译(推荐进阶用户)} 适合场景:频繁切换版本,或需要自动化编译 \begin{latexcode} % 在文档开头定义开关 \newif\ifteacher \teachertrue % 教师版:改为 \teachertrue % \teacherfalse % 学生版:改为 \teacherfalse \ifteacher \examsetup{ question/show-answer = true, solution/show-solution = show-stay } \fi \end{latexcode} \textbf{方法三:命令行参数(推荐批量生成)} 适合场景:自动化脚本,一次编译生成两个版本 创建主文件 \file{exam-main.tex}: \begin{latexcode} \ifdefined\SHOWANSWER \examsetup{ question/show-answer = true, solution/show-solution = show-stay } \fi \end{latexcode} 命令行编译: \begin{shellcode} # 学生版 xelatex exam-main.tex # 教师版 xelatex "\def\SHOWANSWER{1}\input{exam-main.tex}" \end{shellcode} \end{tcolorbox} \subsubsection{解答显示位置} 解答题的答案可以在原位显示,也可以移到试卷最后: \begin{latexcode} \examsetup{ % solution/show-solution = hide, % 隐藏(学生版) % solution/show-solution = show-stay, % 原位显示(教师版) solution/show-solution = show-move % 移到最后 } \end{latexcode} |show-move| 模式适合制作"答案另附"的试卷。 \subsection{页面设置} \subsubsection{纸张大小} \begin{latexcode} \examsetup{ page/size = a4paper, % A4 纸(默认) % page/size = a3paper, % A3 纸 } \end{latexcode} \subsubsection{页边距调整} `\cls{exam-zh}` 会在导言区末尾设置默认页面参数,所以自定义页边距时建议把 |\geometry| 放进 |\AtEndPreamble|: \begin{latexcode}[deletetexcs={\documentclass},morekeywords={\documentclass}] \documentclass{exam-zh} \AtEndPreamble{ \geometry{ top = 2.5cm, bottom = 2cm, left = 2cm, right = 2cm } } \end{latexcode} \subsubsection{分栏设置} 让试卷内容分成两栏: \begin{latexcode} \usepackage{multicol} \begin{document} \title{标题} \maketitle \begin{multicols}{2} % 开始两栏 % 题目内容... \end{multicols} % 结束两栏 \end{document} \end{latexcode} \subsection{图文混排详解} 本节介绍 \cls{exam-zh} 自带的图文排版命令。 \subsubsection{基本用法} \textbf{使用 \cmd{\textfigure}:} \begin{latexcode} \textfigure{ 如图所示,已知三角形 ABC 的三边长分别为 3、4、5, 求三角形的面积。 }{ \includegraphics[width=3cm]{triangle.pdf} } \end{latexcode} 图片位于文字左、右侧时,可以显式启用按图片实宽分配文字宽度: \begin{latexcode} \textfigure[ fig-pos = right-top, auto-text-width = true, min-text-width = .4\linewidth, column-gap = 1em ]{ 如图所示,求阴影部分的面积。 }{ \includegraphics[width=3cm]{figure.pdf} } \end{latexcode} 该功能默认关闭,不会覆盖既有的 |text-width| 行为;图片过宽时,文字部分会回退到 |min-text-width|,而不会继续压窄。 \textbf{说明:} \begin{itemize} \item 第一个大括号是文字内容 \item 第二个大括号是图片内容 \item 更细的控制参数可以在完整文档中查询 |textfigure/*| 键值 \end{itemize} \subsubsection{多张图片} 如果一题对应多张图片,可以使用 |multifigures| 环境: \begin{latexcode} \begin{multifigures}[columns = 2] \item[题 1 图] \includegraphics[width=3cm]{fig1.png} \item[题 2 图] \includegraphics[width=3cm]{fig2.png} \end{multifigures} \end{latexcode} \textbf{适用场景:} \begin{itemize} \item 一段文字配一张图:优先用 |\textfigure| \item 多张题图并排展示:优先用 |multifigures| \item 只想简单插图:直接用 |\includegraphics| \end{itemize} \subsubsection{简单插图} \textbf{居中显示:} \begin{latexcode} \begin{center} \includegraphics[width=0.5\textwidth]{fig.png} \end{center} \end{latexcode} 更多示例见完整文档的“图文排版”章节。 \subsection{行距和间距调整} 本节介绍如何调整试卷的行距和各种间距,以适应不同需求(如节约纸张)。 \subsubsection{全局行距调整} \textbf{方法 1:使用 \textbackslash linespread} \begin{latexcode}[deletetexcs={\documentclass},morekeywords={\documentclass}] \documentclass{exam-zh} \linespread{0.9} % 行距缩小到 90%(默认 1.0) \begin{document} % 试卷内容... \end{document} \end{latexcode} \textbf{方法 2:使用 setspace 宏包(更精细)} \begin{latexcode}[deletetexcs={\documentclass},morekeywords={\documentclass}] \documentclass{exam-zh} \usepackage{setspace} \setstretch{0.85} % 0.85 倍行距 % 或者使用预定义命令 % \singlespacing % 单倍行距 % \onehalfspacing % 1.5 倍行距 % \doublespacing % 双倍行距 \end{latexcode} \textbf{注意:} \begin{itemize} \item 行距不要低于 0.8,否则阅读困难 \item 建议范围:0.85--1.2 \item 行距过小可能导致公式重叠 \end{itemize} \subsubsection{题目间距调整} \textbf{调整题目之间的垂直间距:} \begin{latexcode} \examsetup{ question/top-sep = 0.2em, question/bottom-sep = 0.2em, } \end{latexcode} \textbf{调整小题(problem)间距:} \begin{latexcode} \examsetup{ problem/top-sep = 0.5em, problem/bottom-sep = 0.5em, } \end{latexcode} \subsubsection{选项间距调整} \textbf{调整选择题选项的垂直间距:} \begin{latexcode} \examsetup{ choices/linesep = 0.3em, % 多行选项之间的额外间距 } \end{latexcode} \textbf{调整选项的水平间距:} \begin{latexcode} \examsetup{ choices/column-sep = 1em, % 列与列之间的最小间距 } \end{latexcode} \subsubsection{段落间距调整} \textbf{调整段落间距:} \begin{latexcode}[deletetexcs={\documentclass},morekeywords={\documentclass}] \documentclass{exam-zh} % 减小段落间距 \setlength{\parskip}{0.3em} % 取消首行缩进(可选) \setlength{\parindent}{0pt} \end{latexcode} \subsubsection{紧凑模式示例} \textbf{综合示例:让试卷更紧凑以节约纸张} \begin{latexcode}[deletetexcs={\documentclass},morekeywords={\documentclass}] \documentclass{exam-zh} % === 全局行距 === \usepackage{setspace} \setstretch{0.9} % === 页边距 === \usepackage{geometry} \geometry{ top = 2cm, bottom = 1.5cm, left = 1.8cm, right = 1.8cm } % === 题目和选项间距 === \examsetup{ question/top-sep = 0.2em, question/bottom-sep = 0.2em, choices/linesep = 0.3em, choices/column-sep = 0.8em, } % === 段落间距 === \setlength{\parskip}{0.2em} \begin{document} % 试卷内容... \end{document} \end{latexcode} \textbf{效果:} \begin{itemize} \item 可节约约 20--30\% 的纸张 \item 保持基本可读性 \item 适合练习题或非正式考试 \end{itemize} \textbf{注意事项:} \begin{itemize} \item 正式考试建议保持默认设置 \item 紧凑模式可能影响阅读体验 \item 图片密集的试卷效果不明显 \end{itemize} \subsubsection{局部调整间距} 如果只想在某些地方调整间距: \begin{latexcode} % 增加间距 \vspace{1em} % 减少间距 \vspace{-0.5em} % 强制分页前的弹性间距 \vfill \end{latexcode} 更多排版技巧见完整文档。 \subsection{特殊功能} \subsubsection{方格纸} 需要一串可填写的小方格时,可以使用 |\examsquare|: \begin{latexcode} 考号:\examsquare{10} \end{latexcode} \subsubsection{评分框} 在试卷中添加评分表: \begin{latexcode} \scoringbox \end{latexcode} 详细配置见完整文档。 \subsubsection{密封线} 隐藏密封线: \begin{latexcode} \examsetup{ sealline/show = false } \end{latexcode} 修改密封线文字: \begin{latexcode} \examsetup{ sealline/text = {密封线内不要答题} } \end{latexcode} 更多密封线设置见完整文档。 \subsection{学科专用功能} \subsubsection{语文试卷} \textbf{古诗排版:} 使用 |poem| 环境: \begin{latexcode} \begin{poem} 白日依山尽,\\ 黄河入海流。\\ 欲穷千里目,\\ 更上一层楼。 \end{poem} \end{latexcode} \textbf{阅读材料:} 使用 |material| 环境: \begin{latexcode} \begin{material}[title = {文章标题}, author = {作者}] 文章内容... \end{material} \end{latexcode} \subsubsection{英语试卷} \textbf{作文答题框:} \begin{latexcode} \begin{writingbox}[title = {My Dream}] \vspace*{10em} \end{writingbox} \end{latexcode} \subsection{快速参考} \textbf{常用配置速查:} \begin{latexcode} \examsetup{ % === 答案控制 === question/show-answer = true, % 显示选择题和填空题答案 solution/show-solution = show-stay, % 显示解答题答案 % === 分值显示 === question/show-points = true, % 显示题目分值 % === 选项排列 === choices/columns = 2, % 选项排成2列 % === 页面设置 === sealline/show = false, % 隐藏密封线 } \end{latexcode} 更多高级功能和详细参数,请查阅完整文档 \file{exam-zh-doc.pdf}。