置頂介紹文

這裡主要放一些關於數學和 LaTeX 的文章, 文章內的檔案一律用 xelatex 編譯而成。
如果你想下載我的 tex 檔回去修改編譯, 請將 preamble.7z 解壓縮後和 tex 檔放在同一個資料夾中即可編譯。
部落格內的文章也有部份是網路或書籍中的資料經過統整編輯而成, 如有侵權請告知。
有任何問題也歡迎留言或 E-mail 給我。

2016年7月12日 星期二

用 LaTeX 做數學考卷 (六) : 答案卷與解答篇 -- iffalse 邏輯判斷

答案卷通常有兩個需要, 一是空白讓學生考試用的, 二是有答案讓老師改考卷用的。我們不想在兩個不同的檔案中畫出同樣的表格, 再把其中一個檔案填入答案, 因為這樣一來, 若題目有增刪, 同一個動作要再做兩次。因此, 我們要用 iffalse 控制 latex 是否印出答案來。

先學 iffalse 的語法

......
\newif\ifshowanswer
......

\begin{document}

\showanswertrue

\ifshowanswer
  A: 如果用 showanswertrue 就顯示這行
\else
  B: 如果用 showanswerfalse 或是都不加, 就顯示這行
\fi

\end{document}



\newif\ifshowanswer 設定新的 if 指令

\showanswertrue 在文章開頭加入這行, 就會顯示出A行, 否則顯示B行。

語法很簡單, 不過因為我們需要的是不印出答案時是只有格子或編號的樣式, 並且要不斷重複使用, 所以我們打包它。

......
\usepackage{multicol}
\usepackage{multirow}
\renewcommand{\multirowsetup}{\centering} %合併表格後, 內容水平且垂直置中
\renewcommand\arraystretch{1.2}%調整表格內行高

\newif\ifshowanswer

\newcommand{\ansis}[1]{
\ifshowanswer
\multirow{3}{\linewidth} {\large #1}
\else
\multirow{3}{\linewidth} {\mbox{}}
\fi }
......

\begin{document}

\showanswertrue

\begin{enumerate}

\item 填充題

%\hspace{-1cm}
\begin{tabularx}{\linewidth}{|X|X|X|X|X|}
\hline
\no. \ansis{ABC} &\no. \ansis{$\frac{3}{2}$} &\no. \ansis{$3$} \vspace*{1.5cm} \\
\hline
\no. \ansis{$2\pi$} &\no. \ansis{$\sqrt[3]{5}$} &\mbox{} \ansis{\mbox{}} \vspace*{1.5cm} \\
\hline
\end{tabularx}

\end{enumerate}

\end{document}


\usepackage{multicol}
\usepackage{multirow}
\renewcommand{\multirowsetup}{\centering} %合併表格後, 內容水平且垂直置中
\renewcommand\arraystretch{1.2}%調整表格內行高

這四行調整表格設定, 為了將答案在表格內水平並垂直置中, 我們要用合併表格的方式處理。

\multirow{3}{\linewidth} {\large #1} 合併表格的語法是 \multirow{列數}{表格寬度}{文字}, \large 用來把文字放大。表格中就用 \ansis{答案} 來填入解答。

所以, \showanswertrue 就會顯示答案, \showanswerfalse 就是顯示空格。

範例檔只是要讓各位看到差別所以複製了兩個同樣的內容, 實際使用當然只要寫一次就可以囉。

article_用latex做數學考卷6-2.tex
article_用latex做數學考卷6-2.pdf

沒有留言:

張貼留言