% -*- coding: utf-8 -*- % ---------------------------------------------------------------------------- % Author: Jianrui Lyu <tolvjr@163.com> % Website: https://lvjr.bitbucket.io/jnuexam.html % License: The LaTeX Project Public License 1.3c % ---------------------------------------------------------------------------- \NeedsTeXFormat{LaTeX2e} \ProvidesClass{jnuexam}[2024-07-09 v2024F An exam class for Jinan University] %% 旧版本的 LaTeX ä¸èƒ½è¯†åˆ« 2022-11-01 è¿™ç§æ—¥æœŸæ ¼å¼ %\@ifl@t@r\fmtversion{2022-11-01}{}{ \@ifl@t@r\fmtversion{2022/11/01}{}{ \ClassError{jnuexam}{% Your current TeX distribution is quite old.\MessageBreak We need CTeX 3.0+ or MiKTeX 2023+ or TeXLive 2023+% }{Please update your TeX distribution first.} } %% --------------------------------------------------------------------------- %% 开始忽略代ç ä¸çš„ç©ºç™½ç¬¦å· %% --------------------------------------------------------------------------- \RequirePackage{functional} \IgnoreSpacesOn \InputIfFileExists{jnuexam.cfg}{}{} \DeclareKeys[jnuexam]{ english .code = \PassOptionsToClass{language=english}{randexam} ,chinese .code = \PassOptionsToClass{language=chinese}{randexam} } \DeclareUnknownKeyHandler{\PassOptionsToClass{\CurrentOption}{randexam}} \ProcessKeyOptions \LoadClass[freealign,moremath]{randexam} %% --------------------------------------------------------------------------- %% 试å·ä¸è‹±æ–‡å—符串翻译 %% --------------------------------------------------------------------------- \DeclareExamTranslation{chinese}{ gradetable-Part = 题\quad å· ,gradetable-Score = å¾—\quad 分 } \DeclareExamTranslation{english}{ gradetable-Part = Section~No. ,gradetable-Total = Total~Score ,exampart-Score = Score ,exampart-Evaluator = Evaluator ,exampart-Part = Section } \IfExamLanguageEqT{chinese}{ \SetExamValue{answertable}{ notice = {ç”é¢˜é¡»çŸ¥ï¼šæœ¬é¢˜ç”æ¡ˆå¿…é¡»å†™åœ¨å¦‚ä¸‹è¡¨æ ¼ä¸ï¼Œå¦åˆ™ä¸ç»™åˆ†ï¼Ž} } \renewcommand{\questionpointstext}[1]{(#1~\pointorpoints{#1})} } %% --------------------------------------------------------------------------- %% 䏿–‡æœŸæœ«è¯•å·è¡¨å¤´å®šåˆ¶ %% --------------------------------------------------------------------------- \NewDocumentCommand\examcheckquad{mm}{\ifnumequal{#1}{#2}{\,$\checkmark$\,}{\quad}} \SetExamValue{examtitle}{ niandu = 2016--2017, % æ•™å¦å¹´åº¦ xueqi = 2, % ç¬¬å‡ å¦æœŸ kecheng = æ•°å¦è¯¾ç¨‹, % 课程åç§° zhuanye = , % 专业å¦åˆ† jiaoshi = {å•è瑞}, % 教师姓å shijian = , % 考试时间 bixiu = 1, % 1 为必修,0 为选修 bijuan = 1, % 1 为é—å·ï¼Œ0 ä¸ºå¼€å· shijuan = A, % A 或 B 或 C å· neizhao = 1, % 1 打勾,0 ä¸å‹¾ waizhao = 1, % 1 打勾,0 ä¸å‹¾ } \newcommand{\jdxm@fc@examtitle@table@a}{ \begin{tabular}{l} \underbox{11\ccwd}{\UseExamValue{examtitle}{niandu}}å¦å¹´åº¦ç¬¬ \underbox{5.5\ccwd}{\UseExamValue{examtitle}{xueqi}}妿œŸ \\ 课程å称:\underbox{17.5\ccwd}{ \UseExamValue{examtitle}{kecheng} \tlIfEmptyF{\expWhole{\UseExamValue{examtitle}{zhuanye}}}{ \kern0pt(\UseExamValue{examtitle}{zhuanye}) } } \\ 授课教师:\underparbox{17.5\ccwd}{ \centering\rule{0pt}{3ex}\UseExamValue{examtitle}{jiaoshi} } \\ 考试时间:\underbox{17.5\ccwd}{\UseExamValue{examtitle}{shijian}} \\ \end{tabular} } \newcommand{\jdxm@fc@examtitle@table@b}{ \renewcommand{\arraystretch}{1} \begin{tabular}{l} \textbf{课程类别} \\ å¿…ä¿®~[\examcheckquad{1}{\UseExamValue{examtitle}{bixiu}}]\quad 选修~[\examcheckquad{0}{\UseExamValue{examtitle}{bixiu}}] \\ \hline \textbf{考试方å¼} \\ å¼€å·~[\examcheckquad{0}{\UseExamValue{examtitle}{bijuan}}]\quad é—å·~[\examcheckquad{1}{\UseExamValue{examtitle}{bijuan}}] \\ \hline \textbf{试å·ç±»åˆ«}~(\,A, B, C\,)\\ \relax [\,\UseExamValue{examtitle}{shijuan}\,]\hfill å…±~\zpageref{LastPage}~页 \end{tabular} } \newcommand{\jdxm@fc@examtitle@table@c}{ \begin{tabular}{l} \underspace{10\ccwd}å¦é™¢\underspace{8\ccwd}专业\underspace{7.5\ccwd}ç \kern0pt(\kern0pt{}级\kern0pt) \\[1em] å§“å\underspace{8\ccwd}å¦å·\underspace{10\ccwd}\hfill \bfseries 内招~[\examcheckquad{1}{\UseExamValue{examtitle}{neizhao}}]~~ 外招~[\examcheckquad{1}{\UseExamValue{examtitle}{waizhao}}] %\\[0.8em] \end{tabular} } \DeclareExamTemplate{examtitle}{final-chinese}{ \centerline{ \LARGE\bfseries\IfExamBoolT{answer}{\color{red!80!black}} 暨\quad å—\quad 大\quad å¦\quad 考\quad 试\quad 试\quad å· \IfExamBoolT{answer}{\quad ç”\quad 案} } \vspace{2em} \IfExamBoolT{random}{ \tlIfEqT{\expWhole{\UseExamValue{examtitle}{shijuan}}}{A}{ \SetExamValue{examtitle}{shijuan=B} } \tlIfEqT{\expWhole{\UseExamValue{examtitle}{shijuan}}}{C}{ \SetExamValue{examtitle}{shijuan=D} } } \noindent \begin{tabularx}{\linewidth}{|@{}X@{}|} \hline\renewcommand{\arraystretch}{1.5} {\begin{tabularx}{\linewidth}{@{}>{\bfseries}l@{}|@{}X@{}|@{}l@{}} \begin{tabular}{l}æ•™\\ 师\\ å¡«\\ 写\end{tabular} & \jdxm@fc@examtitle@table@a & \jdxm@fc@examtitle@table@b \end{tabularx}}\\ \hline\renewcommand{\arraystretch}{0.9} {\begin{tabularx}{\linewidth}{@{}>{\bfseries}l@{}|@{}X@{}} \begin{tabular}{l}考\\ 生\\ å¡«\\ 写\end{tabular} & \jdxm@fc@examtitle@table@c \end{tabularx}}\\ \hline \end{tabularx} } %% --------------------------------------------------------------------------- %% 英文期末试å·è¡¨å¤´å®šåˆ¶ %% --------------------------------------------------------------------------- \SetExamValue{examtitle}{ AcademicYear = 2016--2017, % æ•™å¦å¹´åº¦ Semester = 2, % ç¬¬å‡ å¦æœŸ CourseTitle = Math 1906, % 课程åç§° MajorCredit = , % 专业å¦åˆ†ï¼Œå¯ä»¥çœç•¥ Instructor = {Jianrui Lyu}, % 教师姓å Date = , % 考试时间 Compulsory = 1, % 是å¦å¿…修:1 为必修,0 为选修 ClosedBook = 1, % 是å¦é—å·ï¼š1 为é—å·ï¼Œ0 ä¸ºå¼€å· Paper = A, % 试å·ç‰ˆæœ¬ï¼šA 或 B 或 C å· Mainland = 1, % 内招适用:1 打勾,0 ä¸å‹¾ NonMainland = 1, % 外招适用:1 打勾,0 ä¸å‹¾ } \newcommand{\jdxm@fe@examtitle@table@a}{ \begin{tabular}{l} \textbf{Academic~Year}:\underbox{5.5em}{\UseExamValue{examtitle}{AcademicYear}} \enspace \textbf{Semester}:~ 1\textsuperscript{st}~[\examcheckquad{\UseExamValue{examtitle}{Semester}}{1}] \enspace 2\textsuperscript{nd}~[\examcheckquad{\UseExamValue{examtitle}{Semester}}{2}]\\ \textbf{Course~Title}:\underbox{18.7em}{ \UseExamValue{examtitle}{CourseTitle} \tlIfEmptyF{\expWhole{\UseExamValue{examtitle}{MajorCredit}}}{ \kern0pt(\UseExamValue{examtitle}{MajorCredit}) } } \\ \textbf{Instructor's~Name}:\underparbox{16em}{ \centering\rule{0pt}{3ex}\UseExamValue{examtitle}{Instructor} } \\ \textbf{Date~of~the~Examination}:\underbox{13em}{\UseExamValue{examtitle}{Date}} \\ \end{tabular} } \newcommand{\jdxm@fe@examtitle@table@b}{ \fontsize{9pt}{11pt}\selectfont \renewcommand{\arraystretch}{1.2} \begin{tabular}{l} \textbf{Course~Type} \\ Compulsory~[\examcheckquad{1}{\UseExamValue{examtitle}{Compulsory}}]\enspace Elective~[\examcheckquad{0}{\UseExamValue{examtitle}{Compulsory}}] \\ \hline \textbf{Form~of~the~Examination} \\ Open-book~[\examcheckquad{0}{\UseExamValue{examtitle}{ClosedBook}}]\enspace Closed-book~[\examcheckquad{1}{\UseExamValue{examtitle}{ClosedBook}}] \\ \hline \tlIfEqT{\expWhole{\UseExamValue{examtitle}{Paper}}}{A}{ \textbf{Paper}~A~[\,$\checkmark$\,]\enspace \textbf{Paper}~B~[\quad] } \tlIfEqT{\expWhole{\UseExamValue{examtitle}{Paper}}}{B}{ \textbf{Paper}~A~[\quad]\enspace \textbf{Paper}~B~[\,$\checkmark$\,] } \tlIfEqT{\expWhole{\UseExamValue{examtitle}{Paper}}}{C}{ \textbf{Paper}~C~[\,$\checkmark$\,]\enspace \textbf{Paper}~D~[\quad] } \tlIfEqT{\expWhole{\UseExamValue{examtitle}{Paper}}}{D}{ \textbf{Paper}~C~[\quad]\enspace \textbf{Paper}~D~[\,$\checkmark$\,] } \\ Total~Pages~\underbox{4em}{\zpageref{LastPage}} \end{tabular} } \newcommand{\jdxm@fe@examtitle@table@c}{ \begin{tabular}{l} \textbf{School/College}\underspace{11em}~\textbf{Major}\underspace{18.3em}\\ \textbf{Name}\underspace{15.4em}~\textbf{Student~No.}\underspace{15.6em}\\ \textbf{Mainland~Student}~[\examcheckquad{1}{\UseExamValue{examtitle}{Mainland}}]\hspace{4em} \textbf{Non-mainland~Student}~[\examcheckquad{1}{\UseExamValue{examtitle}{NonMainland}}] \end{tabular} } \DeclareExamTemplate{examtitle}{final-english}{ \centerline{ \Large\bfseries\IfExamBoolT{answer}{\color{red!80!black}} The~Examination~Paper~of~Jinan~University \IfExamBoolT{answer}{~(Solutions)} } \vspace{2em} \IfExamBoolT{random}{ \tlIfEqT{\expWhole{\UseExamValue{examtitle}{Paper}}}{A}{ \SetExamValue{examtitle}{Paper=B} } \tlIfEqT{\expWhole{\UseExamValue{examtitle}{Paper}}}{C}{ \SetExamValue{examtitle}{Paper=D} } } \begingroup \setlength\tabcolsep{4pt} \fontsize{10pt}{12pt}\selectfont \noindent \begin{tabularx}{\linewidth}{|@{}X@{}|} \hline\renewcommand{\arraystretch}{1.5} {\begin{tabularx}{\linewidth}{@{}>{\bfseries}wc{5em}@{}|@{}X@{}|@{}l@{}} \fontsize{9pt}{11pt}\selectfont\begin{tabular}{c}For\\Instructor\\Only\end{tabular} & \jdxm@fe@examtitle@table@a & \jdxm@fe@examtitle@table@b \end{tabularx}}\\ \hline\renewcommand{\arraystretch}{1.5} {\begin{tabularx}{\linewidth}{@{}>{\bfseries}wc{5em}@{}|@{}X@{}} \fontsize{9pt}{11pt}\selectfont\begin{tabular}{c}For\\Student\\Only\end{tabular} & \jdxm@fe@examtitle@table@c \end{tabularx}}\\ \hline \end{tabularx} \endgroup } %% --------------------------------------------------------------------------- %% ä¸è‹±æ–‡æœŸæœ«è¯•å·é¢˜åž‹å‘½ä»¤å®šåˆ¶ %% --------------------------------------------------------------------------- \DeclareExamTemplate{exampart}{final-chinese}{ \noindent \textbf{ \textcolor{part~number}{\TheExamCounter{exampart}}ã€\UseExamValue{exampart}{type} } \IfExamValueEmptyF{exampart}{points}{ (\UseExamValue{exampart}{points}) } } \DeclareExamTemplate{exampart}{final-english}{ \noindent \begin{tblr}{width=\linewidth,colspec={llX},hlines,vlines,cell{1}{3}={r=2}{}} \UseExamTranslation{exampart-Score} & \UseExamTranslation{exampart-Evaluator} & \textbf{ \textcolor{part~number}{ \UseExamTranslation{exampart-Part}~\TheExamCounter{exampart} }:~\UseExamValue{exampart}{type} }~ \IfExamValueEmptyF{exampart}{points}{ (\UseExamValue{exampart}{points}) } \\ & & \end{tblr} } %% --------------------------------------------------------------------------- %% ä¸è‹±æ–‡æœŸæœ«è¯•å·é¡µçœ‰é¡µè„šè®¾å®š %% --------------------------------------------------------------------------- \IfExamLanguageEqTF{english}{ \DeclareExamTemplate{headleft}{fancy}{ \parbox{\columnwidth}{ \fontsize{10pt}{15pt}\selectfont The~Examination~Paper~for~\ExamFillUlineText{\UseExamValue{examtitle}{CourseTitle}}~of~JNU\\ \strut Student~Name\hfill,~Student~No.\hfill\strut } } \DeclareExamTemplate{headcenter}{fancy}{} \DeclareExamTemplate{headright}{fancy}{} \DeclareExamTemplate{footleft}{fancy}{} \DeclareExamTemplate{footcenter}{fancy}{\thepage} \DeclareExamTemplate{footright}{fancy}{} }{ \DeclareExamTemplate{headleft}{fancy}{ \hspace{-0.3em}《\UseExamValue{examtitle}{kecheng}》 \kern-0.3em 试å·\,\UseExamValue{examtitle}{shijuan} } \DeclareExamTemplate{headcenter}{fancy}{} \DeclareExamTemplate{headright}{fancy}{ å§“å\hspace{6em}å¦å·\hspace{6em} } \DeclareExamTemplate{footleft}{fancy}{} \DeclareExamTemplate{footcenter}{fancy}{ 第~\thepage~页\quad å…±~\zpageref{LastPage}~页 } \DeclareExamTemplate{footright}{fancy}{} } %% --------------------------------------------------------------------------- %% 装订线命令 \addbindingline %% è‰ç¨¿çº¸å‘½ä»¤ \addscratchpaper %% 这两个命令需è¦ç¼–译两次æ‰èƒ½å¾—到æ£ç¡®ç»“æžœ %% --------------------------------------------------------------------------- \IfExamBoolF{plain}{ \RequirePackage{tikz} \RequirePackage{everypage} } \IfExamLanguageEqTF{english}{ \tlSet\l@jdxm@binding@text@a@tl{the} \tlSet\l@jdxm@binding@text@b@tl{binding} \tlSet\l@jdxm@binding@text@c@tl{line} }{ \tlSet\l@jdxm@binding@text@a@tl{装} \tlSet\l@jdxm@binding@text@b@tl{订} \tlSet\l@jdxm@binding@text@c@tl{线} } \newcommand{\bindinglineleft}{ \path (current~page.north~west) +(25mm,-25mm) coordinate (a1); \path (current~page.south~west) +(25mm,25mm) coordinate (a2); \draw[dashed] (a1) -- node[left=1mm,text~width=1em,inner~sep=0pt]{ \1{\l@jdxm@binding@text@c@tl}\0 \1{\l@jdxm@binding@text@b@tl}\0 \1{\l@jdxm@binding@text@a@tl} } (a2); } \newcommand{\bindinglineright}{ \path (current~page.north~east) +(-25mm,-25mm) coordinate (b1); \path (current~page.south~east) +(-25mm,25mm) coordinate (b2); \draw[dashed] (b1) -- node[right=1mm,text~width=1em,inner~sep=0pt]{ \2{\l@jdxm@binding@text@a@tl}\0 \2{\l@jdxm@binding@text@b@tl}\0 \2{\l@jdxm@binding@text@c@tl} } (b2); } \newcommand{\bindinglineone}{% \def\0{\\[70mm]}\def\1{\rotatebox{90}}\def\2{\rotatebox{-90}} \begin{tikzpicture}[remember~picture,overlay,very~thick] \ifnumodd{\value{page}}{\bindinglineleft}{\bindinglineright} \end{tikzpicture}} \newcommand{\bindinglinetwo}{% \def\0{\\[70mm]}\def\1{\rotatebox{90}}\def\2{\rotatebox{-90}} \begin{tikzpicture}[remember~picture,overlay,very~thick] \bindinglineleft\bindinglineright \end{tikzpicture}} \IfExamBoolTF{twoinone}{ \let\bindingline=\bindinglinetwo }{ \let\bindingline=\bindinglineone } %% 必须将 .store 放在 .initial:n ä¹‹å‰ \DeclareKeys[randexam]{ binding .store = \zhuangdingxian, binding .initial:n = 1, binding .default:n = 2 } \newcommand{\addbindingline}{ \ifcase\zhuangdingxian % 0 \or % 1 \IfExamBoolF{answer}{\bindingline}% \or % 2 \bindingline \fi } \IfExamBoolF{plain}{\AddEverypageHook{\addbindingline}} \IfExamLanguageEqTF{english}{ \tlSet\l@jdxm@scratch@font@one@tl{ \sffamily\fontsize{100pt}{100pt}\selectfont } \tlSet\l@jdxm@scratch@font@two@tl{ \sffamily\fontsize{100pt}{100pt}\selectfont } \tlSet\l@jdxm@scratch@text@a@tl{THE} \tlSet\l@jdxm@scratch@text@b@tl{SCRATCH} \tlSet\l@jdxm@scratch@text@c@tl{PAPER} }{ \tlSet\l@jdxm@scratch@font@one@tl{ \sffamily\fontsize{120pt}{120pt}\selectfont } \tlSet\l@jdxm@scratch@font@two@tl{ \sffamily\fontsize{180pt}{180pt}\selectfont } \tlSet\l@jdxm@scratch@text@a@tl{è‰} \tlSet\l@jdxm@scratch@text@b@tl{稿} \tlSet\l@jdxm@scratch@text@c@tl{纸} } \newcommand{\scratchpaperone}{% \begin{tikzpicture}[remember~picture,overlay,font=\l@jdxm@scratch@font@one@tl] \node[text=lightgray!40,text~width=1000pt,align=center] at (current~page.center) { \l@jdxm@scratch@text@a@tl\\ \l@jdxm@scratch@text@b@tl\\ \l@jdxm@scratch@text@c@tl }; \end{tikzpicture}} \newcommand{\scratchpapertwo}{% \begin{tikzpicture}[remember~picture,overlay,font=\l@jdxm@scratch@font@two@tl] \node[text=lightgray!40] at (current~page.center) { \l@jdxm@scratch@text@a@tl\quad \l@jdxm@scratch@text@b@tl\quad \l@jdxm@scratch@text@c@tl }; \end{tikzpicture}} %% 必须将 .store 放在 .initial:n ä¹‹å‰ \DeclareKeys[randexam]{ scratch .store = \caogaozhi, scratch .initial:n = 0, scratch .default:n = 1 } \newcounter{my@empty@page} % 空白页数 \newcounter{my@scratch@page} % è‰ç¨¿é¡µæ•° \newcounter{my@extra@page} % 空白页数+è‰ç¨¿é¡µæ•° % æ·»åŠ ç©ºç™½é¡µï¼Œä½¿å¾—è‰ç¨¿çº¸å‰é¡µæ•°åœ¨å•é¢å°åˆ·æ—¶ä¸ºå¶æ•°ï¼ŒåŒé¢å°åˆ·æ—¶ä¸º4çš„å€æ•° % æ·»åŠ è‰ç¨¿çº¸ï¼Œé¡µæ•°åœ¨å•é¢å°åˆ·æ—¶ç‰äºŽè®¾ç½®å€¼çš„两å€ï¼ŒåŒé¢å°åˆ·æ—¶ç‰äºŽè®¾ç½®å€¼çš„4å€ \newcommand{\doscratchpaperone}{ \clearpage\pagestyle{empty}\let\addbindingline=\relax \ifnumgreater{\caogaozhi}{0}{ \IfExamBoolTF{oneside}{ \ifnumodd{\value{page}} {\setcounter{my@empty@page}{0}} {\setcounter{my@empty@page}{1}} \setcounter{my@scratch@page}{\caogaozhi*2} }{ \setcounter{my@empty@page}{(\value{page}+2)/4*4+1-\value{page}} \setcounter{my@scratch@page}{\caogaozhi*4} } \my@add@extra@page }{} } % 注æ„在 twocolumn 文档ä¸ï¼Œ\newpage 到下一æ ,\clearpage 到下一页 % å¦å¤–注æ„第一行的 \clearpage ç‰ä¸èƒ½ç§»åŠ¨åˆ° \my@add@extra@page 命令里 % å› ä¸º \clearpage åŽæœ¬é¡µå·²ç»ç»“æŸï¼Œpage 表示的是下一页的页ç \newcommand{\doscratchpapertwo}{ \clearpage\pagestyle{empty}\let\addbindingline=\relax \ifnumgreater{\caogaozhi}{0}{ \IfExamBoolTF{oneside}{ \setcounter{my@empty@page}{0} \setcounter{my@scratch@page}{\caogaozhi} }{ \setcounter{my@empty@page}{(\value{page}/2)-(\value{page}/2)/2*2} \setcounter{my@scratch@page}{\caogaozhi*2} } \my@add@extra@page }{} } \newcommand{\my@add@extra@page}{ \setcounter{my@extra@page}{\value{my@empty@page}+\value{my@scratch@page}} \whileboolexpr{ test{\ifnumgreater{\value{my@empty@page}}{0}} }{ \addtocounter{my@empty@page}{-1} \leavevmode\clearpage } \whileboolexpr{ test{\ifnumgreater{\value{my@scratch@page}}{0}} }{ \addtocounter{my@scratch@page}{-1} \leavevmode\scratchpaper\clearpage } \addtocounter{page}{-\value{my@extra@page}} } \IfExamBoolTF{twoinone}{ \let\scratchpaper=\scratchpapertwo \let\doscratchpaper=\doscratchpapertwo }{ \let\scratchpaper=\scratchpaperone \let\doscratchpaper=\doscratchpaperone } %% æ¤æ—¶ \AtEndDocument{...} ç‰ä»·äºŽ \AddToHook{enddocument}[jnuexam]{...} %% 而且默认会在 \AddToHook{enddocument}[randexam]{...} æ‰€åŠ çš„ä»£ç ä¹‹åŽæ‰§è¡Œ \newcommand{\addscratchpaper}{ \AtEndDocument{\doscratchpaper} } \IfExamBoolF{plain}{\IfExamBoolF{answer}{\addscratchpaper}} %% --------------------------------------------------------------------------- %% è¯•å·æ¨¡æ¿ä¸»é¢˜åˆ‡æ¢ %% --------------------------------------------------------------------------- \DeclareExamTheme{final-chinese}{ \SetExamOption{chinese} \SetExamBoolTrue{evaluator} \SelectExamTranslation{chinese} \SetExamValue{exampart}{number=\Chinese} \SelectExamTemplate{examtitle}{final-chinese} \SelectExamTemplate{exampart}{final-chinese} } \DeclareExamTheme{final-english}{ \geometry{top=30mm,headheight=34pt} \SetExamBoolFalse{sourcehan} \SelectExamTranslation{english} \SetExamValue{exampart}{number=\Roman} \SelectExamTemplate{examtitle}{final-english} \SelectExamTemplate{exampart}{final-english} } \IfExamLanguageEqTF{english}{ \SelectExamTheme{final-english} }{ \SelectExamTheme{final-chinese} } %% --------------------------------------------------------------------------- %% åœæ¢å¿½ç•¥ä»£ç ä¸çš„ç©ºç™½ç¬¦å· %% --------------------------------------------------------------------------- \IgnoreSpacesOff