% -*- coding: utf-8 -*- % !TEX program = xelatex \documentclass[12pt]{beamer} \usepackage[UTF8,noindent]{ctex} \usepackage{arev} \usefonttheme{professionalfonts} \makeatletter \providecommand{\beamer@endinputifotherversion}[1]{} \ifxetex \setCJKsansfont{SimHei} % fix for ctex 2.0 \setCJKmonofont{SimHei} \renewcommand\CJKfamilydefault{\CJKsfdefault}% \else \@ifpackagelater{ctex}{2014/03/01}{}{\AtBeginDocument{\heiti}} %æ— æ•ˆï¼Ÿ \fi \makeatother \renewcommand{\baselinestretch}{1} % ctex 2.4.1 开始为 1,之å‰ä¸º 1.3 \renewcommand{\arraystretch}{1.3} \setlength{\parskip}{7pt plus 1pt minus 1pt} \setbeamersize{text margin left=8mm,text margin right=8mm} \setbeamercolor{normal text}{bg=gray!20} \setbeamertemplate{frametitle}{\strut\insertframetitle\strut\par} \setbeamertemplate{navigation symbols}{} \newcommand{\cdotfill}{\leavevmode\xleaders\hbox to 0.5em{\hss$\cdot$\hss}\hfill\kern0pt\relax} \usepackage{tabularx} \newcommand{\ulinefill}[1]{\xleaders\hbox{\underline{\vphantom{#1}\kern1pt}}\hfill\kern0pt} \newcommand{\fillbox}[1]{\ulinefill{#1}\underline{#1}\ulinefill{#1}} \setbeamertemplate{title page}{% \renewcommand{\arraystretch}{2}% \usebeamerfont{title} \begin{tabularx}{\linewidth}{|X|} \hline 模æ¿å称:\fillbox{\usebeamercolor[fg]{title}\inserttitle} \\ 模æ¿ä½œè€…:\fillbox{\insertauthor} \\ 所在å•ä½ï¼š\fillbox{\insertinstitute} \\ 更新日期:\fillbox{\the\year}å¹´\fillbox{\the\month}月\fillbox{\the\day}æ—¥\\ \hline \end{tabularx}% } \usepackage{ragged2e} \justifying \let\oldraggedright\raggedright \let\raggedright\justifying \usepackage{fancyvrb} \newenvironment{framex}{\begin{frame}[fragile=singleslide,environment=framex]}{\end{frame}} \DefineVerbatimEnvironment{code}{Verbatim}{% formatcom=\color{blue!50!red}% } \begin{document} \title{暨å—大å¦è¯•å· LaTeX 模æ¿} \author{å•\ è\ 瑞} \institute{暨å—大妿•°å¦ç³»} \begin{frame}[plain] \titlepage \end{frame} \section{模æ¿ä»‹ç»} \begin{framex} \frametitle{简å•介ç»} æœ¬æ–‡æ¡£ä»‹ç» \verb!jnuexam! 文档类。这个文档类æä¾›æš¨å—大å¦è€ƒè¯•试å·çš„ LaTeX 模æ¿ã€‚ \par 这个模æ¿å°†æ ¼å¼å’Œå†…容分开,而且å¯ä»¥ä»Žä¸€ä»½ \verb!tex! 文件编译出四份试å·(Aå· / Bå· / Aå·ç”案 / Bå·ç”案),使用方便。 \par 这个模æ¿çš„æœ€æ–°ç‰ˆæœ¬å¯ä»¥åœ¨ä¸‹é¢åœ°å€ä¸‹è½½ï¼š\newline \color{blue}{\href{https://lvjr.bitbucket.io/jnuexam.html?\the\year}{\ttfamily https://lvjr.bitbucket.io/jnuexam.html}} \end{framex} \begin{framex} \frametitle{编译方å¼} è¿™ä¸ªæ–‡æ¡£ç±»è¦æ±‚所有 \verb!tex! 文件都使用 \verb!UTF8! ç¼–ç , 若使用 \verb!GBK! ç¼–ç åˆ™æ— æ³•å¾—åˆ°æ£ç¡®ç»“果。 \par 如果对文件编ç ä¸ç†Ÿæ‚‰ï¼Œå¯ä»¥ç›´æŽ¥å¤åˆ¶ä¾‹å文件,然åŽåœ¨å…¶ä¸ä¿®æ”¹ï¼Œå³å¯æ£å¸¸ç¼–译。 \par è¿™ä¸ªæ–‡æ¡£ç±»åŒæ—¶æ”¯æŒ \verb!XeLaTeX! å’Œ \verb!PDFLaTeX! æ–¹å¼ç¼–è¯‘ã€‚ä¸ºå¾—åˆ°æœ€å¥½çš„ä¸æ–‡æ˜¾ç¤ºæ•ˆæžœï¼Œ 推è用较先进的 \verb!XeLaTeX! 编译。 \end{framex} \section{试å·ç»“æž„} \begin{framex} \frametitle{试å·ç»“æž„} 䏋颿˜¯ \verb!jnuexam! è¯•å·æ–‡æ¡£çš„基本结构: \begin{code} \documentclass[chinese]{jnuexam} % 导言区 \begin{document} % æ£æ–‡åŒº \end{document} \end{code} 试å·åŒ…å«ä¸æ–‡å’Œè‹±æ–‡ä¸¤ç§æ¨¡æ¿ï¼Œå¿…须在文档开头指明。\par 导言区用于设定装订线和è‰ç¨¿çº¸ç‰ç‰é€‰é¡¹ã€‚\par æ£æ–‡åŒºç”¨äºŽå¡«å†™è¯•å·è¡¨å¤´å’Œè¾“入试å·å†…容。 \end{framex} \begin{framex} \frametitle{装订è‰ç¨¿} 在文档的导言区å¯ä»¥è®¾å®šè£…订线和è‰ç¨¿çº¸ã€‚比如: \begin{code} \SetExamOption{ binding = 2, % 装订线 scratch = 1, % è‰ç¨¿çº¸ } \end{code} å…¶ä¸ \verb!binding! å– 0 表示没有装订线, å– 1 è¡¨ç¤ºä»…ç©ºç™½è¯•å·æœ‰ï¼Œå– 2 表示空白试å·å’Œè¯•å·ç”案都有。\par 而 \verb!scratch! çš„å–值表示è‰ç¨¿çº¸æ•°é‡ï¼Œä»¥ A3 大å°åŒé¢å°åˆ·è®¡ç®—。 è‰ç¨¿çº¸ä»…在空白试å·ä¸å‡ºçŽ°ï¼Œè¯•å·ç”案里ä¸ä¼šå¸¦è‰ç¨¿çº¸ã€‚ \end{framex} \begin{framex} \frametitle{è¯•å·æ£æ–‡} \begin{code} \documentclass{jnuexam} \begin{document} ...... \examtitle{...} %生æˆè¯•å·è¡¨å¤´ï¼Œè§ä¸‹é¡µ ...... \exampart{填空题}[题数分值] ...... \exampart{å•选题}[题数分值] ...... \exampart{计算题}[题数分值] ...... \exampart{è¯æ˜Žé¢˜}[题数分值] ...... \examdata{å¯èƒ½ç”¨åˆ°çš„æ•°æ®} %é™„å½•æ•°æ® ...... \end{document} \end{code} \end{framex} \begin{framex} \frametitle{试å·è¡¨å¤´} \begin{code} \examtitle{ niandu = 2017--2018, xueqi = 2, kecheng = 大妿•°å¦, zhuanye = ç†å·¥å››å¦åˆ†, % å¯ä»¥ä¸ºç©ºç™½ jiaoshi = {å¼ ä¸‰ï¼ŒæŽå››}, % 教师姓å shijian = 2018å¹´6月28æ—¥, bixiu = 1, % 1 为必修,0 为选修 bijuan = 1, % 1 为é—å·ï¼Œ0 ä¸ºå¼€å· shijuan = A, % A 或 B 或 C å· neizhao = 1, % 1 打勾,0 ä¸å‹¾ waizhao = 0, % 1 打勾,0 ä¸å‹¾ } \end{code} å…¶ä¸ \verb!zhuanye! å’Œ \verb!shijian! 选项的内容å¯ä»¥ä¸ºç©ºã€‚ \end{framex} \begin{framex} \frametitle{è¯„åˆ†è¡¨æ ¼} 在 \verb!\examtitle! åŽé¢ï¼Œå¯ä»¥ç”¨ \verb!\gradetable! 命令生æˆç©ºç™½çš„è¯„åˆ†è¡¨æ ¼ã€‚æ¯”å¦‚ï¼š \begin{code} \gradetable[total=6,strut=2em] \end{code} å…¶ä¸ \verb!\gradetable! 命令的å„ä¸ªå‚æ•°å«ä¹‰å¦‚下: \begin{description} \item[total] è¡¨ç¤ºè¯•å·æ€»å…±æœ‰å¤šå°‘部分,默认是 \verb!6!。 \item[strut] 表示空白å•å…ƒæ ¼çš„æ”¯æž¶é«˜åº¦ï¼Œé»˜è®¤æ˜¯ \verb!2.5em!。 \end{description} \end{framex} \begin{framex} \frametitle{判æ–题目} \begin{code} \exampart{判æ–题}[题数分值] \begin{question} 第一é“判æ–题æè¿°ã€‚\tickout{t} \end{question} \begin{question} 第二é“判æ–题æè¿°ã€‚\tickout{f} \end{question} \end{code} å…¶ä¸ \verb!\tickout{t}! å’Œ \verb!\tickout{f}! 分别表示打勾(\textcolor{blue}{$\checkmark$})和打å‰ï¼ˆ\textcolor{blue}{\large$\times$})。 还å¯ç”¨å¤§å†™çš„ \verb!\tickout{T}! å’Œ \verb!\tickout{F}!, 分别表示输出 \textcolor{blue}{\textsf{T}} å’Œ \textcolor{blue}{\textsf{F}}。 \par ç”æ¡ˆå¿…须放在 \verb!\tickout! å‘½ä»¤é‡Œï¼›è¿™æ ·æ‰èƒ½åœ¨ç”Ÿæˆç©ºç™½è¯•å·æ—¶éšè—它。 \end{framex} \begin{framex} \frametitle{填空题目} \begin{code} \exampart{填空题}[题数分值] \begin{question} 第一é“填空题æè¿°\fillout{ç”æ¡ˆ}。 \end{question} \begin{question} 第二é“填空题æè¿°\fillout{ç”æ¡ˆ}。 \end{question} \end{code} \verb!\fillout! å‘½ä»¤å°†ç”¨ä¸‹åˆ’çº¿å¡«æ»¡æ•´è¡Œã€‚å¦æœ‰ä¸ª \verb!\fillin! 命令,åªç•™ä¸‹æœ€å°å®½åº¦çš„下划线。 \par ç”æ¡ˆå¿…须放在 \verb!\fillout! 或 \verb!\fillin! 命令里é¢ï¼›è¿™æ ·æ‰èƒ½åœ¨ç”Ÿæˆç©ºç™½è¯•å·æ—¶éšè—它。 \end{framex} \begin{framex} \frametitle{选择题目} \begin{code} \exampart{å•选题}[题数分值] \begin{question} 第一é“å•选题æè¿°\pickout{ç”æ¡ˆ}。 \end{question} \begin{question} 第二é“å•选题æè¿°\pickout{ç”æ¡ˆ}。 \end{question} \end{code} \verb!\pickout! å‘½ä»¤å°†æŠŠé€‰æ‹©åœ†æ‹¬å·æ”¾åœ¨æœ¬è¡Œæœ€å³è¾¹ã€‚å¦å¤–有个 \verb!\pickin! å‘½ä»¤ï¼Œå°†é€‰æ‹©åœ†æ‹¬å·æ”¾åœ¨å½“å‰ä½ç½®ã€‚ \par ç”æ¡ˆå¿…须放在 \verb!\pickout! 或 \verb!\pickin! 命令里é¢ï¼›è¿™æ ·æ‰èƒ½åœ¨ç”Ÿæˆç©ºç™½è¯•å·æ—¶éšè—它。 \end{framex} \begin{framex} \frametitle{选项排版} 选择题的四个选项å¯ä»¥ç”¨ \verb!abcd! çŽ¯å¢ƒæ¥æŽ’ç‰ˆã€‚æ¯”å¦‚ï¼š \begin{code} \begin{abcd} \item 第一个选项 \item 第二个选项 \item 第三个选项 \item 第四个选项 \end{abcd} \end{code} æ¤æ—¶ \verb!abcd! çŽ¯å¢ƒå°†æ ¹æ®å„选项长度自动将四个选项分为一行ã€ä¸¤è¡Œæˆ–四行排版,éžå¸¸æ–¹ä¾¿ã€‚ \end{framex} \begin{framex} \frametitle{ç”é¢˜è¡¨æ ¼} 在填空题和选择题å‰é¢ï¼Œè¿˜å¯ä»¥ç”¨ \verb!\answertable! 命令生æˆç©ºç™½ç”题æ 。比如: \begin{code} \answertable[total=6,column=3,strut=3em] \end{code} å…¶ä¸ \verb!\answertable! 命令的å„ä¸ªå‚æ•°å«ä¹‰å¦‚下: \begin{description} \item[total] 表示总共有多少个题目。 \item[column] 表示æ¯è¡ŒæŽ’ç‰ˆå‡ ä¸ªé¢˜ç›®ã€‚ \item[strut] 表示空白å•å…ƒæ ¼çš„é«˜åº¦ï¼Œé»˜è®¤æ˜¯ \verb!1em!。 \item[notice] 表示ç”é¢˜è¡¨æ ¼å‰é¢æç¤ºæ–‡æœ¬çš„内容。 \end{description} \end{framex} \begin{framex} \frametitle{计算题目} \begin{code} \exampart{计算题}[题数分值] \begin{question} 第一é“计算题æè¿°ã€‚ \end{question} \begin{solution} 第一é“è®¡ç®—é¢˜ç”æ¡ˆã€‚ \end{solution} \begin{question} 第二é“计算题æè¿°ã€‚ \end{question} \begin{solution} 第二é“è®¡ç®—é¢˜ç”æ¡ˆã€‚ \end{solution} \end{code} \end{framex} \begin{framex} \frametitle{è¯æ˜Žé¢˜ç›®} \begin{code} \exampart{è¯æ˜Žé¢˜}[题数分值] \begin{question} 第一é“è¯æ˜Žé¢˜æè¿°ã€‚ \end{question} \begin{solution} 第一é“è¯æ˜Žé¢˜ç”案。 \end{solution} \begin{question} 第二é“è¯æ˜Žé¢˜æè¿°ã€‚ \end{question} \begin{solution} 第二é“è¯æ˜Žé¢˜ç”案。 \end{solution} \end{code} \end{framex} \begin{framex} \frametitle{è§£ç”åç§°} 通过é‡å®šä¹‰å…³é”®è¯çš„翻译,å¯ä»¥æ”¹å˜ \verb!solution! 环境的显示å称。 比如下é¢ä¾‹åå°†â€œè§£â€æ”¹ä¸ºâ€œè¯â€ï¼š \begin{code} \SetExamTranslation{solution-Solution = è¯} \end{code} \end{framex} \begin{framex} \frametitle{评分命令} è®¡ç®—é¢˜å’Œè¯æ˜Žé¢˜ç‰ä¸»è§‚é¢˜çš„æŽ’ç‰ˆæ–¹æ³•æ˜¯å®Œå…¨ä¸€æ ·çš„ã€‚åœ¨ç¼–å†™è¿™äº›ä¸»è§‚é¢˜çš„è§£ç”æ—¶ï¼Œ å¯ä»¥ç”¨ \verb!\points! å‘½ä»¤ç»™å‡ºå„æ¥éª¤å¾—分。比如: \begin{code} \begin{solution} $1+1=2$ \points{4} $2+2=4$ \points{8} \end{solution} \end{code} 评分命令 \verb!\points! 也å¯åœ¨ \verb!align*! ç‰æ•°å¦çŽ¯å¢ƒä¸ä½¿ç”¨ï¼Œæ¤æ—¶è¯„分显示在公å¼ç¼–å·ä½ç½®ã€‚ \end{framex} \begin{framex} \frametitle{对é½å‘½ä»¤} æ¤æ–‡æ¡£ç±»æä¾›å‡ 个对é½å‘½ä»¤ï¼Œç”¨äºŽåœ¨ä¸åŒè¡Œä¹‹é—´å¯¹é½ã€‚比如 \vskip1em\hrule 我们有$(a+b)^2 = (a+b)(a+b)$ \par \leavevmode\phantom{我们有$(a+b)^2$}${}= a^2 + 2ab + b^2$ \hfill$\cdots\cdots$ 2分 \vskip0.6em\hrule\vskip1em \begin{code} 我们有$(a+b)^2 \? = (a+b)(a+b)$ \\ \+$= a^2+2ab+b^2$ \points{2} \end{code} 第一个公å¼å†…部的 \verb!\?! ä¿å˜å½“剿°´å¹³ä½ç½®ï¼Œ 而第二个公å¼å‰é¢çš„ \verb!\+! 表示跳到之å‰ä¿å˜çš„ä½ç½®ã€‚ \par 这两个对é½å‘½ä»¤ \verb!\?! å’Œ \verb!\+! 需è¦ç¼–译两次æ‰èƒ½ç”Ÿæ•ˆã€‚ \end{framex} \begin{framex} \frametitle{对é½å‘½ä»¤} æ¤æ–‡æ¡£ç±»æä¾›å‡ 个对é½å‘½ä»¤ï¼Œç”¨äºŽåœ¨ä¸åŒè¡Œçš„对é½ã€‚比如 \vskip1em\hrule 我们有$(a+b)^2 = (a+b)(a+b)$ \par \leavevmode\phantom{我们\,}${}= a^2 + 2ab + b^2$ \hfill$\cdots\cdots$ 2分 \vskip0.6em\hrule\vskip1em \begin{code} 我们有 \? $(a+b)^2 = (a+b)(a+b)$ \\ \< $= a^2+2ab+b^2$ \points{2} \end{code} 第一行公å¼å‰é¢çš„ \verb!\?! ä¿å˜å½“剿°´å¹³ä½ç½®ï¼Œ 而第二行公å¼å‰é¢çš„ \verb!\<! 表示跳到之å‰ä¿å˜ä½ç½®çš„左侧(左移一个ç‰å·çš„宽度)。 \par 这两个对é½å‘½ä»¤ \verb!\?! å’Œ \verb!\<! 需è¦ç¼–译两次æ‰èƒ½ç”Ÿæ•ˆã€‚ \end{framex} \begin{framex} \frametitle{其它题型} 除了上述四ç§é¢˜åž‹ä¹‹å¤–,其它题型å¯ä»¥ç”¨ä¸‹é¢æ–¹å¼ç¼–写: \begin{code} \exampart{æŸé¢˜åž‹}[题数分值] \begin{question} 第一题æè¿°ã€‚\answer{ç¬¬ä¸€é¢˜ç”æ¡ˆ} \end{question} \begin{question} 第二题æè¿°ã€‚\answer{ç¬¬äºŒé¢˜ç”æ¡ˆ} \end{question} \end{code} å…¶ä¸é¢˜ç›®ç”案必须放在 \verb!\answer! 命令里é¢ï¼›è¿™æ ·æ‰èƒ½åœ¨ç”Ÿæˆç©ºç™½è¯•å·æ—¶éšè—它。 \end{framex} \begin{framex} \frametitle{附录数æ®} åœ¨è¯•å·æœ€åŽï¼Œå¯ä»¥ç”¨ä¸‹é¢å‘½ä»¤å¢žåŠ é™„å½•æ•°æ®éƒ¨åˆ†ï¼š \begin{code} \examdata{å¯èƒ½ç”¨åˆ°çš„æ•°æ®} %é™„å½•æ•°æ® ...... \end{code} 附录数æ®å¿…须放在 \verb!\examdata! 命令åŽé¢ï¼›å¦åˆ™åœ¨ä»ŽAå·ç”ŸæˆBå·æ—¶ä¼šå‡ºé—®é¢˜ã€‚ \end{framex} \section{模æ¿é€‰é¡¹} \begin{framex} \frametitle{空白试å·} å‡è®¾ \verb!exam-a-answer.tex! 是å«ç”案的试å·ã€‚新建一个包å«ä»¥ä¸‹å†…容的 \verb!exam-a-blank.tex! 文档, 编译åŽå°†å¾—到ä¸å«ç”案的空白试å·ã€‚ \begin{code} \PassOptionsToClass{noanswer}{jnuexam} \input{exam-a-answer} \end{code} 也就是说,给 \verb!jnuexam! æ–‡æ¡£ç±»åŠ ä¸Š \verb!noanswer! 选项åŽï¼Œç¼–译时将会自动éšè—试å·ç”案。 \end{framex} \begin{framex} \frametitle{ä¹±åºå‡ºé¢˜} å‡è®¾ \verb!exam-a-answer.tex! 是å«ç”案的Aå·ã€‚新建一个包å«ä»¥ä¸‹å†…容的 \verb!exam-b-answer.tex! 文档, 编译åŽå°†å¾—到乱åºå‡ºé¢˜çš„Bå·ã€‚ \begin{code} \PassOptionsToClass{random}{jnuexam} \input{exam-a-answer} \end{code} 也就是说,给 \verb!jnuexam! æ–‡æ¡£ç±»åŠ ä¸Š \verb!random! 选项åŽï¼Œç¼–è¯‘æ—¶å°†ä¼šä¹±åºæŽ’åˆ—å„题型的å°é¢˜ã€‚ \end{framex} \begin{framex} \frametitle{竖直空白} 在试å·çš„å„个å°é¢˜åŽé¢ï¼Œå¯ä»¥ç•™ä¸‹ä¸€äº›ç«–直空白。本文档类支æŒä¸‹åˆ—这些竖直空白命令:\par \renewcommand{\arraystretch}{1.3}% \begin{tabularx}{\linewidth}{l<{\qquad}X} \hline \texttt{\string\smallskip} & ç«–ç›´å°ç©ºç™½ \\ \hline \texttt{\string\medskip} & ç«–ç›´ä¸ç©ºç™½ \\ \hline \texttt{\string\bigskip} & 竖直大空白 \\ \hline \texttt{\string\vfill} & ç«–ç›´å¡«å…… \\ \hline \end{tabularx}\par 当然,竖直空白命令å¯ä»¥è¿žç»ä½¿ç”¨å¤šä¸ªï¼Œä»¥å¾—到所需的空白。 \vfill 在试å·ä¸å¯ä»¥ä½¿ç”¨åˆ†é¡µå‘½ä»¤ \verb!\newpage!, \alert{ä¸è¦}使用其他分页命令,比如 \verb!\clearpage! ç‰ï¼Œ 以å…导致 B å·æ ¼å¼é”™ä¹±ã€‚ \end{framex} \begin{framex} \frametitle{åŒæ 试å·} å‡è®¾ \verb!exam-a-blank.tex! 是原æ¥è¯•å·çš„ TeX 文件。新建一个包å«ä»¥ä¸‹å†…容的文档, 编译åŽå°†å¾—到的 A3 çº¸å¼ çš„è¯•å·ã€‚ \begin{code} \PassOptionsToClass{a3paper}{jnuexam} \input{exam-a-blank} \end{code} 也就是说,给 \verb!jnuexam! æ–‡æ¡£ç±»åŠ ä¸Š \verb!a3paper! 选项åŽï¼Œç¼–译时将会按照 A3 çº¸å¼ æŽ’ç‰ˆå‡ºåŒæ 试å·ã€‚ \end{framex} \begin{framex} \frametitle{åŒæ 试å·} å‡è®¾ \verb!exam-a-blank.pdf! 是原æ¥è¯•å·çš„ PDF 文件。新建一个包å«ä»¥ä¸‹å†…容的文档, 编译åŽå°†å¾—到的 A3 çº¸å¼ çš„è¯•å·ã€‚ \begin{code} \documentclass[a3input]{jnuexam} \begin{document} \includepdf[pages=-,nup=2x1]{exam-a-blank} \end{document} \end{code} %\includepdf[pages=-,nup=2x1,offset=0 0,delta=0 0]{exam-a-blank} è¿™ç§ç”¨æ³•直接读入 A4 试å·çš„ PDF 文件,生æˆåŒæ çš„ A3 试å·ï¼Œé€‚åˆæ²¡æœ‰ TeX 文件时使用。 \end{framex} \end{document}