600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 如何用 LaTeX 排版高中数学试卷(转)_Simplelife_新浪博客

如何用 LaTeX 排版高中数学试卷(转)_Simplelife_新浪博客

时间:2023-02-04 03:20:07

相关推荐

如何用 LaTeX 排版高中数学试卷(转)_Simplelife_新浪博客

原文:/forum.php?mod=viewthread&tid=2512217

(1)关于试卷纸张选择及页面设置 关于纸张的写上

\documentclass[10pt,a4paper]{ctexart}

上面的 10pt 是全篇正文的字号大小,只有 10, 11, 12 三种选择,个人建议使用 10。

好了,下面看页边距,一般设为 2cm, 只要写上

\usepackage[margin=2cm]{geometry}

这样,上下左右的边距都是 2cm,也可以分开指定right, top, ... ,也可以在此处

用 paperwidth 和 paperheight 指定纸张大小等。 (2) 试卷标题的设计

\begin{document}

\title{某某中学高三数学测试题}

\author{总分:150分and 时间120分钟}

\date{命题人: 某某某}

\maketitle (3) 大题、小题题号的排版

高中数学试卷一般有三道大题、21道左右的小题。我开始排版大题的时候,就自己写了一个

计数器。后来发现,模式都是固定的,没有变化,可以直接写一、二、三就行了。

\begin{enumerate}

\item[一、] 选择题请把......

\item 等下写选择题小题内容

\item 等下写选择题小题内容

\item 等下写选择题小题内容

\item 等下写选择题小题内容

\item 等下写选择题小题内容

\item 等下写选择题小题内容

\item 等下写选择题小题内容

\item 等下写选择题小题内容

\item 等下写选择题小题内容

\item 等下写选择题小题内容

\item[二、] 填空题......

\item 等下写填空题小题内容

\item 等下写填空题小题内容

\item 等下写填空题小题内容

\item 等下写填空题小题内容

\item 等下写填空题小题内容

\item[三、] 解答题......

\item 等下写解答题小题内容

\item 等下写解答题小题内容

\item 等下写解答题小题内容

\item 等下写解答题小题内容

\item 等下写解答题小题内容

\item 等下写解答题小题内容

\end{enumerate}

\end{document}

(4) 选择题括号的排版

我们来想一想,这个括号应该怎样排版呢?

首先想到的是直接用括号( )。当然,直接这样写是不行的。当我们按照我前面说的

设计下来的话,第一道小题的 1. 后面可以排下 45 个中文汉字。 如果你的第一题的内容的最后一行

恰好有 43 个汉字的话,那么很不幸的是你将看到你的一半括号在上行,另一半在下行,这个不是你

希望的,怎么办呢?很简单,改为

\mbox{( )}

现在,你的一对儿括号肯定是出现在同一行了。但是,问题还没解决,你如果按照我写的排版

的话,你一定看到的是两个括号挨着的,就像 ( ) 一样。因为 LaTeX 是吃掉多余空格的。怎么办?

你可能会想到在中间加上 (~~~~)或者 (\qquad\qquad)等等。我开始也是这么想的,后来

发现这个办法不能使括号真正对齐(想想为什么?具体原因等我有时间讲到 TeX 排版原理的时候,

可以来解释)。我的解决办法是

\mbox{(\hspace{1cm})}

我们一般希望在选择题的括号前面加上前导符,所以修改为

\dotfill\mbox{(\hspace{1cm})}

这样一般不会出问题了,你也会感觉比较漂亮,括号基本出现在右侧。但是,如果选择题的最后

一行恰好是 43-45 个汉字的话,你将看不到前导符,而且括号也跑到下一行的行首去了。所以,我们将

禁止在前导符的前面断行,修改为

\nolinebreak\dotfill\mbox{(\hspace{1cm})}

这样基本美观了,唯一的一个遗憾是,如果最后一行有42个汉字的话,你将看不到前导符,就是

文字后面紧跟括号。如果你不想出现这样的话,可以修改为

\nolinebreak\dotfill\mbox{\raisebox{-1.8pt}{$\cdots$}(\hspace{1cm})}

最后,我们将它设定为一个自定义命令,放到 \begin{document} 之前

\newcommand{\xz}{\nolinebreak\dotfill\mbox{\raisebox{-1.8pt}

{$\cdots$}(\hspace{1cm})}}

这样,以后你只需要在选择题的题干写完后加上 \xz, 就可以看到漂亮的前导符和括号了。如

果你还要修改的话,也可以改为

\newcommand{\xz}[1][1]{\nolinebreak\dotfill\mbox{\raisebox{-1.8pt}

{$\cdots$}(\hspace{#1 cm})}\\ }

我为什么加两个 [1] ? 我在最后加了一个换行 \\, 千万注意后面的空格不能省略,想想,

为什么? 这两个问题留给大家自己思考吧。

(5)选择题选项的排版

这个可能是整个试卷排版最难的一个地方了。敲的太累了,我就不写编写过程了。写下代码,大家

慢慢看吧。

首先在 \begin{document} 之前加上

\usepackage{ifthen}

\newlength{\la}

\newlength{\lb}

\newlength{\lc}

\newlength{\ld}

\newlength{\lhalf}

\newlength{\lquarter}

\newlength{\lmax}

\newcommand{\xx}[4]{\\[.5pt]%

\settowidth{\la}{A.~#1~~~}

\settowidth{\lb}{B.~#2~~~}

\settowidth{\lc}{C.~#3~~~}

\settowidth{\ld}{D.~#4~~~}

\ifthenelse{\lengthtest{\la > \lb}}{\setlength{\lmax}{\la}}{\setlength{\lmax}{\lb}}

\ifthenelse{\lengthtest{\lmax < \lc}}{\setlength{\lmax}{\lc}}{}

\ifthenelse{\lengthtest{\lmax < \ld}}{\setlength{\lmax}{\ld}}{}

\setlength{\lhalf}{0.5\linewidth}

\setlength{\lquarter}{0.25\linewidth}

\ifthenelse{\lengthtest{\lmax > \lhalf}}{\noindent{}A.~#1 \\ B.~#2 \\ C.~#3 \\ D.~#4 }{

\ifthenelse{\lengthtest{\lmax > \lquarter}}{\noindent\makebox[\lhalf][l]{A.~#1~~~}%

\makebox[\lhalf][l]{B.~#2~~~}%

\makebox[\lhalf][l]{C.~#3~~~}%

\makebox[\lhalf][l]{D.~#4~~~}}%

{\noindent\makebox[\lquarter][l]{A.~#1~~~}%

\makebox[\lquarter][l]{B.~#2~~~}%

\makebox[\lquarter][l]{C.~#3~~~}%

\makebox[\lquarter][l]{D.~#4~~~}}}}

当你排版选择题的时候,你只需输入

\xx{选项 A 的内容}{选项 B 的内容}{选项 C 的内容}{选项 D 的内容}

上面代码的意思是取四个选项的最长宽度,加上 “A.” 以及左右留空,作为选项的最长宽度。将

它和行宽的 1/2 以及 1/4 作比较, 来决定把 4 个选项排成一行、两行或者四行及以上。 (6) 填空题横线的排版

这个比较简单,直接在 \begin{document} 之前加上

\newcommand{\tk}[1][2.5]{\,\underline{\mbox{\hspace{#1 cm}}}\,}

当编写到填空题的时候,加上 \tk 即可,可以加在一句话中间,也可以加到一句话末尾,当在

末尾的时候,可以在后面加上句号。

横线的默认长度是 2.5cm, 可以使用

\tk[3]

将横线改为 3cm。 (7) 插图的排版 这个说来就话长了,相关教程很多。象 Metapost, tikz, pstrics, asymptote,...

我都用过,不过,还是用 tikz 比较多,对付高中数学作图来说基本够用了。等有空的时候,写几个

用 tikz 作函数图像, 立体几何,算法流程图的例子吧。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。